#! perl -w
use strict;

# $Id$

use File::Spec::Functions;
my $findbin;
use File::Basename;
BEGIN { $findbin = dirname $0; }
use lib $findbin;
use TestLib;
use File::Copy;

use Test::More tests => 15;
BEGIN { 
    use_ok 'Test::Smoke::Util', qw( get_local_patches set_local_patch );
}
my $verbose = $ENV{SMOKE_VERBOSE} || 0;

ok( defined &get_local_patches, "get_local_patches() is defined" );
ok( defined &set_local_patch, "set_local_patch() is defined" );

my $plevh = 'patchlevel.h';
SKIP: {
    my $srcd = catdir( $findbin, qw( ftppub perl-current ) );
    my $src  = catfile( $srcd, $plevh );
    my $dst  = catfile( $findbin, $plevh );
    copy( $src, $dst ) or skip "Cannot copy $plevh ($!)", 2;

    my @lpatches = get_local_patches( $findbin, $verbose );

    is @lpatches, 1, "One localpatch";
    is $lpatches[0], 'DEVEL19999', "description: $lpatches[0]";


    my @descr = ( "[PATCH] fix 1", "[PATCH] fix 2" );
    ok set_local_patch( $findbin, @descr ), "set_local_patch()";

    @lpatches = get_local_patches( $findbin, $verbose );
    is @lpatches, 3, "Three local patches";
    is $lpatches[1], $descr[0], "descr: $descr[0]";
    is $lpatches[2], $descr[1], "descr: $descr[1]";

    1 while unlink $dst;
    my $plb = catfile( $findbin, 'patchlevel.bak' );
    1 while unlink $plb;
}

SKIP: {
    my $srcd = catdir( $findbin, qw( ftppub ) );
    my $src  = catfile( $srcd, 'pl_with_pn.h' );
    my $dst  = catfile( $findbin, $plevh );
    copy( $src, $dst ) or skip "Cannot copy $plevh ($!)", 2;

    my @lpatches = get_local_patches( $findbin, $verbose );

    is @lpatches, 1, "One localpatch";
    is $lpatches[0], 'DEVEL25000', "description: $lpatches[0]";


    my @descr = ( "[PATCH] fix 1", "[PATCH] fix 2" );
    ok set_local_patch( $findbin, @descr ), "set_local_patch()";

    @lpatches = get_local_patches( $findbin, $verbose );
    is @lpatches, 3, "Three local patches";
    is $lpatches[1], $descr[0], "descr: $descr[0]";
    is $lpatches[2], $descr[1], "descr: $descr[1]";

    1 while unlink $dst;
    my $plb = catfile( $findbin, 'patchlevel.bak' );
    1 while unlink $plb;
}