aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Guldstrand <andreas.guldstrand@gmail.com>2016-04-16 16:26:40 +0200
committerAndreas Guldstrand <andreas.guldstrand@gmail.com>2016-04-16 16:26:40 +0200
commitc1e7155333f1a86f90a7843e87bb1aa9145acdda (patch)
tree7bbfce970c2c5700493f35503e4c1abe5fc44111
parent301e8781a3d80c371bf3f68e9b6cfd27ddd161ad (diff)
downloadsbotools2-c1e7155333f1a86f90a7843e87bb1aa9145acdda.tar.xz
Add testing for cleaning builds.
-rwxr-xr-xt/16-clean.t72
-rw-r--r--t/Test/Sbotools.pm9
-rw-r--r--t/travis-deps/perf.dummy2
3 files changed, 83 insertions, 0 deletions
diff --git a/t/16-clean.t b/t/16-clean.t
new file mode 100755
index 0000000..cdbf866
--- /dev/null
+++ b/t/16-clean.t
@@ -0,0 +1,72 @@
+#!/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::Sbotools qw/ make_slackbuilds_txt set_distclean set_noclean set_lo sboinstall sboclean sboremove restore_perf_dummy /;
+use SBO::Lib;
+
+plan tests => 10;
+
+my $sboname = "nonexistentslackbuild";
+my $perf = "/usr/sbo/distfiles/perf.dummy";
+sub cleanup {
+ capture_merged {
+ system('removepkg', $sboname);
+ system(qw! rm -rf !, "/tmp/SBo/$sboname-1.0");
+ }
+}
+
+make_slackbuilds_txt();
+set_lo("$RealBin/LO");
+delete $ENV{TMP};
+delete $ENV{OUTPUT};
+cleanup();
+
+# 1: check that build dir doesn't get cleaned
+set_noclean("TRUE");
+sboinstall '-r', $sboname, { test => 0 };
+ok (-e "/tmp/SBo/$sboname-1.0", "$sboname-1.0 exists when NOCLEAN set to true.");
+cleanup();
+
+# 2: check that build dir gets cleaned
+set_noclean("FALSE");
+sboinstall '-r', $sboname, { test => 0 };
+ok (!-e "/tmp/SBo/$sboname-1.0", "$sboname-1.0 is cleaned when NOCLEAN set to false.");
+cleanup();
+
+# 3-4: check that sboclean cleans working dir
+set_noclean("TRUE");
+sboinstall '-r', $sboname, { test => 0 };
+ok (-e "/tmp/SBo/$sboname-1.0", "$sboname-1.0 exists before cleaning.");
+sboclean '-w', { test => 0 };
+ok (!-e "/tmp/SBo/$sboname-1.0", "$sboname-1.0 was properly cleaned.");
+cleanup();
+
+# 5-6: check that sboclean cleans distfiles dir
+ok (-e $perf, "perf.dummy exists before cleaning distfiles.");
+sboclean '-d', { test => 0 };
+ok (!-e $perf, "perf.dummy deleted after cleaning distfiles.");
+restore_perf_dummy();
+
+# 7-8: check that distclean setting cleans too
+set_distclean("TRUE");
+ok (-e $perf, "perf.dummy exists before sboinstall with distclean true.");
+sboinstall '-r', $sboname, { test => 0 };
+ok (!-e $perf, "perf.dummy cleaned after install with distclean.");
+restore_perf_dummy();
+cleanup();
+
+# 9-10: check that distclean parameter cleans too
+set_distclean("FALSE");
+ok (-e $perf, "perf.dummy exists before sboinstall with -d.");
+sboinstall '-r', '-d', 'TRUE', $sboname, { test => 0 };
+ok (!-e $perf, "perf.dummy cleaned after install with -d.");
+restore_perf_dummy();
+cleanup();
+
diff --git a/t/Test/Sbotools.pm b/t/Test/Sbotools.pm
index 8319802..ec0abfc 100644
--- a/t/Test/Sbotools.pm
+++ b/t/Test/Sbotools.pm
@@ -7,6 +7,7 @@ use Exporter 'import';
use Test::More;
use Test::Execute;
use FindBin '$RealBin';
+use lib "$RealBin/../SBO-Lib/lib";
# From Test::Execute
$path = "$RealBin/../";
@@ -29,6 +30,7 @@ our @EXPORT_OK = qw/
set_pkg_dir
set_sbo_home
make_slackbuilds_txt
+ restore_perf_dummy
/;
local $Test::Builder::Level = $Test::Builder::Level + 1;
@@ -89,6 +91,13 @@ sub make_slackbuilds_txt {
if (not -e $fname) { $made = 1; system('mkdir', '-p', '/usr/sbo/repo'); system('touch', $fname); }
}
+sub restore_perf_dummy {
+ if (!-e '/usr/sbo/distfiles/perf.dummy') {
+ system('mkdir', '-p', '/usr/sbo/distfiles');
+ system('cp', "$RealBin/travis-deps/perf.dummy", '/usr/sbo/distfiles');
+ }
+}
+
# Restore original values when exiting
END {
if (%config) {
diff --git a/t/travis-deps/perf.dummy b/t/travis-deps/perf.dummy
new file mode 100644
index 0000000..9bcf29e
--- /dev/null
+++ b/t/travis-deps/perf.dummy
@@ -0,0 +1,2 @@
+Since the sources for this package are in the slackware kernel sources, this
+file is just a notice to that effect.