PaulHowarth/Blog/2012-01-25

Wednesday 25th January 2012

Fedora Project

  • Cleaned up and rebuilt perl-Module-Find and perl-Test-Synopsis in Rawhide

Local Packages

  • Updated perl-Class-Inspector to 1.27:

    • Update to Module::Install::DSL 1.04

    • Update copyright year
    • Remove usage of defined @{"X::ISA"} to avoid warnings in 5.15.7 onwards

  • Updated perl-File-HomeDir to 0.99:

    • Updated to Module::Install 1.04

    • Removed deprecated interfaces from the documentation
    • Don't require music and video directories in FreeDesktop tests

    • The use of deprecated %~ now emits a warning

  • Updated perl-Test-File to 1.31:

    • Added dir_exists_ok and dir_contains_ok

    • Added file_contains_like and file_contains_unlike

    • Fixed a few grammatical errors in POD
    • Added some SKIP blocks to avoid test failures when running as root

  • The test suite for this release broke for me on Fedora 4 and older distributions:
  • t/file_contains...............
    # Failed test (t/file_contains.t at line 78)
    # STDOUT is:
    # ok 1 - min_file contains (?mx-is:^ xxxxxxxxxxx $)
    # not ok 2 - min_file contains (?mx-is:^ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx $)
    #
    # not:
    # ok 1 - min_file contains (?mx-is:^ xxxxxxxxxxx $)
    # ok 2 - min_file contains (?mx-is:^ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx $)
    #
    # as expected
    Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/vendor_perl/5.8.6/Test/Builder/Tester.pm line 557.
    # STDERR is:
    #
    # Failed test (t/file_contains.t at line 77)
    #
    # 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    #
    # xxxxxxxxxxx
    #
    # '
    #
    # doesn't match '(?mx-is:^ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx $)'
    #
    # not:
    #
    # as expected
    # Failed test (t/file_contains.t at line 83)
    # STDOUT is:
    # ok 1 - file has the goods
    # not ok 2 - file has the goods
    #
    # not:
    # ok 1 - file has the goods
    # ok 2 - file has the goods
    #
    # as expected
    Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/vendor_perl/5.8.6/Test/Builder/Tester.pm line 557.
    # STDERR is:
    #
    # Failed test (t/file_contains.t at line 82)
    #
    # 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    #
    # xxxxxxxxxxx
    #
    # '
    #
    # doesn't match '(?mx-is:^ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx $)'
    #
    # not:
    #
    # as expected
    FAILED tests 15-16
    Failed 2/24 tests, 91.67% okay
    t/owner.......................ok
    t/rt/30346....................ok
    Failed 1/16 test scripts, 93.75% okay.
    2/233 subtests failed, 99.14% okay.
    Failed Test            Stat Wstat Total Fail  Failed  List of Failed -------------------------------------------------------------------------------
    t/file_contains.t                    24    2   8.33%  15-16
    9 subtests skipped.
    make: *** [test_dynamic] Error 255
  • I believe this is due to a bug in older perls that makes the '$' anchor not work properly in qr// regexes with the m modifier, as mentioned at http://www.perlmonks.org/bare/?node_id=676601

  • I think the underlying bug is Perl RT#3038 and it was fixed in perl 5.8.9; the patch was applied in an update to Fedora Core 5's perl 5.8.8 package, which is why that wasn't affected

  • This patch works around the problem for me, and I sent it upstream at CPAN RT#74365

  • --- Test-File-1.30/t/file_contains.t
    +++ Test-File-1.30/t/file_contains.t
    @@ -15,9 +15,9 @@
     
     my $file = 'min_file';
     my $contents = do { open FH, $file; local $/; <FH> }; close FH;
    -my $pattern1    = 'x' x 11; $pattern1    = qr/^ $pattern1    $/mx;
    -my $pattern2    = 'x' x 40; $pattern2    = qr/^ $pattern2    $/mx;
    -my $bad_pattern = 'x' x 20; $bad_pattern = qr/^ $bad_pattern $/mx;
    +my $pattern1    = 'x' x 11; $pattern1    = qr/(?mx:^ $pattern1    $)/;
    +my $pattern2    = 'x' x 40; $pattern2    = qr/(?mx:^ $pattern2    $)/;
    +my $bad_pattern = 'x' x 20; $bad_pattern = qr/(?mx:^ $bad_pattern $)/;
     
     
     # like : single pattern
  • Cleaned up and rebuilt perl-Module-Find


Recent