sbotools2

Maintenance fork of the original sbotools version 2
git clone git://git.server.ky/slackcoder/sbotools2
Log | Files | Refs | README

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 }