07-fail.t (10615B)
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 set_repo sboconfig sboinstall sboremove sbosnap restore_perf_dummy sboupgrade /; 11 use File::Temp 'tempdir'; 12 13 if ($ENV{TEST_INSTALL}) { 14 plan tests => 26; 15 } else { 16 plan skip_all => 'Only run these tests if TEST_INSTALL=1'; 17 } 18 $ENV{TEST_ONLINE} //= 0; 19 $ENV{TEST_MULTILIB} //= 0; 20 21 sub cleanup { 22 capture_merged { 23 unlink "$RealBin/LO-fail/failingslackbuild/perf.dummy"; 24 unlink "$RealBin/LO-fail/failingslackbuild2/perf.dummy"; 25 unlink "$RealBin/LO-fail/failingslackbuild3/perf.dummy"; 26 unlink "$RealBin/LO-fail/failingdownload/perf.dummy.fail"; 27 unlink "$RealBin/LO-fail/failingdownload2/perf.dummy.fail"; 28 unlink "$RealBin/LO-fail/failingmd5sum/perf.dummy"; 29 unlink "$RealBin/LO-fail/failingmd5sum2/perf.dummy"; 30 unlink "$RealBin/LO-fail/nonexistentslackbuild/perf.dummy"; 31 unlink "$RealBin/LO-fail/nonexistentslackbuild2/perf.dummy"; 32 unlink "$RealBin/LO-fail/nonexistentslackbuild3/perf.dummy"; 33 unlink "$RealBin/LO-fail/nonexistentslackbuild4/perf.dummy"; 34 unlink "$RealBin/LO-fail/malformed-noinfo/perf.dummy"; 35 unlink "$RealBin/LO-fail/malformed-info/perf.dummy"; 36 unlink "$RealBin/LO-fail/malformed-info2/perf.dummy"; 37 unlink "$RealBin/LO-fail/malformed-info3/perf.dummy"; 38 unlink "$RealBin/LO-fail/malformed-readme/perf.dummy"; 39 unlink "$RealBin/LO-fail/malformed-slackbuild/perf.dummy"; 40 unlink "$RealBin/LO-fail/multilibfail/perf.dummy"; 41 unlink "$RealBin/LO-fail/noreadmebutreadmereq/perf.dummy"; 42 system(qw!rm -rf /tmp/SBo/failingslackbuild-1.0!); 43 system(qw!rm -rf /tmp/SBo/failingslackbuild2-1.0!); 44 system(qw!rm -rf /tmp/SBo/failingslackbuild3-1.0!); 45 system(qw!rm -rf /tmp/SBo/failingdownload-1.0!); 46 system(qw!rm -rf /tmp/SBo/failingdownload2-1.0!); 47 system(qw!rm -rf /tmp/SBo/failingmd5sum-1.0!); 48 system(qw!rm -rf /tmp/SBo/failingmd5sum2-1.0!); 49 system(qw!rm -rf /tmp/SBo/nonexistentslackbuild-1.0!); 50 system(qw!rm -rf /tmp/SBo/nonexistentslackbuild2-1.0!); 51 system(qw!rm -rf /tmp/SBo/nonexistentslackbuild3-1.0!); 52 system(qw!rm -rf /tmp/SBo/nonexistentslackbuild4-1.0!); 53 system(qw!rm -rf /tmp/SBo/malformed-noinfo-1.0!); 54 system(qw!rm -rf /tmp/SBo/malformed-info-1.0!); 55 system(qw!rm -rf /tmp/SBo/malformed-info2-1.0!); 56 system(qw!rm -rf /tmp/SBo/malformed-info3-1.0!); 57 system(qw!rm -rf /tmp/SBo/malformed-readme-1.0!); 58 system(qw!rm -rf /tmp/SBo/malformed-slackbuild-1.0!); 59 system(qw!rm -rf /tmp/SBo/multilibfail-1.0!); 60 system(qw!rm -rf /tmp/SBo/noreadmebutreadmereq-1.0!); 61 system(qw!rm -rf /tmp/package-failingslackbuild!); 62 system(qw!rm -rf /tmp/package-failingslackbuild2!); 63 system(qw!rm -rf /tmp/package-failingslackbuild3!); 64 system(qw!rm -rf /tmp/package-failingdownload!); 65 system(qw!rm -rf /tmp/package-failingdownload2!); 66 system(qw!rm -rf /tmp/package-failingmd5sum!); 67 system(qw!rm -rf /tmp/package-failingmd5sum2!); 68 system(qw!rm -rf /tmp/package-nonexistentslackbuild!); 69 system(qw!rm -rf /tmp/package-nonexistentslackbuild2!); 70 system(qw!rm -rf /tmp/package-nonexistentslackbuild3!); 71 system(qw!rm -rf /tmp/package-nonexistentslackbuild4!); 72 system(qw!rm -rf /tmp/package-malformed-noinfo!); 73 system(qw!rm -rf /tmp/package-malformed-info!); 74 system(qw!rm -rf /tmp/package-malformed-info2!); 75 system(qw!rm -rf /tmp/package-malformed-info3!); 76 system(qw!rm -rf /tmp/package-malformed-readme!); 77 system(qw!rm -rf /tmp/package-malformed-slackbuild!); 78 system(qw!rm -rf /tmp/package-multilibfail!); 79 system(qw!rm -rf /tmp/package-noreadmebutreadmereq!); 80 system(qw!/sbin/removepkg nonexistentslackbuild nonexistentslackbuild2 noreadmebutreadmereq multilibfail!); 81 }; 82 } 83 84 cleanup(); 85 make_slackbuilds_txt(); 86 set_lo("$RealBin/LO-fail"); 87 restore_perf_dummy(); 88 89 sboconfig '--gpg-key FALSE', { test => 0 }; 90 91 # 1: Failing slackbuild script 92 sboinstall 'failingslackbuild', { input => "y\ny", expected => qr/Failures:\n failingslackbuild: failingslackbuild.SlackBuild return non-zero\n\z/, exit => 3 }; 93 94 # 2-3: Failing download and md5sum 95 SKIP: { 96 skip "Not doing online tests", 2 unless $ENV{TEST_ONLINE}; 97 98 sboinstall 'failingdownload', { input => "y\ny\nn", expected => qr!Failures:\n failingdownload: Unable to wget http://pink-mist[.]github[.]io/sbotools/testing/perf[.]dummy[.]fail[.]\n!, exit => 5 }; 99 sboinstall 'failingmd5sum', { input => "y\ny\nn", expected => qr!Failures:\n failingmd5sum: md5sum failure for /usr/sbo/distfiles/perf[.]dummy[.]\n!, exit => 4 }; 100 } 101 102 # 4: Failing dependency 103 sboinstall 'nonexistentslackbuild2', { input => "y\ny\ny\nn", expected => qr/Failures:\n failingslackbuild: failingslackbuild.SlackBuild return non-zero\n/, exit => 3 }; 104 105 # 5-6: Failing download and md5sum in dependency 106 SKIP: { 107 skip "Not doing online tests", 2 unless $ENV{TEST_ONLINE}; 108 109 sboinstall 'nonexistentslackbuild3', { input => "y\ny\ny\nn", expected => qr!Failures:\n failingdownload: Unable to wget http://pink-mist[.]github[.]io/sbotools/testing/perf[.]dummy[.]fail[.]\n!, exit => 5 }; 110 sboinstall 'nonexistentslackbuild4', { input => "y\ny\ny\nn", expected => qr!Failures:\n failingmd5sum: md5sum failure for /usr/sbo/distfiles/perf[.]dummy[.]\n!, exit => 4 }; 111 } 112 113 # 7: Failing build with working dep 114 sboinstall 'failingslackbuild2', { input => "y\ny\ny", expected => qr/Failures:\n failingslackbuild2: failingslackbuild2[.]SlackBuild return non-zero\n\z/, exit => 3 }; 115 sboremove 'nonexistentslackbuild', { input => "y\ny", test => 0 }; 116 117 # 8-9: Failing download and md5sum with working dep 118 SKIP: { 119 skip "Not doing online tests", 2 unless $ENV{TEST_ONLINE}; 120 121 sboinstall 'failingdownload2', { input => "y\ny\ny\nn", expected => qr!Failures:\n!, exit => 5 }; 122 sboinstall 'failingmd5sum2', { input => "y\ny\ny\nn", expected => qr!Failures:\n!, exit => 4 }; 123 } 124 125 # 10: Malformed slackbuild - no .info 126 sboinstall 'malformed-noinfo', { expected => "get_from_info: could not read $RealBin/LO-fail/malformed-noinfo/malformed-noinfo.info.\n", exit => 1 }; 127 128 # 11-13: Malformed slackbuild - malformed .info 129 sboinstall 'malformed-info', { input => "y\ny\nn", expected => qr!Failures:\n malformed-info: Unable to get download info from $RealBin/LO-fail/malformed-info/malformed-info[.]info\n!, exit => 7 }; 130 sboinstall 'malformed-info2', { input => "y\ny\nn", expected => qr!Failures:\n malformed-info2: Unable to get download info from $RealBin/LO-fail/malformed-info2/malformed-info2[.]info\n!, exit => 7 }; 131 sboinstall 'malformed-info3', { exit => 2, expected => "A fatal script error has occurred:\nerror when parsing malformed-info3.info file.\nExiting.\n" }; 132 133 # 14-15: Malformed slackbuild - no readme 134 sboinstall 'malformed-readme', { expected => "Unable to open README for malformed-readme.\n", exit => 6 }; 135 sboinstall qw/ -r malformed-readme /, { test => 0 }; 136 sboupgrade qw/ -f malformed-readme /, { expected => "Unable to open README for malformed-readme.\n", exit => 6 }; 137 sboremove 'malformed-readme', { input => "y\ny", test => 0 }; 138 139 # 16: Malformed slackbuild - no .SlackBuild 140 sboinstall 'malformed-slackbuild', 141 { input => "y\ny", expected => qr!Failures:\n malformed-slackbuild: Unable to backup \Q$RealBin/LO-fail/malformed-slackbuild/malformed-slackbuild.SlackBuild to $RealBin/LO-fail/malformed-slackbuild/malformed-slackbuild.SlackBuild.orig\E!, exit => 6 }; 142 143 # 17: Multilib fails - no multilib 144 SKIP: { 145 skip "No multilib test only valid when TEST_MULTILIB=0", 1 unless $ENV{TEST_MULTILIB} == 0; 146 skip "/etc/profile.d/32dev.sh exists", 1 if -e "/etc/profile.d/32dev.sh"; 147 148 sboinstall qw/ -p nonexistentslackbuild /, { input => "y\ny\ny", expected => qr/Failures:\n nonexistentslackbuild-compat32: compat32 requires multilib[.]\n/, exit => 9 }; 149 sboremove 'nonexistentslackbuild', { input => "y\ny", test => 0 }; 150 } 151 152 # 18: Multilib fails - no convertpkg 153 SKIP: { 154 skip "No convertpkg test only valid when TEST_MULTILIB=1", 1 unless $ENV{TEST_MULTILIB} == 1; 155 skip "/etc/profile.d/32dev.sh doesn't exist", 1 unless -e "/etc/profile.d/32dev.sh"; 156 skip "/usr/sbin/convertpkg-compat32 exists", 1 if -e "/usr/sbin/convertpkg-compat32"; 157 158 sboinstall qw/ -p nonexistentslackbuild /, { input => "y\ny\ny", expected => qr!Failures:\n nonexistentslackbuild-compat32: compat32 requires /usr/sbin/convertpkg-compat32[.]\n!, exit => 11 }; 159 } 160 161 # 19: Multilib fails - convertpkg fail 162 SKIP: { 163 skip "Multilib convertpkg fail test only valid if TEST_MULTILIB=2", 1 unless $ENV{TEST_MULTILIB} == 2; 164 skip "This test is designed to be run in the Travis CI environment", 1 unless $ENV{TRAVIS}; 165 skip "No /etc/profile.d/32dev.sh", 1 unless -e "/etc/profile.d/32dev.sh"; 166 skip "No /usr/sbin/convertpkg-compat32", 1 unless -e "/usr/sbin/convertpkg-compat32"; 167 168 sboinstall qw/ -p multilibfail /, { input => "y\ny\ny", expected => qr/Failures:\n multilibfail-compat32: convertpkg-compt32 returned non-zero exit status\n/, exit => 10 }; 169 } 170 171 # 20: Slackbuild exits 0 but doesn't create a package 172 sboinstall 'failingslackbuild3', { input => "y\ny", expected => qr/Failures:\n failingslackbuild3: failingslackbuild3.SlackBuild didn't create a package\n\z/, exit => 3 }; 173 174 # 21: Slackbuild fails, but we still want to continue with the queue 175 sboinstall 'nonexistentslackbuild2', { input => "y\ny\ny\ny", expected => qr/Failures:\n failingslackbuild: failingslackbuild.SlackBuild return non-zero\n/, exit => 0 }; 176 sboremove 'nonexistentslackbuild2', { input => "y\ny", test => 0 }; 177 178 # 22: Slackbuild fails during noninteractive run 179 sboinstall qw/ -r failingslackbuild /, { expected => qr/Failures:\n failingslackbuild: failingslackbuild.SlackBuild return non-zero\n/, exit => 3 }; 180 181 # 23-24: Slackbuild with %README% req without a readme 182 sboinstall qw/ -r noreadmebutreadmereq /, { test => 0 }; 183 sboremove qw/ noreadmebutreadmereq /, { input => "y\nn", expected => qr/Unable to open README for noreadmebutreadmereq[.]/s, exit => 0 }; 184 sboremove qw/ noreadmebutreadmereq /, { input => "n\ny\ny", expected => qr/Display README.*Remove noreadme.*Added to remove queue.*Removing 1 pack.*noreadme.*All operations/s, exit => 0 }; 185 186 # 25: sboupgrade with -r and -z 187 set_lo "$RealBin/LO"; 188 sboinstall qw/ -r nonexistentslackbuild /, { test => 0 }; 189 set_lo "$RealBin/LO2"; 190 sboupgrade qw/ -z -r nonexistentslackbuild /, { exit => 1, expected => "-r|--nointeractive and -z|--force-reqs can not be used together.\n" }; 191 192 # 26: sboupgrade nonexistentslackbuildname 193 sboupgrade 'nonexistentslackbuildname', { exit => 1, expected => "Unable to locate nonexistentslackbuildname in the SlackBuilds.org tree.\n" }; 194 195 # Cleanup 196 END { 197 cleanup(); 198 }