add test-pip-install
authorBrian Warner <warner@lothar.com>
Tue, 16 Jun 2015 20:41:21 +0000 (13:41 -0700)
committerBrian Warner <warner@lothar.com>
Tue, 16 Jun 2015 20:46:43 +0000 (13:46 -0700)
Makefile
misc/build_helpers/test-pip-install.py [new file with mode: 0644]

index 97587cd4e60c98fb2bedfd79c486d395059276e7..9f6e277066e204aaf959950eb27a95e9177deb71 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -287,6 +287,9 @@ test-desert-island:
        $(MAKE) 2>&1 | tee make.out
        $(PYTHON) misc/build_helpers/check-build.py make.out no-downloads
 
+.PHONY: test-pip-install
+test-pip-install:
+       $(PYTHON) misc/build_helpers/test-pip-install.py
 
 # TARBALL GENERATION
 .PHONY: tarballs
diff --git a/misc/build_helpers/test-pip-install.py b/misc/build_helpers/test-pip-install.py
new file mode 100644 (file)
index 0000000..c24e02f
--- /dev/null
@@ -0,0 +1,31 @@
+
+import os, shutil
+from subprocess import check_call
+
+# Install tahoe into a new virtualenv, move aside the source tree, run a test
+# with the installed tahoe. This ensures that the installed code isn't
+# depending upon anything from the source tree. Requires 'pip' and
+# 'virtualenv' to be installed, and enough compilers/libraries (libffi-dev)
+# to enable 'pip install'.
+
+# This runs a lot faster if you've cached wheels first. Edit ~/.pip/pip.conf
+# to have [global] wheel-dir=find-links=/HOME/.pip/wheels, then run 'pip
+# wheel .' from the tahoe tree.
+
+assert os.path.exists("Tahoe.home"), "Run this from the top of the source tree."
+VE = "test-pip-install-virtualenv"
+
+print "creating virtualenv.."
+if os.path.exists(VE):
+    shutil.rmtree(VE)
+check_call(["virtualenv", VE])
+print "running 'pip install .' from virtualenv.."
+check_call(["%s/bin/pip" % VE, "install", "."])
+try:
+    print "moving src/ out of the away"
+    os.rename("src", "src-disabled-by-test-pip-install")
+    print "running 'trial allmydata.test.test_web' from virtualenv.."
+    rc = check_call(["%s/bin/trial" % VE, "allmydata.test.test_web"])
+finally:
+    print "moving src/ back"
+    os.rename("src-disabled-by-test-pip-install", "src")