sbotools2

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

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 }