summaryrefslogtreecommitdiff
path: root/tests/test_scaffolds/test_copydir.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_scaffolds/test_copydir.py')
-rw-r--r--tests/test_scaffolds/test_copydir.py426
1 files changed, 273 insertions, 153 deletions
diff --git a/tests/test_scaffolds/test_copydir.py b/tests/test_scaffolds/test_copydir.py
index 915cc5033..1f046f9e8 100644
--- a/tests/test_scaffolds/test_copydir.py
+++ b/tests/test_scaffolds/test_copydir.py
@@ -3,39 +3,47 @@ import unittest
import os
import pkg_resources
+
class Test_copy_dir(unittest.TestCase):
def setUp(self):
import tempfile
from pyramid.compat import NativeIO
+
self.dirname = tempfile.mkdtemp()
self.out = NativeIO()
- self.fixturetuple = ('tests.test_scaffolds',
- 'fixture_scaffold')
+ self.fixturetuple = ('tests.test_scaffolds', 'fixture_scaffold')
def tearDown(self):
import shutil
+
shutil.rmtree(self.dirname, ignore_errors=True)
self.out.close()
def _callFUT(self, *arg, **kw):
kw['out_'] = self.out
from pyramid.scaffolds.copydir import copy_dir
+
return copy_dir(*arg, **kw)
def test_copy_source_as_pkg_resource(self):
- vars = {'package':'mypackage'}
- self._callFUT(self.fixturetuple,
- self.dirname,
- vars,
- 1, False,
- template_renderer=dummy_template_renderer)
+ vars = {'package': 'mypackage'}
+ self._callFUT(
+ self.fixturetuple,
+ self.dirname,
+ vars,
+ 1,
+ False,
+ template_renderer=dummy_template_renderer,
+ )
result = self.out.getvalue()
self.assertTrue('Creating' in result)
self.assertTrue(
- 'Copying fixture_scaffold/+package+/__init__.py_tmpl to' in result)
+ 'Copying fixture_scaffold/+package+/__init__.py_tmpl to' in result
+ )
source = pkg_resources.resource_filename(
'tests.test_scaffolds',
- 'fixture_scaffold/+package+/__init__.py_tmpl')
+ 'fixture_scaffold/+package+/__init__.py_tmpl',
+ )
target = os.path.join(self.dirname, 'mypackage', '__init__.py')
with open(target, 'r') as f:
tcontent = f.read()
@@ -44,19 +52,23 @@ class Test_copy_dir(unittest.TestCase):
self.assertEqual(scontent, tcontent)
def test_copy_source_as_dirname(self):
- vars = {'package':'mypackage'}
+ vars = {'package': 'mypackage'}
source = pkg_resources.resource_filename(*self.fixturetuple)
- self._callFUT(source,
- self.dirname,
- vars,
- 1, False,
- template_renderer=dummy_template_renderer)
+ self._callFUT(
+ source,
+ self.dirname,
+ vars,
+ 1,
+ False,
+ template_renderer=dummy_template_renderer,
+ )
result = self.out.getvalue()
self.assertTrue('Creating' in result)
self.assertTrue('Copying __init__.py_tmpl to' in result)
source = pkg_resources.resource_filename(
'tests.test_scaffolds',
- 'fixture_scaffold/+package+/__init__.py_tmpl')
+ 'fixture_scaffold/+package+/__init__.py_tmpl',
+ )
target = os.path.join(self.dirname, 'mypackage', '__init__.py')
with open(target, 'r') as f:
tcontent = f.read()
@@ -65,58 +77,78 @@ class Test_copy_dir(unittest.TestCase):
self.assertEqual(scontent, tcontent)
def test_content_is_same_message(self):
- vars = {'package':'mypackage'}
+ vars = {'package': 'mypackage'}
source = pkg_resources.resource_filename(*self.fixturetuple)
- self._callFUT(source,
- self.dirname,
- vars,
- 2, False,
- template_renderer=dummy_template_renderer)
- self._callFUT(source,
- self.dirname,
- vars,
- 2, False,
- template_renderer=dummy_template_renderer)
+ self._callFUT(
+ source,
+ self.dirname,
+ vars,
+ 2,
+ False,
+ template_renderer=dummy_template_renderer,
+ )
+ self._callFUT(
+ source,
+ self.dirname,
+ vars,
+ 2,
+ False,
+ template_renderer=dummy_template_renderer,
+ )
result = self.out.getvalue()
- self.assertTrue('%s already exists (same content)' % \
- os.path.join(self.dirname, 'mypackage', '__init__.py') in result)
+ self.assertTrue(
+ '%s already exists (same content)'
+ % os.path.join(self.dirname, 'mypackage', '__init__.py')
+ in result
+ )
def test_direxists_message(self):
- vars = {'package':'mypackage'}
+ vars = {'package': 'mypackage'}
source = pkg_resources.resource_filename(*self.fixturetuple)
# if not os.path.exists(self.dirname):
# os.mkdir(self.dirname)
- self._callFUT(source,
- self.dirname,
- vars,
- 2, False,
- template_renderer=dummy_template_renderer)
+ self._callFUT(
+ source,
+ self.dirname,
+ vars,
+ 2,
+ False,
+ template_renderer=dummy_template_renderer,
+ )
result = self.out.getvalue()
self.assertTrue('Directory %s exists' % self.dirname in result, result)
def test_overwrite_false(self):
- vars = {'package':'mypackage'}
+ vars = {'package': 'mypackage'}
source = pkg_resources.resource_filename(*self.fixturetuple)
- self._callFUT(source,
- self.dirname,
- vars,
- 1, False,
- overwrite=False,
- template_renderer=dummy_template_renderer)
+ self._callFUT(
+ source,
+ self.dirname,
+ vars,
+ 1,
+ False,
+ overwrite=False,
+ template_renderer=dummy_template_renderer,
+ )
# toplevel file
toplevel = os.path.join(self.dirname, 'mypackage', '__init__.py')
with open(toplevel, 'w') as f:
f.write('These are the words you are looking for.')
# sub directory file
- sub = os.path.join(self.dirname, 'mypackage', 'templates', 'mytemplate.pt')
+ sub = os.path.join(
+ self.dirname, 'mypackage', 'templates', 'mytemplate.pt'
+ )
with open(sub, 'w') as f:
f.write('These are the words you are looking for.')
- self._callFUT(source,
- self.dirname,
- vars,
- 1, False,
- overwrite=False,
- template_renderer=dummy_template_renderer)
+ self._callFUT(
+ source,
+ self.dirname,
+ vars,
+ 1,
+ False,
+ overwrite=False,
+ template_renderer=dummy_template_renderer,
+ )
with open(toplevel, 'r') as f:
tcontent = f.read()
self.assertEqual('These are the words you are looking for.', tcontent)
@@ -125,57 +157,79 @@ class Test_copy_dir(unittest.TestCase):
self.assertEqual('These are the words you are looking for.', tcontent)
def test_overwrite_true(self):
- vars = {'package':'mypackage'}
+ vars = {'package': 'mypackage'}
source = pkg_resources.resource_filename(*self.fixturetuple)
- self._callFUT(source,
- self.dirname,
- vars,
- 1, False,
- overwrite=True,
- template_renderer=dummy_template_renderer)
+ self._callFUT(
+ source,
+ self.dirname,
+ vars,
+ 1,
+ False,
+ overwrite=True,
+ template_renderer=dummy_template_renderer,
+ )
# toplevel file
toplevel = os.path.join(self.dirname, 'mypackage', '__init__.py')
with open(toplevel, 'w') as f:
f.write('These are not the words you are looking for.')
# sub directory file
- sub = os.path.join(self.dirname, 'mypackage', 'templates', 'mytemplate.pt')
+ sub = os.path.join(
+ self.dirname, 'mypackage', 'templates', 'mytemplate.pt'
+ )
with open(sub, 'w') as f:
f.write('These are not the words you are looking for.')
- self._callFUT(source,
- self.dirname,
- vars,
- 1, False,
- overwrite=True,
- template_renderer=dummy_template_renderer)
+ self._callFUT(
+ source,
+ self.dirname,
+ vars,
+ 1,
+ False,
+ overwrite=True,
+ template_renderer=dummy_template_renderer,
+ )
with open(toplevel, 'r') as f:
tcontent = f.read()
- self.assertNotEqual('These are not the words you are looking for.', tcontent)
+ self.assertNotEqual(
+ 'These are not the words you are looking for.', tcontent
+ )
with open(sub, 'r') as f:
tcontent = f.read()
- self.assertNotEqual('These are not the words you are looking for.', tcontent)
-
+ self.assertNotEqual(
+ 'These are not the words you are looking for.', tcontent
+ )
+
def test_detect_SkipTemplate(self):
- vars = {'package':'mypackage'}
+ vars = {'package': 'mypackage'}
source = pkg_resources.resource_filename(*self.fixturetuple)
+
def dummy_template_renderer(*args, **kwargs):
from pyramid.scaffolds.copydir import SkipTemplate
+
raise SkipTemplate
- self._callFUT(source,
- self.dirname,
- vars,
- 1, False,
- template_renderer=dummy_template_renderer)
+
+ self._callFUT(
+ source,
+ self.dirname,
+ vars,
+ 1,
+ False,
+ template_renderer=dummy_template_renderer,
+ )
def test_query_interactive(self):
from pyramid.scaffolds import copydir
- vars = {'package':'mypackage'}
+
+ vars = {'package': 'mypackage'}
source = pkg_resources.resource_filename(*self.fixturetuple)
- self._callFUT(source,
- self.dirname,
- vars,
- 1, False,
- overwrite=False,
- template_renderer=dummy_template_renderer)
+ self._callFUT(
+ source,
+ self.dirname,
+ vars,
+ 1,
+ False,
+ overwrite=False,
+ template_renderer=dummy_template_renderer,
+ )
target = os.path.join(self.dirname, 'mypackage', '__init__.py')
with open(target, 'w') as f:
f.write('These are not the words you are looking for.')
@@ -183,35 +237,41 @@ class Test_copy_dir(unittest.TestCase):
# execution of a branch
original_code_object = copydir.query_interactive
copydir.query_interactive = lambda *args, **kwargs: False
- self._callFUT(source,
- self.dirname,
- vars,
- 1, False,
- interactive=True,
- overwrite=False,
- template_renderer=dummy_template_renderer)
+ self._callFUT(
+ source,
+ self.dirname,
+ vars,
+ 1,
+ False,
+ interactive=True,
+ overwrite=False,
+ template_renderer=dummy_template_renderer,
+ )
copydir.query_interactive = original_code_object
-class Test_raise_SkipTemplate(unittest.TestCase):
+class Test_raise_SkipTemplate(unittest.TestCase):
def _callFUT(self, *arg, **kw):
from pyramid.scaffolds.copydir import skip_template
+
return skip_template(*arg, **kw)
def test_raise_SkipTemplate(self):
from pyramid.scaffolds.copydir import SkipTemplate
- self.assertRaises(SkipTemplate,
- self._callFUT, True, "exc-message")
-class Test_makedirs(unittest.TestCase):
+ self.assertRaises(SkipTemplate, self._callFUT, True, "exc-message")
+
+class Test_makedirs(unittest.TestCase):
def _callFUT(self, *arg, **kw):
from pyramid.scaffolds.copydir import makedirs
+
return makedirs(*arg, **kw)
def test_makedirs_parent_dir(self):
import shutil
import tempfile
+
tmpdir = tempfile.mkdtemp()
target = os.path.join(tmpdir, 'nonexistent_subdir')
self._callFUT(target, 2, None)
@@ -220,100 +280,118 @@ class Test_makedirs(unittest.TestCase):
def test_makedirs_no_parent_dir(self):
import shutil
import tempfile
+
tmpdir = tempfile.mkdtemp()
target = os.path.join(tmpdir, 'nonexistent_subdir', 'non2')
self._callFUT(target, 2, None)
shutil.rmtree(tmpdir)
-class Test_support_functions(unittest.TestCase):
+class Test_support_functions(unittest.TestCase):
def _call_html_quote(self, *arg, **kw):
from pyramid.scaffolds.copydir import html_quote
+
return html_quote(*arg, **kw)
def _call_url_quote(self, *arg, **kw):
from pyramid.scaffolds.copydir import url_quote
+
return url_quote(*arg, **kw)
def _call_test(self, *arg, **kw):
from pyramid.scaffolds.copydir import test
+
return test(*arg, **kw)
def test_html_quote(self):
import string
+
s = None
self.assertEqual(self._call_html_quote(s), '')
s = string.ascii_letters
self.assertEqual(self._call_html_quote(s), s)
s = "Λεμεσός"
- self.assertEqual(self._call_url_quote(s),
- "%CE%9B%CE%B5%CE%BC%CE%B5%CF%83%CF%8C%CF%82")
+ self.assertEqual(
+ self._call_url_quote(s),
+ "%CE%9B%CE%B5%CE%BC%CE%B5%CF%83%CF%8C%CF%82",
+ )
def test_url_quote(self):
import string
+
s = None
self.assertEqual(self._call_url_quote(s), '')
s = string.ascii_letters
self.assertEqual(self._call_url_quote(s), s)
s = "Λεμεσός"
- self.assertEqual(self._call_url_quote(s),
- "%CE%9B%CE%B5%CE%BC%CE%B5%CF%83%CF%8C%CF%82")
+ self.assertEqual(
+ self._call_url_quote(s),
+ "%CE%9B%CE%B5%CE%BC%CE%B5%CF%83%CF%8C%CF%82",
+ )
def test_test(self):
conf = True
true_cond = "faked"
- self.assertEqual(self._call_test(
- conf, true_cond, false_cond=None), "faked")
+ self.assertEqual(
+ self._call_test(conf, true_cond, false_cond=None), "faked"
+ )
conf = False
- self.assertEqual(self._call_test(
- conf, true_cond, false_cond="alsofaked"), "alsofaked")
+ self.assertEqual(
+ self._call_test(conf, true_cond, false_cond="alsofaked"),
+ "alsofaked",
+ )
class Test_should_skip_file(unittest.TestCase):
-
def _callFUT(self, *arg, **kw):
from pyramid.scaffolds.copydir import should_skip_file
+
return should_skip_file(*arg, **kw)
def test_should_skip_dot_hidden_file(self):
self.assertEqual(
- self._callFUT('.a_filename'),
- 'Skipping hidden file %(filename)s')
+ self._callFUT('.a_filename'), 'Skipping hidden file %(filename)s'
+ )
def test_should_skip_backup_file(self):
for name in ('a_filename~', 'a_filename.bak'):
self.assertEqual(
- self._callFUT(name),
- 'Skipping backup file %(filename)s')
+ self._callFUT(name), 'Skipping backup file %(filename)s'
+ )
def test_should_skip_bytecompiled_file(self):
for name in ('afilename.pyc', 'afilename.pyo'):
extension = os.path.splitext(name)[1]
self.assertEqual(
self._callFUT(name),
- 'Skipping %s file ' % extension + '%(filename)s')
+ 'Skipping %s file ' % extension + '%(filename)s',
+ )
def test_should_skip_jython_class_file(self):
self.assertEqual(
self._callFUT('afilename$py.class'),
- 'Skipping $py.class file %(filename)s')
+ 'Skipping $py.class file %(filename)s',
+ )
def test_should_skip_version_control_directory(self):
for name in ('CVS', '_darcs'):
self.assertEqual(
self._callFUT(name),
- 'Skipping version control directory %(filename)s')
+ 'Skipping version control directory %(filename)s',
+ )
def test_valid_file_is_not_skipped(self):
- self.assertEqual(
- self._callFUT('a_filename'), None)
+ self.assertEqual(self._callFUT('a_filename'), None)
+
-class RawInputMockObject( object ):
+class RawInputMockObject(object):
count = 0
- def __init__( self, fake_input ):
- self.input= fake_input
+
+ def __init__(self, fake_input):
+ self.input = fake_input
self.count = 0
- def __call__( self, prompt ):
+
+ def __call__(self, prompt):
# Don't cycle endlessly.
self.count += 1
if self.count > 1:
@@ -321,11 +399,12 @@ class RawInputMockObject( object ):
else:
return self.input
-class Test_query_interactive(unittest.TestCase):
+class Test_query_interactive(unittest.TestCase):
def setUp(self):
import tempfile
from pyramid.compat import NativeIO
+
self.dirname = tempfile.mkdtemp()
self.out = NativeIO()
self.fixturetuple = ('tests.test_scaffolds', 'fixture_scaffold')
@@ -338,64 +417,90 @@ whom you are looking;
now you have found them."""
self.src_fn = os.path.join(self.dirname, 'mypackage', '__init__.py')
self.dest_fn = os.path.join(self.dirname, 'mypackage', '__init__.py')
- # query_interactive is only normally executed when the destination
+ # query_interactive is only normally executed when the destination
# is discovered to be already occupied by existing files, so ...
# create the required occupancy.
from pyramid.scaffolds.copydir import copy_dir
- copy_dir(self.fixturetuple,
- self.dirname,
- {'package':'mypackage'},
- 0, False,
- template_renderer=dummy_template_renderer)
+
+ copy_dir(
+ self.fixturetuple,
+ self.dirname,
+ {'package': 'mypackage'},
+ 0,
+ False,
+ template_renderer=dummy_template_renderer,
+ )
def tearDown(self):
import shutil
+
shutil.rmtree(self.dirname, ignore_errors=True)
self.out.close()
def _callFUT(self, *arg, **kw):
from pyramid.scaffolds.copydir import query_interactive
+
return query_interactive(*arg, **kw)
def test_query_interactive_0y(self):
from pyramid.scaffolds import copydir
+
copydir.input_ = RawInputMockObject("y")
- self._callFUT(self.src_fn, self.dest_fn,
- self.src_content, self.dest_content,
- simulate=False,
- out_=self.out)
+ self._callFUT(
+ self.src_fn,
+ self.dest_fn,
+ self.src_content,
+ self.dest_content,
+ simulate=False,
+ out_=self.out,
+ )
self.assertTrue("Replace" in self.out.getvalue())
def test_query_interactive_1n(self):
from pyramid.scaffolds import copydir
+
copydir.input_ = RawInputMockObject("n")
- self._callFUT(self.src_fn, self.dest_fn,
- self.src_content,
- '\n'.join(self.dest_content.split('\n')[:-1]),
- simulate=False,
- out_=self.out)
+ self._callFUT(
+ self.src_fn,
+ self.dest_fn,
+ self.src_content,
+ '\n'.join(self.dest_content.split('\n')[:-1]),
+ simulate=False,
+ out_=self.out,
+ )
self.assertTrue("Replace" in self.out.getvalue())
def test_query_interactive_2b(self):
from pyramid.scaffolds import copydir
+
copydir.input_ = RawInputMockObject("b")
- with open(os.path.join(
- self.dirname, 'mypackage', '__init__.py.bak'), 'w') as fp:
+ with open(
+ os.path.join(self.dirname, 'mypackage', '__init__.py.bak'), 'w'
+ ) as fp:
fp.write("")
fp.close()
- self._callFUT(self.src_fn, self.dest_fn,
- self.dest_content, self.src_content,
- simulate=False,
- out_=self.out)
+ self._callFUT(
+ self.src_fn,
+ self.dest_fn,
+ self.dest_content,
+ self.src_content,
+ simulate=False,
+ out_=self.out,
+ )
self.assertTrue("Backing up" in self.out.getvalue())
def test_query_interactive_3d(self):
from pyramid.scaffolds import copydir
+
copydir.input_ = RawInputMockObject("d")
- self._callFUT(self.src_fn, self.dest_fn,
- self.dest_content, self.src_content,
- simulate=False,
- out_=self.out)
+ self._callFUT(
+ self.src_fn,
+ self.dest_fn,
+ self.dest_content,
+ self.src_content,
+ simulate=False,
+ out_=self.out,
+ )
output = self.out.getvalue()
# The useful text in self.out gets wiped out on the second
# call to raw_input, otherwise the test could be made
@@ -406,11 +511,16 @@ now you have found them."""
def test_query_interactive_4dc(self):
from pyramid.scaffolds import copydir
+
copydir.input_ = RawInputMockObject("dc")
- self._callFUT(self.src_fn, self.dest_fn,
- self.dest_content, self.src_content,
- simulate=False,
- out_=self.out)
+ self._callFUT(
+ self.src_fn,
+ self.dest_fn,
+ self.dest_content,
+ self.src_content,
+ simulate=False,
+ out_=self.out,
+ )
output = self.out.getvalue()
# The useful text in self.out gets wiped out on the second
# call to raw_input, otherwise, the test could be made
@@ -421,11 +531,16 @@ now you have found them."""
def test_query_interactive_5allbad(self):
from pyramid.scaffolds import copydir
+
copydir.input_ = RawInputMockObject("all z")
- self._callFUT(self.src_fn, self.dest_fn,
- self.src_content, self.dest_content,
- simulate=False,
- out_=self.out)
+ self._callFUT(
+ self.src_fn,
+ self.dest_fn,
+ self.src_content,
+ self.dest_content,
+ simulate=False,
+ out_=self.out,
+ )
output = self.out.getvalue()
# The useful text in self.out gets wiped out on the second
# call to raw_input, otherwise the test could be made
@@ -436,11 +551,16 @@ now you have found them."""
def test_query_interactive_6all(self):
from pyramid.scaffolds import copydir
+
copydir.input_ = RawInputMockObject("all b")
- self._callFUT(self.src_fn, self.dest_fn,
- self.src_content, self.dest_content,
- simulate=False,
- out_=self.out)
+ self._callFUT(
+ self.src_fn,
+ self.dest_fn,
+ self.src_content,
+ self.dest_content,
+ simulate=False,
+ out_=self.out,
+ )
output = self.out.getvalue()
# The useful text in self.out gets wiped out on the second
# call to raw_input, otherwise the test could be made
@@ -449,6 +569,6 @@ now you have found them."""
# self.assertTrue("Responses" in output, output)
self.assertTrue("Replace" in output)
+
def dummy_template_renderer(content, v, filename=None):
return content
-