From a0e3c586b2e691657bd30b293c42900cb067a859 Mon Sep 17 00:00:00 2001
From: Brian Warner <warner@lothar.com>
Date: Tue, 14 Apr 2009 13:14:00 -0700
Subject: [PATCH] fix quicktest: stop using setuptools, add
 misc/run-with-pythonpath.py, to make it run faster

---
 Makefile                    | 10 +++++-----
 misc/run-with-pythonpath.py | 39 +++++++++++++++++++++++++++++++++++++
 2 files changed, 44 insertions(+), 5 deletions(-)
 create mode 100644 misc/run-with-pythonpath.py

diff --git a/Makefile b/Makefile
index 02ab25ad..1cc40fcf 100644
--- a/Makefile
+++ b/Makefile
@@ -112,9 +112,6 @@ TEST=allmydata
 test: build src/allmydata/_version.py
 	$(PYTHON) setup.py test $(TRIALARGS) -s $(TEST)
 
-quicktest: .built .checked-deps
-	$(PYTHON) setup.py test $(TRIALARGS) -s $(TEST)
-
 fuse-test: .built .checked-deps
 	$(RUNPP) -d contrib/fuse -p -c runtests.py
 
@@ -122,9 +119,12 @@ test-figleaf: build src/allmydata/_version.py
 	rm -f .figleaf
 	$(PYTHON) setup.py trial --reporter=bwverbose-figleaf -s $(TEST)
 
-quicktest-figleaf: src/allmydata/_version.py
+quicktest:
+	$(PYTHON) misc/run-with-pythonpath.py trial $(TRIALARGS) $(TEST)
+
+quicktest-figleaf:
 	rm -f .figleaf
-	$(PYTHON) setup.py trial --reporter=bwverbose-figleaf -s $(TEST)
+	$(PYTHON) misc/run-with-pythonpath.py trial --reporter=bwverbose-figleaf $(TEST)
 
 figleaf-output:
 	$(RUNPP) -p -c "misc/figleaf2html -d coverage-html -r src -x misc/figleaf.excludes"
diff --git a/misc/run-with-pythonpath.py b/misc/run-with-pythonpath.py
new file mode 100644
index 00000000..e23a15de
--- /dev/null
+++ b/misc/run-with-pythonpath.py
@@ -0,0 +1,39 @@
+# -*- python -*-
+# you must invoke this with an explicit python, from the tree root
+
+"""Run an arbitrary command with a PYTHONPATH that will include the Tahoe
+code, including dependent libraries. Run this like:
+
+ python misc/run-with-pythonpath.py python foo.py
+or
+ python misc/run-with-pythonpath.py trial -r poll allmydata.test.test_util
+
+"""
+
+import os, sys, subprocess
+
+# figure out where support/lib/pythonX.X/site-packages is
+# add it to os.environ["PYTHONPATH"]
+# spawn the child process
+
+
+def pylibdir(prefixdir):
+    pyver = "python%d.%d" % (sys.version_info[:2])
+    if sys.platform == "win32":
+        return os.path.join(prefixdir, "Lib", "site-packages")
+    else:
+        return os.path.join(prefixdir, "lib", pyver, "site-packages")
+
+basedir = os.path.dirname(os.path.abspath(__file__))
+supportlib = pylibdir(os.path.abspath("support"))
+
+oldpp = os.environ.get("PYTHONPATH", "").split(os.pathsep)
+if oldpp == [""]:
+    # grr silly split() behavior
+    oldpp = []
+newpp = os.pathsep.join(oldpp + [supportlib,])
+os.environ['PYTHONPATH'] = newpp
+
+command = sys.argv[1:]
+rc = subprocess.call(command)
+sys.exit(rc)
-- 
2.45.2