summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pyramid/tests/test_scripts/test_pcreate.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/pyramid/tests/test_scripts/test_pcreate.py b/pyramid/tests/test_scripts/test_pcreate.py
index 0286614ce..d6e6814fa 100644
--- a/pyramid/tests/test_scripts/test_pcreate.py
+++ b/pyramid/tests/test_scripts/test_pcreate.py
@@ -1,6 +1,32 @@
+from contextlib import contextmanager
import unittest
+@contextmanager
+def patch_argparser(parser):
+ result = {}
+ old_exit = parser.exit
+ old_error = parser.error
+ try:
+ def dummy_exit(status=0, message=None):
+ result['status'] = status
+ result['message'] = message
+ raise ArgumentParserExit
+
+ def dummy_error(message):
+ result['message'] = message
+
+ parser.exit = dummy_exit
+ parser.error = dummy_error
+ yield result
+ finally:
+ parser.exit = old_exit
+ parser.error = old_error
+
+class ArgumentParserExit(Exception):
+ pass
+
+
class TestPCreateCommand(unittest.TestCase):
def setUp(self):
from pyramid.compat import NativeIO
@@ -49,6 +75,19 @@ class TestPCreateCommand(unittest.TestCase):
self.assertTrue(out.count(
'You must provide at least one scaffold name'))
+ def test_test_no_project_name(self):
+ cmd = self._makeOne('-s', 'dummy')
+ with patch_argparser(cmd.parser) as result:
+ try:
+ cmd.run()
+ except ArgumentParserExit:
+ self.assertEqual(result['status'], 2)
+ self.assertTrue(result['message'].startswith(
+ 'usage: pcreate [-h] [-s SCAFFOLD_NAME] [-t SCAFFOLD_NAME] [-l]'
+ ))
+ else: # pragma: no cover
+ raise AssertionError
+
def test_no_project_name(self):
cmd = self._makeOne('-s', 'dummy')
result = cmd.run()