summaryrefslogtreecommitdiff
path: root/tests/test_scripts/test_pcreate.py
diff options
context:
space:
mode:
authorMichael Merickel <michael@merickel.org>2018-10-14 21:11:41 -0500
committerMichael Merickel <michael@merickel.org>2018-10-14 21:11:41 -0500
commit3670c2cdb732d378ba6d38e72e7cd875ff726aa9 (patch)
tree5213452a778c992d42602efe7d3b3655a349abd5 /tests/test_scripts/test_pcreate.py
parent2b024920847481592b1a13d4006d2a9fa8881d72 (diff)
downloadpyramid-3670c2cdb732d378ba6d38e72e7cd875ff726aa9.tar.gz
pyramid-3670c2cdb732d378ba6d38e72e7cd875ff726aa9.tar.bz2
pyramid-3670c2cdb732d378ba6d38e72e7cd875ff726aa9.zip
move tests out of the package
Diffstat (limited to 'tests/test_scripts/test_pcreate.py')
-rw-r--r--tests/test_scripts/test_pcreate.py309
1 files changed, 309 insertions, 0 deletions
diff --git a/tests/test_scripts/test_pcreate.py b/tests/test_scripts/test_pcreate.py
new file mode 100644
index 000000000..0286614ce
--- /dev/null
+++ b/tests/test_scripts/test_pcreate.py
@@ -0,0 +1,309 @@
+import unittest
+
+
+class TestPCreateCommand(unittest.TestCase):
+ def setUp(self):
+ from pyramid.compat import NativeIO
+ self.out_ = NativeIO()
+
+ def out(self, msg):
+ self.out_.write(msg)
+
+ def _getTargetClass(self):
+ from pyramid.scripts.pcreate import PCreateCommand
+ return PCreateCommand
+
+ def _makeOne(self, *args, **kw):
+ effargs = ['pcreate']
+ effargs.extend(args)
+ tgt_class = kw.pop('target_class', self._getTargetClass())
+ cmd = tgt_class(effargs, **kw)
+ cmd.out = self.out
+ return cmd
+
+ def test_run_show_scaffolds_exist(self):
+ cmd = self._makeOne('-l')
+ result = cmd.run()
+ self.assertEqual(result, 0)
+ out = self.out_.getvalue()
+ self.assertTrue(out.count('Available scaffolds'))
+
+ def test_run_show_scaffolds_none_exist(self):
+ cmd = self._makeOne('-l')
+ cmd.scaffolds = []
+ result = cmd.run()
+ self.assertEqual(result, 0)
+ out = self.out_.getvalue()
+ self.assertTrue(out.count('No scaffolds available'))
+
+ def test_run_no_scaffold_no_args(self):
+ cmd = self._makeOne(quiet=True)
+ result = cmd.run()
+ self.assertEqual(result, 2)
+
+ def test_run_no_scaffold_name(self):
+ cmd = self._makeOne('dummy')
+ result = cmd.run()
+ self.assertEqual(result, 2)
+ out = self.out_.getvalue()
+ self.assertTrue(out.count(
+ 'You must provide at least one scaffold name'))
+
+ def test_no_project_name(self):
+ cmd = self._makeOne('-s', 'dummy')
+ result = cmd.run()
+ self.assertEqual(result, 2)
+ out = self.out_.getvalue()
+ self.assertTrue(out.count('You must provide a project name'))
+
+ def test_unknown_scaffold_name(self):
+ cmd = self._makeOne('-s', 'dummyXX', 'distro')
+ result = cmd.run()
+ self.assertEqual(result, 2)
+ out = self.out_.getvalue()
+ self.assertTrue(out.count('Unavailable scaffolds'))
+
+ def test_known_scaffold_single_rendered(self):
+ import os
+ cmd = self._makeOne('-s', 'dummy', 'Distro')
+ scaffold = DummyScaffold('dummy')
+ cmd.scaffolds = [scaffold]
+ cmd.pyramid_dist = DummyDist("0.1")
+ result = cmd.run()
+ self.assertEqual(result, 0)
+ self.assertEqual(
+ scaffold.output_dir,
+ os.path.normpath(os.path.join(os.getcwd(), 'Distro'))
+ )
+ self.assertEqual(
+ scaffold.vars,
+ {'project': 'Distro', 'egg': 'Distro', 'package': 'distro',
+ 'pyramid_version': '0.1', 'pyramid_docs_branch':'0.1-branch'})
+
+ def test_scaffold_with_package_name(self):
+ import os
+ cmd = self._makeOne('-s', 'dummy', '--package-name', 'dummy_package',
+ 'Distro')
+ scaffold = DummyScaffold('dummy')
+ cmd.scaffolds = [scaffold]
+ cmd.pyramid_dist = DummyDist("0.1")
+ result = cmd.run()
+
+ self.assertEqual(result, 0)
+ self.assertEqual(
+ scaffold.output_dir,
+ os.path.normpath(os.path.join(os.getcwd(), 'Distro'))
+ )
+ self.assertEqual(
+ scaffold.vars,
+ {'project': 'Distro', 'egg': 'dummy_package',
+ 'package': 'dummy_package', 'pyramid_version': '0.1',
+ 'pyramid_docs_branch':'0.1-branch'})
+
+
+ def test_scaffold_with_hyphen_in_project_name(self):
+ import os
+ cmd = self._makeOne('-s', 'dummy', 'Distro-')
+ scaffold = DummyScaffold('dummy')
+ cmd.scaffolds = [scaffold]
+ cmd.pyramid_dist = DummyDist("0.1")
+ result = cmd.run()
+ self.assertEqual(result, 0)
+ self.assertEqual(
+ scaffold.output_dir,
+ os.path.normpath(os.path.join(os.getcwd(), 'Distro-'))
+ )
+ self.assertEqual(
+ scaffold.vars,
+ {'project': 'Distro-', 'egg': 'Distro_', 'package': 'distro_',
+ 'pyramid_version': '0.1', 'pyramid_docs_branch':'0.1-branch'})
+
+ def test_known_scaffold_absolute_path(self):
+ import os
+ path = os.path.abspath('Distro')
+ cmd = self._makeOne('-s', 'dummy', path)
+ cmd.pyramid_dist = DummyDist("0.1")
+ scaffold = DummyScaffold('dummy')
+ cmd.scaffolds = [scaffold]
+ cmd.pyramid_dist = DummyDist("0.1")
+ result = cmd.run()
+ self.assertEqual(result, 0)
+ self.assertEqual(
+ scaffold.output_dir,
+ os.path.normpath(os.path.join(os.getcwd(), 'Distro'))
+ )
+ self.assertEqual(
+ scaffold.vars,
+ {'project': 'Distro', 'egg': 'Distro', 'package': 'distro',
+ 'pyramid_version': '0.1', 'pyramid_docs_branch':'0.1-branch'})
+
+ def test_known_scaffold_multiple_rendered(self):
+ import os
+ cmd = self._makeOne('-s', 'dummy1', '-s', 'dummy2', 'Distro')
+ scaffold1 = DummyScaffold('dummy1')
+ scaffold2 = DummyScaffold('dummy2')
+ cmd.scaffolds = [scaffold1, scaffold2]
+ cmd.pyramid_dist = DummyDist("0.1")
+ result = cmd.run()
+ self.assertEqual(result, 0)
+ self.assertEqual(
+ scaffold1.output_dir,
+ os.path.normpath(os.path.join(os.getcwd(), 'Distro'))
+ )
+ self.assertEqual(
+ scaffold1.vars,
+ {'project': 'Distro', 'egg': 'Distro', 'package': 'distro',
+ 'pyramid_version': '0.1', 'pyramid_docs_branch':'0.1-branch'})
+ self.assertEqual(
+ scaffold2.output_dir,
+ os.path.normpath(os.path.join(os.getcwd(), 'Distro'))
+ )
+ self.assertEqual(
+ scaffold2.vars,
+ {'project': 'Distro', 'egg': 'Distro', 'package': 'distro',
+ 'pyramid_version': '0.1', 'pyramid_docs_branch':'0.1-branch'})
+
+ def test_known_scaffold_with_path_as_project_target_rendered(self):
+ import os
+ cmd = self._makeOne('-s', 'dummy', '/tmp/foo/Distro/')
+ scaffold = DummyScaffold('dummy')
+ cmd.scaffolds = [scaffold]
+ cmd.pyramid_dist = DummyDist("0.1")
+ result = cmd.run()
+ self.assertEqual(result, 0)
+ self.assertEqual(
+ scaffold.output_dir,
+ os.path.normpath(os.path.join(os.getcwd(), '/tmp/foo/Distro'))
+ )
+ self.assertEqual(
+ scaffold.vars,
+ {'project': 'Distro', 'egg': 'Distro', 'package': 'distro',
+ 'pyramid_version': '0.1', 'pyramid_docs_branch':'0.1-branch'})
+
+
+ def test_scaffold_with_prod_pyramid_version(self):
+ cmd = self._makeOne('-s', 'dummy', 'Distro')
+ scaffold = DummyScaffold('dummy')
+ cmd.scaffolds = [scaffold]
+ cmd.pyramid_dist = DummyDist("0.2")
+ result = cmd.run()
+ self.assertEqual(result, 0)
+ self.assertEqual(
+ scaffold.vars,
+ {'project': 'Distro', 'egg': 'Distro', 'package': 'distro',
+ 'pyramid_version': '0.2', 'pyramid_docs_branch':'0.2-branch'})
+
+ def test_scaffold_with_prod_pyramid_long_version(self):
+ cmd = self._makeOne('-s', 'dummy', 'Distro')
+ scaffold = DummyScaffold('dummy')
+ cmd.scaffolds = [scaffold]
+ cmd.pyramid_dist = DummyDist("0.2.1")
+ result = cmd.run()
+ self.assertEqual(result, 0)
+ self.assertEqual(
+ scaffold.vars,
+ {'project': 'Distro', 'egg': 'Distro', 'package': 'distro',
+ 'pyramid_version': '0.2.1', 'pyramid_docs_branch':'0.2-branch'})
+
+ def test_scaffold_with_prod_pyramid_unparsable_version(self):
+ cmd = self._makeOne('-s', 'dummy', 'Distro')
+ scaffold = DummyScaffold('dummy')
+ cmd.scaffolds = [scaffold]
+ cmd.pyramid_dist = DummyDist("abc")
+ result = cmd.run()
+ self.assertEqual(result, 0)
+ self.assertEqual(
+ scaffold.vars,
+ {'project': 'Distro', 'egg': 'Distro', 'package': 'distro',
+ 'pyramid_version': 'abc', 'pyramid_docs_branch':'latest'})
+
+ def test_scaffold_with_dev_pyramid_version(self):
+ cmd = self._makeOne('-s', 'dummy', 'Distro')
+ scaffold = DummyScaffold('dummy')
+ cmd.scaffolds = [scaffold]
+ cmd.pyramid_dist = DummyDist("0.12dev")
+ result = cmd.run()
+ self.assertEqual(result, 0)
+ self.assertEqual(
+ scaffold.vars,
+ {'project': 'Distro', 'egg': 'Distro', 'package': 'distro',
+ 'pyramid_version': '0.12dev',
+ 'pyramid_docs_branch': 'master'})
+
+ def test_scaffold_with_dev_pyramid_long_version(self):
+ cmd = self._makeOne('-s', 'dummy', 'Distro')
+ scaffold = DummyScaffold('dummy')
+ cmd.scaffolds = [scaffold]
+ cmd.pyramid_dist = DummyDist("0.10.1dev")
+ result = cmd.run()
+ self.assertEqual(result, 0)
+ self.assertEqual(
+ scaffold.vars,
+ {'project': 'Distro', 'egg': 'Distro', 'package': 'distro',
+ 'pyramid_version': '0.10.1dev',
+ 'pyramid_docs_branch': 'master'})
+
+ def test_confirm_override_conflicting_name(self):
+ from pyramid.scripts.pcreate import PCreateCommand
+ class YahInputPCreateCommand(PCreateCommand):
+ def confirm_bad_name(self, pkg_name):
+ return True
+ cmd = self._makeOne('-s', 'dummy', 'Unittest', target_class=YahInputPCreateCommand)
+ scaffold = DummyScaffold('dummy')
+ cmd.scaffolds = [scaffold]
+ cmd.pyramid_dist = DummyDist("0.10.1dev")
+ result = cmd.run()
+ self.assertEqual(result, 0)
+ self.assertEqual(
+ scaffold.vars,
+ {'project': 'Unittest', 'egg': 'Unittest', 'package': 'unittest',
+ 'pyramid_version': '0.10.1dev',
+ 'pyramid_docs_branch': 'master'})
+
+ def test_force_override_conflicting_name(self):
+ cmd = self._makeOne('-s', 'dummy', 'Unittest', '--ignore-conflicting-name')
+ scaffold = DummyScaffold('dummy')
+ cmd.scaffolds = [scaffold]
+ cmd.pyramid_dist = DummyDist("0.10.1dev")
+ result = cmd.run()
+ self.assertEqual(result, 0)
+ self.assertEqual(
+ scaffold.vars,
+ {'project': 'Unittest', 'egg': 'Unittest', 'package': 'unittest',
+ 'pyramid_version': '0.10.1dev',
+ 'pyramid_docs_branch': 'master'})
+
+ def test_force_override_site_name(self):
+ from pyramid.scripts.pcreate import PCreateCommand
+ class NayInputPCreateCommand(PCreateCommand):
+ def confirm_bad_name(self, pkg_name):
+ return False
+ cmd = self._makeOne('-s', 'dummy', 'Site', target_class=NayInputPCreateCommand)
+ scaffold = DummyScaffold('dummy')
+ cmd.scaffolds = [scaffold]
+ cmd.pyramid_dist = DummyDist("0.10.1dev")
+ result = cmd.run()
+ self.assertEqual(result, 2)
+
+
+class Test_main(unittest.TestCase):
+ def _callFUT(self, argv):
+ from pyramid.scripts.pcreate import main
+ return main(argv, quiet=True)
+
+ def test_it(self):
+ result = self._callFUT(['pcreate'])
+ self.assertEqual(result, 2)
+
+class DummyScaffold(object):
+ def __init__(self, name):
+ self.name = name
+
+ def run(self, command, output_dir, vars):
+ self.command = command
+ self.output_dir = output_dir
+ self.vars = vars
+
+class DummyDist(object):
+ def __init__(self, version):
+ self.version = version