19-pkg-dir.t (3425B)
1 #!/usr/bin/env perl 2 3 use 5.16.0; 4 use strict; 5 use warnings FATAL => 'all'; 6 use Test::More; 7 use Capture::Tiny qw/ capture_merged /; 8 use FindBin '$RealBin'; 9 use lib $RealBin; 10 use Test::Sbotools qw/ set_pkg_dir make_slackbuilds_txt set_lo sboconfig sboinstall sboupgrade restore_perf_dummy /; 11 use File::Temp 'tempdir'; 12 13 if ($ENV{TEST_INSTALL}) { 14 plan tests => 10; 15 } else { 16 plan skip_all => 'Only run these tests if TEST_INSTALL=1'; 17 } 18 $ENV{TEST_ONLINE} //= 0; 19 20 sub cleanup { 21 capture_merged { 22 system(qw!/sbin/removepkg nonexistentslackbuild!); 23 system(qw!/sbin/removepkg nonexistentslackbuild4!); 24 system(qw!/sbin/removepkg nonexistentslackbuild5!); 25 unlink "$RealBin/LO/nonexistentslackbuild/perf.dummy"; 26 unlink "$RealBin/LO2/nonexistentslackbuild/perf.dummy"; 27 unlink "$RealBin/LO2/nonexistentslackbuild4/perf.dummy"; 28 unlink "$RealBin/LO2/nonexistentslackbuild5/perf.dummy"; 29 system(qw!rm -rf /tmp/SBo/nonexistentslackbuild-1.0!); 30 system(qw!rm -rf /tmp/SBo/nonexistentslackbuild-1.1!); 31 system(qw!rm -rf /tmp/SBo/nonexistentslackbuild4-1.1!); 32 system(qw!rm -rf /tmp/SBo/nonexistentslackbuild5-1.1!); 33 system(qw!rm -rf /tmp/package-nonexistentslackbuild!); 34 system(qw!rm -rf /tmp/package-nonexistentslackbuild4!); 35 system(qw!rm -rf /tmp/package-nonexistentslackbuild5!); 36 }; 37 } 38 39 cleanup(); 40 make_slackbuilds_txt(); 41 set_lo("$RealBin/LO"); 42 my $pkgdir = tempdir(CLEANUP => 1); 43 set_pkg_dir($pkgdir); 44 restore_perf_dummy(); 45 46 # 1-2: install creates package in PKG_DIR 47 sboinstall 'nonexistentslackbuild', { input => "y\ny", expected => qr!\Qnonexistentslackbuild-1.0-noarch-1_SBo.tgz stored in $pkgdir! }; 48 ok (-f "$pkgdir/nonexistentslackbuild-1.0-noarch-1_SBo.tgz", 'nonexistentslackbuild-1.0-noarch-1_SBo.tgz is in PKG_DIR'); 49 50 # 3-4: upgrading also creates package in PKG_DIR 51 set_lo("$RealBin/LO2"); 52 sboupgrade 'nonexistentslackbuild', { input => "y\ny", expected => qr!\Qnonexistentslackbuild-1.1-noarch-1_SBo.tgz stored in $pkgdir! }; 53 ok (-f "$pkgdir/nonexistentslackbuild-1.1-noarch-1_SBo.tgz", 'nonexistentslackbuild-1.1-noarch-1_SBo.tgz is in PKG_DIR'); 54 55 # 5-7: installing with deps also creates packages in PKG_DIR 56 sboinstall 'nonexistentslackbuild4', { input => "y\ny\ny", expected => sub { /\Qnonexistentslackbuild4-1.1-noarch-1_SBo.tgz stored in $pkgdir/ and /\Qnonexistentslackbuild5-1.1-noarch-1_SBo.tgz stored in $pkgdir/ } }; 57 ok (-f "$pkgdir/nonexistentslackbuild4-1.1-noarch-1_SBo.tgz", 'nonexistentslackbuild4-1.1-noarch-1_SBo.tgz is in PKG_DIR'); 58 ok (-f "$pkgdir/nonexistentslackbuild5-1.1-noarch-1_SBo.tgz", 'nonexistentslackbuild5-1.1-noarch-1_SBo.tgz is in PKG_DIR'); 59 60 capture_merged { 61 system(qw/ rm -rf /, $pkgdir); 62 system(qw! /sbin/removepkg nonexistentslackbuild !); 63 }; 64 65 # 8-9: make sure PKG_DIR gets recreated 66 sboinstall 'nonexistentslackbuild', { input => "y\ny", expected => qr!\Qnonexistentslackbuild-1.1-noarch-1_SBo.tgz stored in $pkgdir! }; 67 ok (-f "$pkgdir/nonexistentslackbuild-1.1-noarch-1_SBo.tgz", 'nonexistentslackbuild-1.1-noarch-1_SBo.tgz is in PKG_DIR'); 68 69 capture_merged { 70 system(qw/ rm -rf /, $pkgdir ); 71 system(qw! /sbin/removepkg nonexistentslackbuild !); 72 system('touch', $pkgdir); 73 }; 74 75 # 10: creating PKG_DIR should fail properly 76 sboinstall 'nonexistentslackbuild', { input => "y\ny", expected => sub { /\QUnable to create $pkgdir/ and /\Qnonexistentslackbuild-1.1-noarch-1_SBo.tgz left in / } }; 77 78 capture_merged { 79 system('rm', $pkgdir); 80 }; 81 82 # Cleanup 83 END { 84 cleanup(); 85 }