From 6e40cd75cd88ef930ced8c1df15ebc93dbf683d4 Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Mon, 30 Aug 2010 11:03:00 -0400 Subject: This is a better fix than the previous commit, since it uses a principled approach to finding the bin directory. Thanks go to Gary Poster. --- src/mailman/app/docs/hooks.txt | 4 ++-- src/mailman/testing/layers.py | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/mailman/app/docs/hooks.txt b/src/mailman/app/docs/hooks.txt index e5b3f1ae1..efd5530f5 100644 --- a/src/mailman/app/docs/hooks.txt +++ b/src/mailman/app/docs/hooks.txt @@ -48,11 +48,11 @@ we can't run those initialization steps in process, so call a command line script that will produce no output to force the hooks to run. >>> import subprocess + >>> from mailman.testing.layers import ConfigLayer >>> def call(): ... proc = subprocess.Popen( ... 'bin/mailman lists --domain ignore -q'.split(), - ... # testrunner runs from ./parts/test/working-directory - ... cwd='../../..', + ... cwd=ConfigLayer.root_directory, ... env=dict(MAILMAN_CONFIG_FILE=config_path, ... PYTHONPATH=config_directory), ... stdout=subprocess.PIPE, stderr=subprocess.PIPE) diff --git a/src/mailman/testing/layers.py b/src/mailman/testing/layers.py index 34dc46807..8f16d5940 100644 --- a/src/mailman/testing/layers.py +++ b/src/mailman/testing/layers.py @@ -217,6 +217,21 @@ class ConfigLayer(MockAndMonkeyLayer): if len(os.environ.get('MM_VERBOSE_TESTLOG', '').strip()) > 0: cls.stderr = True + # The top of our source tree, for tests that care (e.g. hooks.txt). + root_directory = None + + @classmethod + def set_root_directory(cls, directory): + """Set the directory at the root of our source tree. + + zc.recipe.testrunner runs from parts/test/working-directory, but + that's actually changed over the life of the package. Some tests + care, e.g. because they need to find our built-out bin directory. + Fortunately, buildout can give us this information. See the + `buildout.cfg` file for where this method is called. + """ + cls.root_directory = directory + class SMTPLayer(ConfigLayer): -- cgit v1.2.3-70-g09d2