09-multilib.t (3587B)
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/ make_slackbuilds_txt set_lo sboinstall sboclean sboremove restore_perf_dummy /; 11 use File::Temp 'tempdir'; 12 13 $ENV{TEST_MULTILIB} //= 0; 14 if ($ENV{TEST_INSTALL} and ($ENV{TEST_MULTILIB} == 2)) { 15 plan tests => 11; 16 } else { 17 plan skip_all => 'Only run these tests if TEST_INSTALL=1 and TEST_MULTILIB=2'; 18 } 19 $ENV{TEST_ONLINE} //= 0; 20 21 sub cleanup { 22 capture_merged { 23 system(qw!/sbin/removepkg multilibsbo multilibsbo-compat32 multilibsbo2 multilibsbo2-compat32 multilibsbo3 multilibsbo4 multilibsbo4-compat32!); 24 unlink "$RealBin/LO-multilib/multilibsbo/perf.dummy"; 25 unlink "$RealBin/LO-multilib/multilibsbo2/perf.dummy"; 26 unlink "$RealBin/LO-multilib/multilibsbo3/perf.dummy"; 27 unlink "$RealBin/LO-multilib/multilibsbo4/git-lfs-linux-amd64-1.1.0.tar.gz"; 28 unlink "$RealBin/LO-multilib/multilibsbo4/git-lfs-linux-386-1.1.0.tar.gz"; 29 system(qw!rm -rf /tmp/SBo/multilibsbo-1.0!); 30 system(qw!rm -rf /tmp/SBo/multilibsbo2-1.0!); 31 system(qw!rm -rf /tmp/SBo/multilibsbo3-1.0!); 32 system(qw!rm -rf /tmp/SBo/multilibsbo4-1.0!); 33 system(qw!rm -rf /tmp/package-multilibsbo!); 34 system(qw!rm -rf /tmp/package-multilibsbo2!); 35 system(qw!rm -rf /tmp/package-multilibsbo3!); 36 system(qw!rm -rf /tmp/package-multilibsbo4!); 37 }; 38 } 39 40 cleanup(); 41 make_slackbuilds_txt(); 42 set_lo("$RealBin/LO-multilib"); 43 restore_perf_dummy(); 44 45 # 1: Testing multilibsbo 46 sboinstall qw/ -p multilibsbo /, { input => "y\ny\ny", expected => qr/Cleaning for multilibsbo-compat32-1[.]0[.][.][.]\n/ }; 47 capture_merged { system(qw!/sbin/removepkg multilibsbo multilibsbo-compat32!); }; 48 49 # 2: Testing multilibsbo with dependencies 50 sboinstall qw/ -p multilibsbo2 /, { input => "y\ny\ny\ny\ny", expected => qr/Cleaning for multilibsbo2-compat32-1[.]0[.][.][.]\n/ }; 51 52 # 3: Testing 32-bit only multilibsbo3 53 sboinstall 'multilibsbo3', { input => "y\ny", expected => qr/Cleaning for multilibsbo3-1[.]0[.][.][.]/ }; 54 55 # 4-5: Testing which source is being used for multilibsbo4 56 SKIP: { 57 skip "TEST_ONLINE is not true", 2 unless $ENV{TEST_ONLINE}; 58 sboinstall 'multilibsbo4', { input => "y\ny", expected => qr!tar xvf .*/git-lfs-linux-amd64-1.1.0.tar.gz! }; 59 sboinstall qw/ -p multilibsbo4 /, { input => "y\ny", expected => qr!tar xvf .*/git-lfs-linux-386-1.1.0.tar.gz! }; 60 } 61 62 # 6-8: sboclean cleans up after compat32 build 63 SKIP: { 64 local $ENV{TMP} = tempdir(CLEANUP => 0); 65 my $pkg_dir = $ENV{TMP} . '/package-multilibsbo-compat32'; 66 capture_merged { system(qw!/sbin/removepkg multilibsbo multilibsbo-compat32!); }; 67 sboinstall qw/ -c TRUE -p multilibsbo /, { input => "y\ny\ny", test => 0 }; 68 ok (-e $pkg_dir, 'compat32 package dir exists before sboclean'); 69 sboclean '-w', { input => "n" }; 70 ok (! -e $pkg_dir, 'compat32 package dir properly deleted'); 71 capture_merged { system(qw!/sbin/removepkg multilibsbo multilibsbo-compat32!); }; 72 } 73 74 # 9: multilibsbo while answering no 75 sboinstall qw/ -p multilibsbo /, { input => "n", expected => qr/Proceed with multilibsbo\?/ }; 76 77 # 10: multilibsbo with command in readme 78 sboinstall qw/ -p multilibsbowithcommandinreadme /, { input => "y\ny\nn\nn\nn", expected => qr/It looks like.*Shall I run.*Proceed.*It looks like.*Shall I run.*Proceed.*Are you sure/s }; 79 80 # 11: sboremove multilibsbo 81 sboinstall qw/ -p multilibsbo /, { input => "y\ny\ny", test => 0 }; 82 sboremove qw/ multilibsbo /, { input => "y\ny\ny", expected => qr/Remove multilibsbo\b.*Removing 1 package\(s\)/s }; 83 84 # Cleanup 85 END { 86 cleanup(); 87 }