8 years agoWork around the FIXME in the previous commit
Peter Rabbitson [Sat, 16 Jul 2016 11:29:40 +0000]
Work around the FIXME in the previous commit

Based on @haarg's excellent detective work: https://is.gd/perl_mro_taint_wtf

8 years agoGet rid of Package::Stash \o/
Peter Rabbitson [Thu, 14 Jul 2016 13:20:03 +0000]
Get rid of Package::Stash \o/

Internal tooling advanced sufficiently without planning for any of that:
a good indicator things are on the right track!

Read under -w

8 years agoAdd a get_subname to _Util
Peter Rabbitson [Thu, 14 Jul 2016 12:50:02 +0000]
Add a get_subname to _Util

8 years agoInsulate DBIC::Carp from rogue can() overrides
Peter Rabbitson [Wed, 13 Jul 2016 16:28:23 +0000]
Insulate DBIC::Carp from rogue can() overrides

8 years agoAdd more forceful (STDERR-direct) warning emitter
Peter Rabbitson [Thu, 14 Jul 2016 11:03:26 +0000]
Add more forceful (STDERR-direct) warning emitter

Switch some of the most critical announements to it

8 years agoFix POISON_ENV warning missed in both 5c33c8be and 44c1a75d
Peter Rabbitson [Thu, 30 Jun 2016 19:55:55 +0000]
Fix POISON_ENV warning missed in both 5c33c8be and 44c1a75d

8 years agoSilence inactionable warning (mainly on travis)
Peter Rabbitson [Wed, 13 Jul 2016 15:51:00 +0000]
Silence inactionable warning (mainly on travis)

8 years ago(travis) Switch to our own copy of the Firebird ODBC driver
Peter Rabbitson [Wed, 13 Jul 2016 15:57:18 +0000]
(travis) Switch to our own copy of the Firebird ODBC driver

Sourceforge is just way too unstable

8 years ago(travis) Properly diagnose potential OOM in 50_after_success.bash
Peter Rabbitson [Sun, 3 Jul 2016 08:43:20 +0000]
(travis) Properly diagnose potential OOM in 50_after_success.bash

Idea originally introduced in ac4e80df

8 years ago(travis) Add poisoning to the base non-clean build run
Peter Rabbitson [Wed, 29 Jun 2016 17:29:27 +0000]
(travis) Add poisoning to the base non-clean build run

8 years agoFill in missing documentation in ::Schema / ::ResultSource
Peter Rabbitson [Fri, 24 Jun 2016 16:31:01 +0000]
Fill in missing documentation in ::Schema / ::ResultSource

8 years agoAudit all local() calls within lib/ and t/lib
Peter Rabbitson [Fri, 1 Jul 2016 10:22:48 +0000]
Audit all local() calls within lib/ and t/lib

Correct some of them to fire less frequently (local is *expensive*)

8 years agoExpand describe_class_methods testing yet again
Peter Rabbitson [Mon, 27 Jun 2016 08:29:27 +0000]
Expand describe_class_methods testing yet again

This should be the end of adjustments, so many corner cases...

8 years agoUse a single cache struct for entirety of describe_class_methods
Peter Rabbitson [Wed, 29 Jun 2016 22:49:39 +0000]
Use a single cache struct for entirety of describe_class_methods

This will allow influencing the cache from outside like shown below, (but
please, DO NOT DO SO), and in turn will make sanity checks on 5.8 somewhat
acceptable *by default* \o/

  $...::__describe_class_query_cache->{"!internal!"} = {};

8 years agoAdd hash-based ISA lookup to RV of describe_class_methods
Peter Rabbitson [Wed, 29 Jun 2016 22:40:15 +0000]
Add hash-based ISA lookup to RV of describe_class_methods

8 years agoExpand signature of describe_class_methods for forward compat
Peter Rabbitson [Wed, 29 Jun 2016 13:32:00 +0000]
Expand signature of describe_class_methods for forward compat

It is likely extra options/attrs will need to be passed down the road -
hence do not lock ourselves into positional args

8 years agoRaise the global lock timeouts
Peter Rabbitson [Sat, 4 Jun 2016 09:23:17 +0000]
Raise the global lock timeouts

15 minutes on my laptop on battery with all assertions no longer cuts it :(

8 years agoAdd true/false non-singleton boolean objects
Peter Rabbitson [Fri, 3 Jun 2016 14:12:32 +0000]
Add true/false non-singleton boolean objects

This will be needed for the sanitychecker on OLD_MRO

8 years agoExtra test of UNIVERSAL handling in describe_class_methods
Peter Rabbitson [Thu, 23 Jun 2016 12:18:06 +0000]
Extra test of UNIVERSAL handling in describe_class_methods

While parents of UNIVERSAL *do* "inherit" some of UNIVERSAL's methods, making
this circularity apparent is out of scope for this tool. Doing otherwise will
complicate consumer code for no apparent benefit. Thus add an explicit test
that "this is how it is".

8 years agoRevert TempExtlib ( b46b85376 ) - new Sub::Quote shipped
Peter Rabbitson [Tue, 21 Jun 2016 14:34:14 +0000]
Revert TempExtlib ( b46b85376 ) - new Sub::Quote shipped

8 years agoBring out the big-paranoia-harness - make describe_env infallible
Peter Rabbitson [Tue, 21 Jun 2016 14:24:29 +0000]
Bring out the big-paranoia-harness - make describe_env infallible

As desmonstrated by the previous commit: testing is no substitute for proper
defensive programs. Stop-gap until this is spun off on its own

8 years agoFix describe_env failure on nonexistent @INC on Win32
Peter Rabbitson [Tue, 21 Jun 2016 06:41:10 +0000]
Fix describe_env failure on nonexistent @INC on Win32

Despite this code undergoing wide CPAN testing last year, and having zero
functional changes since, there were *still* bugs lurking inside :/

8 years agoMinor cosmetic fix of describe_environment
Peter Rabbitson [Tue, 21 Jun 2016 09:07:45 +0000]
Minor cosmetic fix of describe_environment

8 years agoFix false-positives in the no-external-evals assert ( ddcc02d14 )
Peter Rabbitson [Tue, 21 Jun 2016 12:46:25 +0000]
Fix false-positives in the no-external-evals assert ( ddcc02d14 )

If there is no eval frame above the exception action - there is nothing to
report to the user

8 years agoAdd 'PERL_VERSION' foldable constant, switch lib-ish things over
Peter Rabbitson [Mon, 20 Jun 2016 20:58:32 +0000]
Add 'PERL_VERSION' foldable constant, switch lib-ish things over

No point changing the many $] references in .t's themselves

8 years agoMinor improvements to the maint helper scripts
Peter Rabbitson [Mon, 20 Jun 2016 17:00:09 +0000]
Minor improvements to the maint helper scripts

8 years agoRestore 'timezone' field in column info ( extends eef9b484 )
Dagfinn Ilmari Mannsåker [Sat, 18 Jun 2016 11:37:10 +0000]
Restore 'timezone' field in column info ( extends eef9b484 )

The keys in the column info hash are semi-public API, and 'timezone' in
particular is used by DBIx::Class::InflateColumn::DateTime::WithTimeZone.

Keep documenting time_zone as the main name, but note that it's stored
under both keys.

8 years agoProper changelog after I bothced it in e400c82d
Peter Rabbitson [Mon, 20 Jun 2016 07:21:50 +0000]
Proper changelog after I bothced it in e400c82d

8 years agoEnsure describe_environment does not break its output in half
Peter Rabbitson [Sun, 19 Jun 2016 05:48:27 +0000]
Ensure describe_environment does not break its output in half

8 years agoSlight POD correction
Peter Rabbitson [Sat, 18 Jun 2016 09:51:10 +0000]
Slight POD correction

8 years agoAdd changelog entry on 90c9dd1d, 757891ed and 89203568
Peter Rabbitson [Wed, 4 Nov 2015 03:18:01 +0000]
Add changelog entry on 90c9dd1d, 757891ed and 89203568

Sample (not ideal - could be *SO* much better ) timings from included bencher:

Before (0.0828xx):
62951 byte-long query generated (via as_query()) in: 4.975237 seconds (take 1)
62951 byte-long query generated (via as_query()) in: 4.995723 seconds (take 2)
62951 byte-long query generated (via as_query()) in: 4.964793 seconds (take 3)
62951 byte-long query generated (via as_query()) in: 4.96168 seconds (take 4)
62951 byte-long query generated (via as_query()) in: 4.991396 seconds (take 5)
62951 byte-long query generated (via as_query()) in: 4.988478 seconds (take 6)
62951 byte-long query generated (via as_query()) in: 4.977612 seconds (take 7)
62951 byte-long query generated (via as_query()) in: 4.98648 seconds (take 8)
62951 byte-long query generated (via as_query()) in: 4.999984 seconds (take 9)

After:
62951 byte-long query generated (via as_query()) in: 0.429634 seconds (take 1)
62951 byte-long query generated (via as_query()) in: 0.416169 seconds (take 2)
62951 byte-long query generated (via as_query()) in: 0.430782 seconds (take 3)
62951 byte-long query generated (via as_query()) in: 0.416879 seconds (take 4)
62951 byte-long query generated (via as_query()) in: 0.426492 seconds (take 5)
62951 byte-long query generated (via as_query()) in: 0.428975 seconds (take 6)
62951 byte-long query generated (via as_query()) in: 0.413018 seconds (take 7)
62951 byte-long query generated (via as_query()) in: 0.428731 seconds (take 8)
62951 byte-long query generated (via as_query()) in: 0.413206 seconds (take 9)

8 years agoRemove changelog entries included in 0.082830
Peter Rabbitson [Fri, 17 Jun 2016 14:06:55 +0000]
Remove changelog entries included in 0.082830

8 years agoSimplify our quote_sub override: Sub::Quote now has native attr support
Peter Rabbitson [Wed, 15 Jun 2016 10:31:53 +0000]
Simplify our quote_sub override: Sub::Quote now has native attr support

8 years agoChange the leaktracer to no longer rely on %Sub::Quote::QUOTED
Peter Rabbitson [Thu, 16 Jun 2016 15:40:44 +0000]
Change the leaktracer to no longer rely on %Sub::Quote::QUOTED

Frees up @haarg to do as he sees fit in the future

8 years agoRemove useless eval in the leaktracer on 5.8.3+
Peter Rabbitson [Thu, 16 Jun 2016 22:21:23 +0000]
Remove useless eval in the leaktracer on 5.8.3+

As a bonus fix a subtle bug where the very first ref encountered was never
traced, as the postincrement caused its slot to be deleted - ARGH!

8 years agoRemove code forgotten in 085dbdd69
Peter Rabbitson [Thu, 16 Jun 2016 15:01:02 +0000]
Remove code forgotten in 085dbdd69

8 years agoRemove preemptive DESTROY guard from 87f4bab0 / d63c9e64
Peter Rabbitson [Tue, 14 Jun 2016 10:32:34 +0000]
Remove preemptive DESTROY guard from 87f4bab0 / d63c9e64

It has been on CPAN sufficiently long, and would be needlesly pessimizing
the upcoming sanity check framework.

8 years agoAllow alternative mro-type specification on method listing
Peter Rabbitson [Tue, 14 Jun 2016 08:35:50 +0000]
Allow alternative mro-type specification on method listing

This is needed for the mro sanity check further up

8 years agoAccount for 'poor man role application' method plumbing on 5.8
Peter Rabbitson [Tue, 14 Jun 2016 06:18:35 +0000]
Account for 'poor man role application' method plumbing on 5.8

This also has the effect of greatly simplifying the OLD_MRO case

8 years agoProperly handle UNIVERSAL ancestry in describe_class_methods
Peter Rabbitson [Mon, 13 Jun 2016 16:43:31 +0000]
Properly handle UNIVERSAL ancestry in describe_class_methods

Obscure but possible nevertheless.

8 years agoFix describe_class_methods on non-mergeable DFS mro
Peter Rabbitson [Tue, 14 Jun 2016 16:05:51 +0000]
Fix describe_class_methods on non-mergeable DFS mro

Instead of trying to deduplicate - simply track which methods are locally
defined, and use that info combined with a reverse ISA-per-select-MRO to
build the final stack.

As a result the code is even more efficient and can now deal with real-life
insane hierarchies like:

https://metacpan.org/source/MJFLICK/DBIx-Class-Bootstrap-Simple-0.03/lib/DBIx/Class/Bootstrap/Simple.pm#L93

8 years agoName describe_class_methods arguments earlier
Peter Rabbitson [Tue, 14 Jun 2016 07:18:48 +0000]
Name describe_class_methods arguments earlier

The attribute::get() caching seems to only add noise in benchmarks,
so remove that. Same for the pre-check on recursion - remove that as well

8 years agoFix m2m regression from 8a67d9cf (simple but deadly)
Peter Rabbitson [Fri, 10 Jun 2016 06:22:38 +0000]
Fix m2m regression from 8a67d9cf (simple but deadly)

8 years agoAdd extra maint tooling - got tired of writing this smoke cmd by hand
Peter Rabbitson [Thu, 9 Jun 2016 09:06:39 +0000]
Add extra maint tooling - got tired of writing this smoke cmd by hand

8 years ago(travis) Temporarily disable {halt_on_failure} for cperl
Peter Rabbitson [Fri, 10 Jun 2016 06:31:56 +0000]
(travis) Temporarily disable {halt_on_failure} for cperl

It is not clear whether there is a way around the root cause:
https://github.com/rurban/distroprefs/commit/30792f7e95ca76ac1c1e73d0662dce22168c9df9#commitcomment-17817389

8 years ago(travis) Revert parts of e66f0ee0 and ee3a37d3
Peter Rabbitson [Fri, 10 Jun 2016 06:13:30 +0000]
(travis) Revert parts of e66f0ee0 and ee3a37d3

The typing of @array * $int got relaxed, and it turns out c5.22.2 worked
just fine *without* distroprefs, so I never noticed them being ignored

8 years ago(travis) Work around a bad tradeoff in cperl-5.24-to-be
Peter Rabbitson [Wed, 8 Jun 2016 07:47:56 +0000]
(travis) Work around a bad tradeoff in cperl-5.24-to-be

https://github.com/perl11/cperl/issues/153#issuecomment-224515895
http://irclog.perlgeek.de/perl11/2016-06-08#i_12624951

8 years ago(travis) Add cperl master to the smoke roster, bump to 5.22.3
Peter Rabbitson [Thu, 2 Jun 2016 17:55:31 +0000]
(travis) Add cperl master to the smoke roster, bump to 5.22.3

8 years ago(travis) Report the perl (and vm state) early before deps can fail
Peter Rabbitson [Tue, 7 Jun 2016 17:21:54 +0000]
(travis) Report the perl (and vm state) early before deps can fail

8 years ago(travis) Mini-utility to download travis reports
Peter Rabbitson [Tue, 7 Jun 2016 15:22:11 +0000]
(travis) Mini-utility to download travis reports

I've had enough waiting for their shit site :/

8 years agoBase more tests on DBICTest::BaseSchema (needed further up)
Peter Rabbitson [Sun, 5 Jun 2016 10:00:43 +0000]
Base more tests on DBICTest::BaseSchema (needed further up)

8 years agoAnd yet another INDIRECT guard missed in both e5053694 and d99f2db7
Peter Rabbitson [Mon, 6 Jun 2016 12:59:44 +0000]
And yet another INDIRECT guard missed in both e5053694 and d99f2db7

8 years agoIntroduce the describe_class_methods() utility function
Peter Rabbitson [Wed, 1 Jun 2016 08:46:28 +0000]
Introduce the describe_class_methods() utility function

This code will be needed several commits later to tie together the hierarchy
validation work.

Returns a comprehensive list of methods and related trivia. This required
way more code than one would hope, this part of perl is *really* hateful.

Read test changes under -w

Everything is implemented on "bare metal" (no Package::Stash, very aggressive
caching) as this needs to be as efficient as possible. Currently timings on
old and new MRO are roughly such on a downclocked X201 / M540:

~/devel/dbic$ perlbrew exec --with 5.8.5,5.16.2,5.24.0_rc1 \
  perl -T -Ilib -It/lib -MDBICTest -MTime::HiRes=time -e '
    my $t0 = time;
    sub tstamp {
      printf "%.6f\n", time - $t0;
      $t0 = time;
    }

    tstamp();

    for ( (qw(
      DBICTest::Schema::Artist
      DBICTest::Schema::CD
      DBICTest::Schema::Track
      main
    )) x 2 ) {
      print "describing $_\n";
      DBIx::Class::_Util::describe_class_methods($_);
      tstamp();
    }
  '

5.8.5
==========
0.000005
describing DBICTest::Schema::Artist
0.224748
describing DBICTest::Schema::CD
0.066118
describing DBICTest::Schema::Track
0.090433
describing main
0.003152
describing DBICTest::Schema::Artist
0.038846
describing DBICTest::Schema::CD
0.038390
describing DBICTest::Schema::Track
0.043453
describing main
0.002128

5.16.2
==========
0.000005
describing DBICTest::Schema::Artist
0.077804
describing DBICTest::Schema::CD
0.007684
describing DBICTest::Schema::Track
0.013071
describing main
0.001073
describing DBICTest::Schema::Artist
0.000109
describing DBICTest::Schema::CD
0.000096
describing DBICTest::Schema::Track
0.000098
describing main
0.000041

5.24.0_rc1
==========
0.000005
describing DBICTest::Schema::Artist
0.044058
describing DBICTest::Schema::CD
0.006093
describing DBICTest::Schema::Track
0.011004
describing main
0.000735
describing DBICTest::Schema::Artist
0.000118
describing DBICTest::Schema::CD
0.000114
describing DBICTest::Schema::Track
0.000113
describing main
0.000059

Additional sanity-checking of this deceptively simple code was performed by
sad brute-forcing of the entire test schema set ( at the time of this commit
the cumulative sum output was 0x1a65e78e316348104ab9cdc3e474c79096 )

perlbrew exec --with 5.8.5,5.10.0,5.16.2,5.18.0,5.20.0,5.24.0_rc1 \
perl -T -Ilib -It/lib -MDBICTest -e '
  use Math::BigInt;
  use Digest::MD5 "md5_hex";
  use List::Util 'shuffle';
  use Data::Dumper::Concise;
  use DBIx::Class::_Util qw( describe_class_methods uniq );

  my $sum = Math::BigInt->new(0);

  for ( shuffle uniq sort map { ( defined Scalar::Util::blessed $_ ) ? ref $_ : $_ } (
    qw(
      DBIx::Class::ResultSource
      DBIx::Class::Core
      DBIx::Class::ResultSet
      DBICTest::Schema
    ),
    ( map {
      $_,
      $_->result_class,
      $_->resultset_class,
    } map { DBICTest::Schema->source($_) } DBICTest::Schema->sources ),
  ) ) {
    my $desc = describe_class_methods($_);

    # unstable between invocations
    delete $desc->{cumulative_gen};

    # only available on 5.10+
    delete $desc->{methods}{DOES};

    # only available on 5.18+
    delete $desc->{methods}{"(("};

    $sum += Math::BigInt->new( "0x" . md5_hex(Dumper($desc)) );
  }

  print $sum->as_hex;
'

8 years agoIntroduce DBIC-specific method attribute support
Peter Rabbitson [Wed, 25 May 2016 09:44:20 +0000]
Introduce DBIC-specific method attribute support

When attribute support was added back in ed28f830 it was done in a weird
roundabout manner, with the only way to access the attributes via a chained
class accessor __attr_cache hidden behind a cascading method _attr_cache.

This is wasteful and rather inelegant. To mitigate this, and the propensity
of DBIC to eat any attribute it can lay its hands on, introduce special
handling for attributes prefixed with DBIC_

Any such attributes are handled by a much simpler storage system, and are
not made available to the legacy _attr_cache interface.

8 years agoAttribute handling got too complex - move it into a component
Peter Rabbitson [Sun, 29 May 2016 14:50:02 +0000]
Attribute handling got too complex - move it into a component

No functional changes, just c/p code around
For some reason git diff -C -C -M doesn't work here...

8 years agoProper attribute support under ithreads (fix 7bd921c0)
Peter Rabbitson [Sun, 29 May 2016 14:00:22 +0000]
Proper attribute support under ithreads (fix 7bd921c0)

The previous implementation was rushed (for decidedly non-technical reasons)
and is predictably completely wrong :/

Properly fix renumbering of the registry, and add a double-thread test to
catch future problems

Read under --color-words

8 years agoExpand the c3 mro test from d009cb7d
Peter Rabbitson [Mon, 30 May 2016 09:04:54 +0000]
Expand the c3 mro test from d009cb7d

No functional changes

8 years agoCorrect mistake in t/00describe_environment.t reporting of _TempExtlib
Peter Rabbitson [Mon, 30 May 2016 14:44:05 +0000]
Correct mistake in t/00describe_environment.t reporting of _TempExtlib

This isn't actually correct, but is a reasonable approximation. The entire
thing needs to be rewritten, but that's another fight

8 years agoRevert c9f4555e - I did not see a mistake I made in the skip-regex
Peter Rabbitson [Thu, 26 May 2016 19:21:05 +0000]
Revert c9f4555e - I did not see a mistake I made in the skip-regex

ribasushi-- # get your fucking act together...

8 years agoExpand/fortify the handling of attributes
Peter Rabbitson [Wed, 25 May 2016 08:00:58 +0000]
Expand/fortify the handling of attributes

Now works properly under ithreads, and allows multiple attributes->import()
calls to be made on the same cref

8 years agoMove even more utils into DBIC::_Util (see next commit)
Peter Rabbitson [Wed, 25 May 2016 12:19:13 +0000]
Move even more utils into DBIC::_Util (see next commit)

Zero functional changes

8 years agoPrevent CLONE from potentially running more than once
Peter Rabbitson [Thu, 26 May 2016 15:02:06 +0000]
Prevent CLONE from potentially running more than once

Argh, another thing I didn't know about iThreads: CLONE will run for every
package defining *or inheriting* it. Sigh...

8 years agoFix more taint.t failures under local::lib
Peter Rabbitson [Wed, 25 May 2016 15:14:23 +0000]
Fix more taint.t failures under local::lib

Add a CI run under l::l (when POISON_ENV is set) to weed this problem out
once and for all

Also relegate the test to xt/ - it will still run on smokers given 554484cb
and has no value failing on an end-user system (CI runs the entire suite
under prove -T anyhow)

8 years agoSkip lean_startup.t entirely on cperl for now
Peter Rabbitson [Thu, 26 May 2016 11:51:57 +0000]
Skip lean_startup.t entirely on cperl for now

8 years agoCouple things forgotten during 399b9455/b46b8537
Peter Rabbitson [Wed, 25 May 2016 10:54:31 +0000]
Couple things forgotten during 399b9455/b46b8537

8 years agoBetter lean startup skip in require override
Peter Rabbitson [Thu, 26 May 2016 10:17:29 +0000]
Better lean startup skip in require override

ribasushi-- # didn't think through this kind of thing can happen more widely

8 years agoAdd preliminary non-core attribute support
Peter Rabbitson [Tue, 24 May 2016 10:38:16 +0000]
Add preliminary non-core attribute support

This is done in such a "cargocult" way to unblock the rsrc work.
Will be gutted out once Moo 2.002 ships

8 years agoForce no_defer on DBIC-internal quote_sub() invocations
Peter Rabbitson [Mon, 23 May 2016 17:42:56 +0000]
Force no_defer on DBIC-internal quote_sub() invocations

8 years agoBring back _TempExtlib (d0435d75), this time for Sub::Quote
Peter Rabbitson [Tue, 24 May 2016 11:16:34 +0000]
Bring back _TempExtlib (d0435d75), this time for Sub::Quote

And this is the part that brings back the to-be-removed portion (unlike the
previous 399b9455 which is here to stay)

See next commit for why we need this, to be removed once Moo $next ships

8 years agoAdd permanent plumbing for _TempExtlib (d0435d75)
Peter Rabbitson [Tue, 24 May 2016 12:36:41 +0000]
Add permanent plumbing for _TempExtlib (d0435d75)

Since this is the second time we need this, there likely will be more down the
road. Split the permanenet and temporary parts into two commits so reverting
is less of a PITA.

This commit contains the pieces that are perfectly fine to lay dormant until
times we need _TempExtlib

8 years agoRemove last active reference to List::Util from lib/
Peter Rabbitson [Tue, 24 May 2016 08:40:12 +0000]
Remove last active reference to List::Util from lib/

This makes zero difference right now that List::Util/Scalar::Util/Sub::Util
are one disgusting ball of mud, but hopefully it will make sense soon after
@haarg's refactor finally ships

8 years agoBetter lean startup check
Peter Rabbitson [Sun, 28 Feb 2016 12:27:25 +0000]
Better lean startup check

Instead of stupidly loading DBICTest right away, delay to examine the actual
bare DBIC startup

8 years agoSimplify the find-test-temp-dir codepath a bit
Peter Rabbitson [Tue, 24 May 2016 06:54:18 +0000]
Simplify the find-test-temp-dir codepath a bit

8 years agoFix incorrect whitespace test outside of checkouts
Peter Rabbitson [Tue, 24 May 2016 11:55:31 +0000]
Fix incorrect whitespace test outside of checkouts

I stupidly broke it in 1fb834df

8 years agoThis piece of doc has been incorrect since c354902c
Peter Rabbitson [Tue, 24 May 2016 08:43:18 +0000]
This piece of doc has been incorrect since c354902c

8 years agoHarmonize time zone spelling in InflateColumn::DateTime
Dagfinn Ilmari Mannsåker [Tue, 17 May 2016 15:33:27 +0000]
Harmonize time zone spelling in InflateColumn::DateTime

The rest of the DateTime ecosystem consistently uses "time zone" and
"time_zone", so use that in InflateColumn::DateTime too

"timezone" is still accepted for backwards compatibility

8 years agoProperly fix corner case of non-comparing overload
Peter Rabbitson [Thu, 19 May 2016 18:49:55 +0000]
Properly fix corner case of non-comparing overload

Back in 096ab902a I stupidly introduced a distinction between blessed and
non-blessed structures in store_column. In retrospect this makes absolutely
no sense. It took me an embarrasingly long time to get my clue on, including
sending a bogus bugrport (with a patch FFS!!!) and wasting SYBER's time:
https://rt.cpan.org/Ticket/Display.html?id=114424

At least that shit never shipped :/

8 years ago(travis) Bump to Cperl 5.22.2
Peter Rabbitson [Thu, 19 May 2016 14:49:41 +0000]
(travis) Bump to Cperl 5.22.2

@miyagawa++ # YAML api - allows for trivial grep/sed slicing and dicing

Read under -w

8 years ago(travis) Test::Strict needs Devel::Cover which fails on blead
Peter Rabbitson [Thu, 19 May 2016 08:25:36 +0000]
(travis) Test::Strict needs Devel::Cover which fails on blead

To work around https://github.com/pjcj/Devel--Cover/issues/161 provide a fake
Devel::Cover satisfying https://github.com/Manwar/Test-Strict/issues/17

8 years ago(travis) Clear out some resolved FIXMEs
Peter Rabbitson [Thu, 19 May 2016 07:23:55 +0000]
(travis) Clear out some resolved FIXMEs

8 years ago(travis) Poorman updated their offerings
Peter Rabbitson [Thu, 19 May 2016 07:19:00 +0000]
(travis) Poorman updated their offerings

As a bonus sidesteps https://github.com/travis-ci/travis-ci/issues/5944

8 years agoStart known issues changelog section - place it on top for clarity
Peter Rabbitson [Sun, 15 May 2016 20:52:18 +0000]
Start known issues changelog section - place it on top for clarity

Aside from the 3 pieces listed in Changes, everything else tested on the list
below passes on 5.16.2 as of the date of this commit

Note: slight nudging (cpanm -n) was necessary to get some intra-deps

reset; set -o pipefail; for d in \
  RapidApp \
  App::DBCritic \
  App::DH \
  Catalyst::Controller::DBIC::API \
  Catalyst::Model::DBIC::Schema \
  Catalyst::Model::DBIC::Schema::PerRequest \
  Catalyst::Plugin::Authorization::RoleAbilities \
  Catalyst::TraitFor::Model::DBIC::Schema::Result \
  Catalyst::TraitFor::Model::DBIC::Shortcut \
  CatalystX::CRUD::ModelAdapter::DBIC \
  CatalystX::Eta \
  CatalystX::Resource \
  CatalystX::SimpleLogin \
  Dancer2::Plugin::DBIC \
  Dancer2::Session::DBIC \
  Dancer::Plugin::DBIC \
  Dancer::Session::DBIC \
  DBICx::Modeler \
  DBICx::Sugar \
  DBIx::Class::AlwaysUpdate \
  DBIx::Class::AuditAny \
  DBIx::Class::AuditLog \
  DBIx::Class::BatchUpdate \
  DBIx::Class::Candy \
  DBIx::Class::DeploymentHandler \
  DBIx::Class::DynamicDefault \
  DBIx::Class::DynamicSubclass \
  DBIx::Class::EasyFixture \
  DBIx::Class::Fixtures \
  DBIx::Class::Helpers \
  DBIx::Class::HTMLWidget \
  DBIx::Class::InflateColumn::Boolean \
  DBIx::Class::InflateColumn::DateTimeX::Immutable \
  DBIx::Class::InflateColumn::Math::Currency \
  DBIx::Class::InflateColumn::Serializer::Role::HashContentAccessor \
  DBIx::Class::InflateColumn::Time \
  DBIx::Class::InflateColumn::TimeMoment \
  DBIx::Class::Journal \
  DBIx::Class::Migration \
  DBIx::Class::MooseColumns \
  DBIx::Class::Objects \
  DBIx::Class::ParameterizedJoinHack \
  DBIx::Class::PgLog \
  DBIx::Class::QueryLog \
  DBIx::Class::RandomColumns \
  DBIx::Class::Result::ColumnData \
  DBIx::Class::ResultSet::AccessorsEverywhere \
  DBIx::Class::ResultSet::AuditLog \
  DBIx::Class::ResultSet::RecursiveUpdate \
  DBIx::Class::ResultSource::MultipleTableInheritance \
  DBIx::Class::Result::Validation \
  DBIx::Class::Schema::Config \
  DBIx::Class::Schema::Diff \
  DBIx::Class::Schema::Loader \
  DBIx::Class::Schema::Loader::Dynamic \
  DBIx::Class::Schema::PopulateMore \
  DBIx::Class::Schema::RestrictWithObject \
  DBIx::Class::Schema::TxnEndHook \
  DBIx::Class::Schema::Versioned::Inline \
  DBIx::Class::Sims \
  DBIx::Class::TimeStamp \
  DBIx::Class::TopoSort \
  DBIx::Class::Tree \
  DBIx::Class::Tree::Mobius \
  DBIx::Class::UnicornLogger \
  DBIx::Class::UserStamp \
  DBIx::Class::Validation \
  DBIx::Class::Validation::Structure \
  DBIx::Class::VirtualColumns \
  DBIx::Class::Wrapper \
  DBIx::Schema::Changelog \
  DBIx::Table::TestDataGenerator \
  Galileo \
  HTML::FormHandler::Model::DBIC \
  HTML::FormHandler::TraitFor::Model::DBIC \
  Interchange6::Schema \
  KiokuDB::Backend::DBI \
  MooseX::Meta::Method::Transactional \
  MooseX::Role::DBIC \
  MooseX::Storage::DBIC \
  MooseX::Types::DBIx::Class \
  Reaction \
  Tapper::Schema \
  Test::DBIC::Schema::Connector \
  Test::DBIC::Versioned \
  Test::DBIx::Class \
  WebAPI::DBIC \
  Yeb::Plugin::DBIC \
  "DBD::SQLite@1.35 Handel Catalyst::ActionRole::BuildDBICResult" \
; do \
  PERL5LIB=/home/rabbit/devel/dbic/lib \
  DBIC_ASSERT_NO_ERRONEOUS_METAINSTANCE_USAGE=1 \
  cpanm -v --reinstall $d 2>&1 \
| tee -a /dev/shm/umpfh \
| grep -P -B1 '^(Building and testing|Result:)' || break \
; done

8 years agoAdd a few more indirect call guards missed in e5053694
Peter Rabbitson [Tue, 17 May 2016 15:43:30 +0000]
Add a few more indirect call guards missed in e5053694

No notable code changes were required as a result

8 years agoRollback some mistaken indirect-call-elisions from e5053694
Peter Rabbitson [Sun, 15 May 2016 20:52:18 +0000]
Rollback some mistaken indirect-call-elisions from e5053694

The ::Realtionship::Base calls perform result-instance adjustments, thus
they CAN NOT be omitted

That would have been *really* embarrassing, good thing dependent smoking
caught this crap. Not adding an extra test at this point, but probably
should :/

Audit was performed by scrutinizing each line of:
grep -- '->' \
 <(git diff -U0 e50536940^..e50536940) \
 <(git diff -U0 77c3a5dca^..77c3a5dca) \
> argh.log

8 years agoEnsure the component_class override require()s its value in a pipeline
Peter Rabbitson [Sun, 15 May 2016 15:01:32 +0000]
Ensure the component_class override require()s its value in a pipeline

8 years agoStreamline ::ResultSource::* inheritance, similar to d009cb7d
Peter Rabbitson [Sun, 15 May 2016 13:54:30 +0000]
Streamline ::ResultSource::* inheritance, similar to d009cb7d

There should be zero functional changes

8 years agoClean up the mess around $rsrc->sqlt_deploy_callback
Peter Rabbitson [Sun, 15 May 2016 14:38:59 +0000]
Clean up the mess around $rsrc->sqlt_deploy_callback

Back in f89bb832 nothingmuch introduced a hook point used to better integrate
with KiokuDB::Backend::DBI. It was properly implemented as a $rsrc instance
attribute, though somewhat undocmented.

Then in 880c075b castaway came along and incorrectly documented the attribute
as settable from a class, without it ever becoming a member of the list in
DBIC::ResultSourceProxy.

Then in 3b4e619d1 yours truly came along and (either misled by the docs, or
by drugs, or both) switched the accessor to classdata (CAG inherited) even
though rsrc-class-level operations were never a thing.

Revert part of 3b4e619d1 and fix the documentation to properly reflect the
state of affairs

8 years agoExplicit exception clarifying that $rsrc->from() is not a setter
Peter Rabbitson [Mon, 2 May 2016 11:35:40 +0000]
Explicit exception clarifying that $rsrc->from() is not a setter

This has always been the case, but previously from('foo') would just eat the
arguments silently

8 years agoPull apart a test section (no functional changes)
Peter Rabbitson [Fri, 29 Apr 2016 11:00:35 +0000]
Pull apart a test section (no functional changes)

8 years agoIn d009cb7d I stupidly created a "double around()"
Peter Rabbitson [Wed, 4 May 2016 16:10:33 +0000]
In d009cb7d I stupidly created a "double around()"

Consolidate all the logic in DBIC::Componentised instead

8 years agoBump Sub::Uplevel dep - too much breaks on <= 0.18
Peter Rabbitson [Fri, 29 Apr 2016 16:00:03 +0000]
Bump Sub::Uplevel dep - too much breaks on <= 0.18

Note that this is a kludge - the guts of ::Carp need to be protected much
better by a faulty caller() override (as was the case in RT#32640)

An attempt to do so in 821edc09 turned out insufficient - everything still
fails on `DBIC_TRACE=1 prove ...` if the older Sub::Uplevel is installed :(

8 years agoMore indirect call removals: the second part of 77c3a5dc
Peter Rabbitson [Fri, 15 Apr 2016 14:24:33 +0000]
More indirect call removals: the second part of 77c3a5dc

This may see like a random thing to do, especially given the late dev stage,
but it is needed for the clean fix of rsrc duality several commits later.

The spots were audited via "list all subs 10 lines or less":

~/devel/dbic$ find lib \
     -name '*.pod' -prune \
  -o -path lib/DBIx/Class/CDBICompat -prune \
  -o -path lib/DBIx/Class/Admin -prune \
  -o -path lib/DBIx/Class/Storage -prune \
  -o -path lib/DBIx/Class/SQLMaker -prune \
  -o -type f -exec perl -0777 -e '
    $_ =~ /\S/
      and
    $_ !~ /ASSERT_NO_INTERNAL_INDIRECT_CALLS and fail_on_internal_call/
      and
    print "\n=====\n$ARGV\n=====\n\n$_\n\n\n"
      for (<> =~ / (
        ^ (\s*) sub \s+ \w+ \s* \{ (?:
          [^\n]+? \} \s*? \n
            |
          (?: [^\n]* \n ){0,10}? ^ \2 \}
        )
      ) /xmg)
  ' {} \; \
| less

8 years agoCentralize remaining uses of Sub::Name within _Util
Peter Rabbitson [Wed, 27 Apr 2016 12:57:40 +0000]
Centralize remaining uses of Sub::Name within _Util

No functional changes

8 years agoMissed test spewing odd debug after fd2c6658f (slave-less replication)
Peter Rabbitson [Thu, 28 Apr 2016 07:07:08 +0000]
Missed test spewing odd debug after fd2c6658f (slave-less replication)

Disabling VIA_REPLICATED as it makes no sense here anyway

8 years agoSilly GitHub, Perl6 is not a real language :trollface:
Sebastian Riedel [Tue, 26 Apr 2016 22:04:38 +0000]
Silly GitHub, Perl6 is not a real language :trollface:

Port of https://github.com/kraih/mojo/commit/19cdf772
Before this clarification the project listed as 7% Perl6 code >.<

The explicit listing is needed, as there apparently won't be a fix
within Github itself any time soon:
https://github.com/github/linguist/issues/2149#issuecomment-108954064
https://github.com/github/linguist/issues/2781#issuecomment-167095903
https://github.com/github/linguist/issues/2074#issue-56431157

Language names sourced from:
https://github.com/github/linguist/blob/master/lib/linguist/languages.yml

8 years ago(travis) Work around RT#113740
Peter Rabbitson [Sun, 24 Apr 2016 16:49:46 +0000]
(travis) Work around RT#113740

8 years ago(travis) Make more helper functions available to subexecs
Peter Rabbitson [Sun, 24 Apr 2016 11:36:47 +0000]
(travis) Make more helper functions available to subexecs

8 years agoFix last remaining tests with -T under < 5.10
Peter Rabbitson [Sun, 24 Apr 2016 13:49:30 +0000]
Fix last remaining tests with -T under < 5.10

Model on https://github.com/p5sagit/namespace-clean/commit/acb1d694, this is
still a mega-kludge, as the FIXME in the file says

8 years agoFix ordering by 1:M prefetched boolean columns in Pg
Dagfinn Ilmari Mannsåker [Wed, 10 Dec 2014 18:04:06 +0000]
Fix ordering by 1:M prefetched boolean columns in Pg

PostgreSQL doesn't have min/max aggregates for the boolean type, but
it has and/or, which are equivalent. So, allow the storage to override
the aggregate used for constructing the order by clause based on the
column info.

8 years agoUse prepared statement from the start for populate on PostgreSQL
Dagfinn Ilmari Mannsåker [Wed, 20 Apr 2016 16:23:46 +0000]
Use prepared statement from the start for populate on PostgreSQL

DBD::Pg since version 3.0.0 by default only starts using server-side
prepared statements the second time ->execute is called on a given
statement handle.

Unless server-side prepared statements have been disabled (by setting
the threshold to zero), make it use them immediately to avoid parsing
the statement twice.