fix codetest failure - ASSERT_ARGS does not have a ; after and
[parrot.git] / t / manifest / 03-regenerate_skip.t
blobc0012b8cac46d21f6ffd082754e6368d0d6dce3f
1 #! perl
2 # Copyright (C) 2007-2010, Parrot Foundation.
3 # $Id$
4 # 03-regenerate_skip.t
6 use strict;
7 use warnings;
9 use Test::More tests => 10;
10 use Carp;
11 use Cwd;
12 use File::Copy;
13 use File::Temp qw( tempdir );
14 use Tie::File;
15 use lib (qw| lib |);
17 SKIP: {
18     skip
19         q{Relevant only when working in checkout from repository},
20          9
21         unless (-e 'DEVELOPING');
23     use_ok('Parrot::Manifest');
25     my $script = $0;
26     my $mani = Parrot::Manifest->new( { script => $script, } );
27     isa_ok( $mani, 'Parrot::Manifest' );
29     my $cwd       = cwd();
30     my $sk        = q{MANIFEST.SKIP};
31     my $print_str = $mani->prepare_manifest_skip();
32     ok( $print_str, "prepare_manifest_skip() returned" );
34     # 1:  Copy the real MANIFEST.SKIP unaltered to the tempdir.
35     # Assuming the real MANIFEST.SKIP was correct going in to this test, the
36     # absence of any change in it will mean that there will be no need to
37     # regenerate it.
38     {
39         my $tdir = tempdir( CLEANUP => 1 );
40         chdir $tdir
41             or croak "Unable to change to temporary directory for testing";
42         copy( qq{$cwd/$sk}, qq{$tdir/$sk} )
43             or croak "Unable to copy $sk to tempdir";
44         ok( -f $sk, "$sk found in tempdir" );
45         my $need_for_skip = $mani->determine_need_for_manifest_skip($print_str);
46         ok( !$need_for_skip, "No need to regenerate $sk" );
47         unlink qq{$tdir/$sk} or croak "Unable to delete file from tempdir";
48         chdir $cwd
49             or croak "Unable to change back from temporary directory after testing";
50     }
52     # 2:  Copy the real MANIFEST.SKIP to the tempdir but mangle it there.
53     # The alteration in the copied MANIFEST.SKIP will be sufficient to require
54     # regeneration of MANIFEST.SKIP.
55     {
56         my $tdir = tempdir( CLEANUP => 1 );
57         chdir $tdir
58             or croak "Unable to change to temporary directory for testing";
59         copy( qq{$cwd/$sk}, qq{$tdir/$sk} )
60             or croak "Unable to copy $sk to tempdir";
61         ok( -f $sk, "$sk found in tempdir" );
62         my @lines;
63         tie @lines, 'Tie::File', qq{$tdir/$sk}
64             or croak "Unable to tie to $sk in tempdir";
66         for ( 1 .. 10 ) {
67             if ( defined( $lines[-1] ) ) {
68                 pop @lines;
69             }
70         }
71         untie @lines or croak "Unable to untie from $sk";
72         my $need_for_skip = $mani->determine_need_for_manifest_skip($print_str);
73         ok( $need_for_skip,                         "Need to regenerate $sk" );
74         ok( $mani->print_manifest_skip($print_str), "print_manifest_skip() returned true" );
75         ok( -f $sk,                                 "$sk has been created in tempdir" );
76         unlink qq{$tdir/$sk} or croak "Unable to delete file from tempdir";
77         chdir $cwd
78             or croak "Unable to change back from temporary directory after testing";
79     }
82 pass("Completed all tests in $0");
84 ################### DOCUMENTATION ###################
86 =head1 NAME
88 03-regenerate_skip.t - test C<Parrot::Manifest> MANIFEST.SKIP-related methods
90 =head1 SYNOPSIS
92     % prove t/manifest/03-regenerate_skip.t
94 =head1 DESCRIPTION
96 The files in this directory test the publicly callable methods of
97 F<lib/Parrot/Manifest.pm> and packages which inherit from that package.
99 F<03-regenerate_skip.t> tests whether Parrot::Manifest correctly determines
100 whether MANIFEST.SKIP needs to be regenerated or not.
102 =head1 AUTHOR
104 James E Keenan (jkeenan@cpan.org)
106 =head1 SEE ALSO
108 Parrot::Manifest, Parrot::Manifest::Files, Parrot::Manifest::Skip,
109 F<tools/dev/mk_manifest_and_skip.pl>.
111 =cut
113 # Local Variables:
114 #   mode: cperl
115 #   cperl-indent-level: 4
116 #   fill-column: 100
117 # End:
118 # vim: expandtab shiftwidth=4: