aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xt/23-slackware-version.t91
1 files changed, 91 insertions, 0 deletions
diff --git a/t/23-slackware-version.t b/t/23-slackware-version.t
new file mode 100755
index 0000000..af13e6a
--- /dev/null
+++ b/t/23-slackware-version.t
@@ -0,0 +1,91 @@
+#!/usr/bin/env perl
+
+use 5.16.0;
+use strict;
+use warnings FATAL => 'all';
+use Test::More;
+use Capture::Tiny qw/ capture_merged /;
+use FindBin '$RealBin';
+use lib $RealBin;
+use lib "$RealBin/../SBO-Lib/lib";
+use Test::Execute;
+
+if ($ENV{TRAVIS}) {
+ plan tests => 2;
+} else {
+ plan skip_all => "Only run these tests if we're running under Travis CI";
+}
+
+$path = "$RealBin/../";
+
+sub cleanup {
+ capture_merged {
+ rename "/etc/slackware-version.moved", "/etc/slackware-version";
+ };
+}
+
+sub move_slackware_version {
+ state $moved = 0;
+ my $fname = "/etc/slackware-version";
+ if ($_[0]) {
+ if ($moved) { return rename "$fname.moved", $fname; }
+ } else { rename($fname, "$fname.moved") and $moved = 1; }
+}
+
+sub set_ver {
+ state $set = 0;
+ state $ver;
+ if ($_[0]) {
+ if ($set) { script (qw/ sboconfig -V /, $ver, { test => 0 }); }
+ } else {
+ ($ver) = script (qw/ sboconfig -l /, { expected => qr/SLACKWARE_VERSION=(.*)/, test => 0 });
+ $ver //= 'FALSE';
+ note "Saving original value of SLACKWARE_VERSION: $ver";
+ $set = 1;
+ script (qw/ sboconfig -V FALSE /, { test => 0 });
+ }
+}
+
+sub set_repo {
+ state $set = 0;
+ state $orig;
+ if ($_[0]) {
+ if ($set) {
+ capture_merged { system(qw!rm -rf /usr/sbo/repo!); system('mv', "$RealBin/repo.backup", "/usr/sbo/repo"); } if -e "$RealBin/repo.backup";
+ script (qw/ sboconfig -r /, $orig, { test => 0 });
+ }
+ } else {
+ ($orig) = script (qw/ sboconfig -l /, { expected => qr/REPO=(.*)/, test => 0 });
+ $orig //= 'FALSE';
+ note "Saving original value of REPO: $orig";
+ $set = 1;
+ script (qw/ sboconfig -r FALSE /, { test => 0 });
+ capture_merged { system(qw! mv /usr/sbo/repo !, "$RealBin/repo.backup"); } if -e "/usr/sbo/repo";
+ }
+}
+
+
+set_repo();
+set_ver();
+move_slackware_version();
+
+# 1: Fail properly when no /etc/slackware-version file exists
+script (qw/ sbocheck /, { exit => 2, expected => qr!^A fatal script error has occurred:\nopen_fh, /etc/slackware-version is not a file\nExiting\.$!m });
+
+# 2: Fail properly when /etc/slackware-version has a too old version
+if (open(my $fh, '>', '/etc/slackware-version')) {
+ print $fh "Slackware 13.37\n";
+ close $fh;
+
+ script (qw/ sbocheck /, { exit => 1, expected => qr!^Unsupported Slackware version: 13\.37$!m });
+ unlink '/etc/slackware-version';
+} else {
+ fail "Could not write old version to /etc/slackware-version.";
+}
+
+# Cleanup
+END {
+ move_slackware_version('move');
+ set_ver('restore');
+ set_repo('restore');
+}