Youri-Package-RPM-Updater

 view release on metacpan or  search on metacpan

t/test.t  view on Meta::CPAN

#!/usr/bin/perl
# $Id$

use strict;
use DateTime;
use File::Basename;
use File::Copy;
use File::Temp qw/tempdir/;
use Test::More tests => 25;
use Test::Exception;
use Youri::Package::RPM;

my $wrapper_class = Youri::Package::RPM->get_wrapper_class();
my $spec_class =
    $wrapper_class eq 'Youri::Package::RPM::RPM4' ? 'RPM4::Spec' :
    $wrapper_class eq 'Youri::Package::RPM::RPM'  ? 'RPM::Spec'  :
                                                    undef        ;

BEGIN {
    use_ok('Youri::Package::RPM::Updater');
}

my $spec_file = dirname($0) . '/perl-File-HomeDir.spec';

my $topdir = tempdir(CLEANUP => $ENV{TEST_DEBUG} ? 0 : 1);

# force default packager
my $packager = (getpwuid($<))[0];
$wrapper_class->add_macro("packager $packager");

# ensure changelog is not truncated
$wrapper_class->add_macro("_changelog_truncate 0");
$wrapper_class->add_macro("_changelog_trimtime 0");

my $updater = Youri::Package::RPM::Updater->new();
isa_ok($updater, 'Youri::Package::RPM::Updater');

my $new_version_spec_file = $topdir . '/new_version.spec';
copy($spec_file, $new_version_spec_file);

lives_ok {
    $updater->update_from_spec($new_version_spec_file, '0.60', download => 0);
} 'updating to a new version';

my $new_version_spec = $wrapper_class->new_spec($new_version_spec_file, force => 1);
isa_ok($new_version_spec, $spec_class, 'spec syntax');

my $new_version_header = $new_version_spec->srcheader();
is($new_version_header->tag('version'), '0.60', 'new version');
is($new_version_header->tag('release'), '1'   , 'new release');

is(
    ($new_version_header->tag('changelogname'))[0],
    "$packager 0.60-1",
    'new changelog entry author'
);
is(
    DateTime->from_epoch(epoch =>
        ($new_version_header->tag('changelogtime'))[0]
    )->strftime('%a %b %d %Y'),
    DateTime->now()->strftime('%a %b %d %Y'),
    'new changelog entry date'
);
is(
    ($new_version_header->tag('changelogtext'))[0],
    '- New version 0.60',
    'new changelog entry text'
);

my $new_release_spec_file = $topdir . '/new_release.spec';
copy($spec_file, $new_release_spec_file);

lives_ok {
    $updater->update_from_spec($new_release_spec_file);
} 'updating to a new release';

my $new_release_spec = $wrapper_class->new_spec($new_release_spec_file, force => 1);
isa_ok($new_release_spec, $spec_class, 'spec syntax');

my $new_release_header = $new_release_spec->srcheader();
is($new_release_header->tag('version'), '0.58', 'new version');
is($new_release_header->tag('release'), '2'   , 'new release');

is(
    ($new_release_header->tag('changelogname'))[0],
    "$packager 0.58-2",
    'new changelog entry author'
);



( run in 0.858 second using v1.01-cache-2.11-cpan-39bf76dae61 )