summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Jerdonek <chris.jerdonek@gmail.com>2012-04-24 03:24:42 -0700
committerChris Jerdonek <chris.jerdonek@gmail.com>2012-04-24 03:24:42 -0700
commitff36b627772bc37263093f2d01fb08e699472c75 (patch)
tree202ba34f34084bdbaf37709c3ae51d3868a3bde3
parent9447214e6bd58376bf12c29b1d9e929a0f827d60 (diff)
downloadpystache-ff36b627772bc37263093f2d01fb08e699472c75.tar.gz
Test scripts now work with and without source.
-rw-r--r--MANIFEST.in1
-rw-r--r--pystache/tests/main.py41
-rw-r--r--setup.py2
-rw-r--r--test_pystache.py11
-rw-r--r--tox.ini17
5 files changed, 57 insertions, 15 deletions
diff --git a/MANIFEST.in b/MANIFEST.in
index e6956db..56a1d52 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -2,6 +2,7 @@ include LICENSE
include HISTORY.rst
include README.rst
include tox.ini
+include test_pystache.py
# You cannot use package_data, for example, to include data files in a
# source distribution when using Distribute.
recursive-include pystache/tests *.mustache *.txt
diff --git a/pystache/tests/main.py b/pystache/tests/main.py
index bcc30cc..7342c91 100644
--- a/pystache/tests/main.py
+++ b/pystache/tests/main.py
@@ -19,6 +19,11 @@ from pystache.tests.doctesting import get_doctests
from pystache.tests.spectesting import get_spec_tests
+# If this command option is present, then the spec test and doctest directories
+# will be inserted if not provided.
+FROM_SOURCE_OPTION = "--from-source"
+
+
def run_tests(sys_argv):
"""
Run all tests in the project.
@@ -28,27 +33,41 @@ def run_tests(sys_argv):
sys_argv: a reference to sys.argv.
"""
+ should_source_exist = False
+ spec_test_dir = None
+ project_dir = None
+
+ if len(sys_argv) > 1 and sys_argv[1] == FROM_SOURCE_OPTION:
+ should_source_exist = True
+ sys_argv.pop(1)
+
+ # TODO: use logging module
+ print "pystache: running tests: expecting source: %s" % should_source_exist
+
try:
# TODO: use optparse command options instead.
- project_dir = sys_argv[1]
+ spec_test_dir = sys_argv[1]
sys_argv.pop(1)
except IndexError:
- project_dir = PROJECT_DIR
+ if should_source_exist:
+ spec_test_dir = SPEC_TEST_DIR
try:
# TODO: use optparse command options instead.
- spec_test_dir = sys_argv[1]
+ project_dir = sys_argv[1]
sys_argv.pop(1)
except IndexError:
- spec_test_dir = SPEC_TEST_DIR
+ if should_source_exist:
+ project_dir = PROJECT_DIR
if len(sys_argv) <= 1 or sys_argv[-1].startswith("-"):
# Then no explicit module or test names were provided, so
# auto-detect all unit tests.
module_names = _discover_test_modules(PACKAGE_DIR)
sys_argv.extend(module_names)
- # Add the current module for unit tests contained here.
- sys_argv.append(__name__)
+ if project_dir is not None:
+ # Add the current module for unit tests contained here.
+ sys_argv.append(__name__)
_PystacheTestProgram._text_doctest_dir = project_dir
_PystacheTestProgram._spec_test_dir = spec_test_dir
@@ -123,10 +142,12 @@ class _PystacheTestProgram(TestProgram):
# http://docs.python.org/library/unittest.html#unittest.TestSuite
tests = self.test
- doctest_suites = get_doctests(self._text_doctest_dir)
- tests.addTests(doctest_suites)
+ if self._text_doctest_dir is not None:
+ doctest_suites = get_doctests(self._text_doctest_dir)
+ tests.addTests(doctest_suites)
- spec_testcases = get_spec_tests(self._spec_test_dir)
- tests.addTests(spec_testcases)
+ if self._spec_test_dir is not None:
+ spec_testcases = get_spec_tests(self._spec_test_dir)
+ tests.addTests(spec_testcases)
TestProgram.runTests(self)
diff --git a/setup.py b/setup.py
index ee42dfe..6072744 100644
--- a/setup.py
+++ b/setup.py
@@ -2,7 +2,7 @@
# coding: utf-8
"""
-This script supports distributing Pystache and testing it from a source distribution.
+This script supports publishing Pystache to PyPI.
Below are instructions to pystache maintainers on how to push a new
version of pystache to PyPI--
diff --git a/test_pystache.py b/test_pystache.py
index 0f997e5..9a1a3ca 100644
--- a/test_pystache.py
+++ b/test_pystache.py
@@ -15,7 +15,16 @@ in Python 2.4:
"""
-from pystache.commands.test import main
+import sys
+
+from pystache.commands import test
+from pystache.tests.main import FROM_SOURCE_OPTION
+
+
+def main(sys_argv=sys.argv):
+ sys.argv.insert(1, FROM_SOURCE_OPTION)
+ test.main()
+
if __name__=='__main__':
main()
diff --git a/tox.ini b/tox.ini
index 72c5369..d1aef0d 100644
--- a/tox.ini
+++ b/tox.ini
@@ -3,7 +3,7 @@
# http://pypi.python.org/pypi/tox
#
[tox]
-envlist = py24,py25,py26,py27,py27-yaml,py31,py32
+envlist = py24,py25,py26,py27,py27-yaml,py27-noargs,py31,py32
[testenv]
# Change the working directory so that we don't import the pystache located
@@ -11,13 +11,24 @@ envlist = py24,py25,py26,py27,py27-yaml,py31,py32
changedir =
{envbindir}
commands =
- pystache-test {toxinidir} {toxinidir}/ext/spec/specs
+ pystache-test {toxinidir}/ext/spec/specs {toxinidir}
# Check that the spec tests work with PyYAML.
[testenv:py27-yaml]
+basepython =
+ python2.7
deps =
PyYAML
changedir =
{envbindir}
commands =
- pystache-test {toxinidir} {toxinidir}/ext/spec/specs
+ pystache-test {toxinidir}/ext/spec/specs {toxinidir}
+
+# Check that pystache-test works from an install with no arguments.
+[testenv:py27-noargs]
+basepython =
+ python2.7
+changedir =
+ {envbindir}
+commands =
+ pystache-test