From d8e60f82a48f7ac33f72f118e71bf897c0466dd1 Mon Sep 17 00:00:00 2001
From: Brian Warner <warner@lothar.com>
Date: Tue, 16 Jun 2015 13:41:21 -0700
Subject: [PATCH] add test-pip-install

---
 Makefile                               |  3 +++
 misc/build_helpers/test-pip-install.py | 31 ++++++++++++++++++++++++++
 2 files changed, 34 insertions(+)
 create mode 100644 misc/build_helpers/test-pip-install.py

diff --git a/Makefile b/Makefile
index 97587cd4..9f6e2770 100644
--- 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
index 00000000..c24e02fa
--- /dev/null
+++ b/misc/build_helpers/test-pip-install.py
@@ -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")
-- 
2.45.2