summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2011-05-05 18:10:44 +0200
committerDan McGee <dan@archlinux.org>2011-05-05 18:12:26 +0200
commitd360153bc6d4368e18a6d2e169d7d667e1640992 (patch)
tree32d4e5144426d6bfe95386eb1e157538f3050712
parent47de7973fd501e5253386c50178ec47e9f4c4c8e (diff)
downloadpacman-d360153bc6d4368e18a6d2e169d7d667e1640992.tar.gz
pacman-d360153bc6d4368e18a6d2e169d7d667e1640992.tar.xz
pactest: run with root in /tmp and clean up automatically
This moves the generated root/ directory into /tmp, or at least a path returned by tempfile.mkdtemp(), by default. This can make test runs significantly faster if done when /tmp is a tmpfs. If you are debugging a failed test, use the new --keep-root option to not clean up and pactest will print the location of the generated root/ test directory. Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--Makefile.am1
-rwxr-xr-xtest/pacman/pactest.py34
2 files changed, 24 insertions, 11 deletions
diff --git a/Makefile.am b/Makefile.am
index 32a08f71..259a455b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -21,7 +21,6 @@ check-local: test/pacman test/util src/pacman src/util
$(PYTHON) $(top_srcdir)/test/pacman/pactest.py --debug=1 \
--test $(top_srcdir)/test/pacman/tests/*.py \
-p $(top_builddir)/src/pacman/pacman
- rm -rf $(top_builddir)/root
$(SH) $(top_srcdir)/test/util/vercmptest.sh \
$(top_builddir)/src/util/vercmp
diff --git a/test/pacman/pactest.py b/test/pacman/pactest.py
index 69e655a0..64d56510 100755
--- a/test/pacman/pactest.py
+++ b/test/pacman/pactest.py
@@ -17,8 +17,12 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-import os, sys, glob
+import glob
from optparse import OptionParser
+import os
+import shutil
+import sys
+import tempfile
import pmenv
import util
@@ -63,6 +67,9 @@ def createOptParser():
parser.add_option("-t", "--test", action = "callback",
callback = globTests, dest = "testcases",
help = "specify test case(s)")
+ parser.add_option("--keep-root", action = "store_true",
+ dest = "keeproot", default = False,
+ help = "don't remove the generated pacman root filesystem")
parser.add_option("--nolog", action = "store_true",
dest = "nolog", default = False,
help = "do not log pacman messages")
@@ -80,7 +87,8 @@ def createOptParser():
if __name__ == "__main__":
# instantiate env and parser objects
- env = pmenv.pmenv()
+ root_path = tempfile.mkdtemp()
+ env = pmenv.pmenv(root=root_path)
opt_parser = createOptParser()
(opts, args) = opt_parser.parse_args()
@@ -95,16 +103,22 @@ if __name__ == "__main__":
if opts.testcases is None or len(opts.testcases) == 0:
print "no tests defined, nothing to do"
+ os.rmdir(root_path)
sys.exit(2)
- else:
- for i in opts.testcases:
- env.addtest(i)
- # run tests and print overall results
- env.run()
- env.results()
+ for i in opts.testcases:
+ env.addtest(i)
+
+ # run tests and print overall results
+ env.run()
+ env.results()
- if env.failed > 0:
- sys.exit(1)
+ if env.failed > 0:
+ sys.exit(1)
+
+ if not opts.keeproot:
+ shutil.rmtree(root_path)
+ else:
+ print "pacman testing root saved: %s" % root_path
# vim: set ts=4 sw=4 et: