12-readme.t (4307B)
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 sboremove restore_perf_dummy /; 11 12 if ($ENV{TEST_INSTALL}) { 13 plan tests => 11; 14 } else { 15 plan skip_all => 'Only run these tests if TEST_INSTALL=1'; 16 } 17 18 sub cleanup { 19 capture_merged { 20 system(qw!/sbin/removepkg envsettingtest!); 21 system(qw!/sbin/removepkg envsettingtest2!); 22 system(qw!/sbin/removepkg otherreadmes!); 23 unlink "$RealBin/LO-readme/envsettingtest/perf.dummy"; 24 unlink "$RealBin/LO-readme/envsettingtest2/perf.dummy"; 25 unlink "$RealBin/LO-readme/otherreadmes/perf.dummy"; 26 system(qw!rm -rf /tmp/SBo/envsettingtest-1.0!); 27 system(qw!rm -rf /tmp/SBo/envsettingtest2-1.0!); 28 system(qw!rm -rf /tmp/SBo/otherreadmes-1.0!); 29 system(qw!rm -rf /tmp/package-envsettingtest!); 30 system(qw!rm -rf /tmp/package-envsettingtest2!); 31 system(qw!rm -rf /tmp/package-otherreadmes!); 32 }; 33 } 34 35 cleanup(); 36 make_slackbuilds_txt(); 37 set_lo("$RealBin/LO-readme"); 38 restore_perf_dummy(); 39 40 # 1: sboinstall envsettingtest - fail 41 sboinstall 'envsettingtest', { input => "n\ny\ny", exit => 3, expected => qr{It looks like envsettingtest has options; would you like to set any when the slackbuild is run.*FOO isn't bar!.*envsettingtest: envsettingtest.SlackBuild return non-zero}s }; 42 43 # 2: sboinstall envsettingtest - fail 2 44 sboinstall 'envsettingtest', { input => "y\nFOO=foo\ny\ny", exit => 3, expected => qr{Please supply any options here, or enter to skip:.*FOO isn't bar!.*envsettingtest: envsettingtest.SlackBuild return non-zero}s }; 45 46 # 3: sboinstall envsettingtest - success 47 sboinstall 'envsettingtest', { input => "y\nFOO=bar\ny\ny", expected => qr{Please supply any options here, or enter to skip:.*Install queue: envsettingtest.*Cleaning for envsettingtest-1[.]0}s }; 48 sboremove 'envsettingtest', { input => "y\ny", test => 0 }; 49 50 # 4: sboinstall envsettingtest2 - fail prereq 51 sboinstall 'envsettingtest2', { input => "n\ny\ny\nFOO=quux\ny\ny\nn", exit => 3, expected => qr{It looks like envsettingtest has options.*Proceed with envsettingtest.*It looks like envsettingtest2 has options.*Please supply any options here.*Install queue: envsettingtest envsettingtest2.*FOO isn't bar!.*envsettingtest: envsettingtest.SlackBuild return non-zero}s }; 52 53 # 5: sboinstall envsettingtest2 - success 54 sboinstall 'envsettingtest2', { input => "y\nFOO=bar\ny\ny\nFOO=quux\ny\ny", expected => qr{It looks like envsettingtest has options.*Please supply any options here.*It looks like envsettingtest2 has options.*Please supply any options here.*Install queue: envsettingtest envsettingtest2.*Cleaning for envsettingtest2-1[.]0}s }; 55 sboremove 'envsettingtest2', { input => "n\ny\ny\ny", test => 0 }; 56 57 # 6: sboinstall envsettingtest - don't supply an option even if you say you intend to 58 sboinstall 'envsettingtest', { input => "y\n\nn", expected => qr/Please supply any options here/ }; 59 60 # 7-8: supply an erroneous option 61 sboinstall 'envsettingtest', { input => "y\nFOO\nFOO=bar\nn", expected => qr/Invalid input received[.]/ }; 62 sboinstall 'envsettingtest', { input => "y\nFOO\n\nn", expected => qr/Invalid input received[.]/ }; 63 64 # 9-10: sboinstall commandinreadme 65 SKIP: { 66 skip "Only run useradd/groupadd commands under Travis CI", 2 unless (defined $ENV{TRAVIS} and $ENV{TRAVIS} eq 'true'); 67 skip "Only run useradd/groupadd commands if there is no test user/group", 2, if (defined getgrnam('test') or defined getpwnam('test')); 68 69 sboinstall 'commandinreadme', { input => "y\ny\ny", expected => qr{It looks like this slackbuild requires the following command\(s\) to be run first:.*groupadd -g 199 test.*useradd -u 199 -g 199 -d /tmp test.*Shall I run them prior to building.*}s }; 70 sboremove 'commandinreadme', { input => "y\ny", test => 0 }; 71 72 sboinstall 'commandinreadme', { input => "y\ny\ny", expected => qr/groupadd.*exited non-zero/ }; 73 sboremove 'commandinreadme', { input => "y\ny", test => 0 }; 74 capture_merged { system(qw/ userdel test /); system(qw/ groupdel test /); }; 75 } 76 77 # 11: sboinstall otherreadmes 78 sboinstall 'otherreadmes', { input => "y\ny\ny", expected => qr/It looks like.*Would you like to see.*README.*SlackBuilds[.]org.*SLACKWARE/s }; 79 80 # Cleanup 81 END { 82 cleanup(); 83 }