From 360ebabfca6124ac98812039c9bf1c1a05aa7035 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Sun, 9 Oct 2011 00:49:57 -0400 Subject: first few copydir tests --- pyramid/scaffolds/copydir.py | 47 +++++++------ .../fixture_scaffold/+package+/__init__.py_tmpl | 12 ++++ .../fixture_scaffold/+package+/resources.py | 3 + .../fixture_scaffold/+package+/static/favicon.ico | Bin 0 -> 1406 bytes .../fixture_scaffold/+package+/static/footerbg.png | Bin 0 -> 333 bytes .../fixture_scaffold/+package+/static/headerbg.png | Bin 0 -> 203 bytes .../fixture_scaffold/+package+/static/ie6.css | 8 +++ .../fixture_scaffold/+package+/static/middlebg.png | Bin 0 -> 2797 bytes .../fixture_scaffold/+package+/static/pylons.css | 65 ++++++++++++++++++ .../+package+/static/pyramid-small.png | Bin 0 -> 7044 bytes .../fixture_scaffold/+package+/static/pyramid.png | Bin 0 -> 33055 bytes .../+package+/static/transparent.gif | Bin 0 -> 49 bytes .../+package+/templates/mytemplate.pt_tmpl | 76 +++++++++++++++++++++ .../fixture_scaffold/+package+/tests.py_tmpl | 16 +++++ .../fixture_scaffold/+package+/views.py_tmpl | 2 + .../fixture_scaffold/CHANGES.txt_tmpl | 4 ++ .../fixture_scaffold/MANIFEST.in_tmpl | 2 + .../fixture_scaffold/README.txt_tmpl | 1 + .../fixture_scaffold/development.ini_tmpl | 46 +++++++++++++ .../fixture_scaffold/production.ini_tmpl | 45 ++++++++++++ .../test_scaffolds/fixture_scaffold/setup.cfg_tmpl | 27 ++++++++ .../test_scaffolds/fixture_scaffold/setup.py_tmpl | 36 ++++++++++ pyramid/tests/test_scaffolds/test_copydir.py | 68 ++++++++++++++++++ 23 files changed, 438 insertions(+), 20 deletions(-) create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/+package+/__init__.py_tmpl create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/+package+/resources.py create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/favicon.ico create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/footerbg.png create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/headerbg.png create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/ie6.css create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/middlebg.png create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pylons.css create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pyramid-small.png create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pyramid.png create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/transparent.gif create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/+package+/templates/mytemplate.pt_tmpl create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/+package+/tests.py_tmpl create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/+package+/views.py_tmpl create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/CHANGES.txt_tmpl create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/MANIFEST.in_tmpl create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/README.txt_tmpl create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/development.ini_tmpl create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/production.ini_tmpl create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/setup.cfg_tmpl create mode 100644 pyramid/tests/test_scaffolds/fixture_scaffold/setup.py_tmpl create mode 100644 pyramid/tests/test_scaffolds/test_copydir.py diff --git a/pyramid/scaffolds/copydir.py b/pyramid/scaffolds/copydir.py index 5728fce5f..a3bd2821d 100644 --- a/pyramid/scaffolds/copydir.py +++ b/pyramid/scaffolds/copydir.py @@ -23,7 +23,7 @@ class SkipTemplate(Exception): def copy_dir(source, dest, vars, verbosity, simulate, indent=0, sub_vars=True, interactive=False, overwrite=True, - template_renderer=None): + template_renderer=None, out_=sys.stdout): """ Copies the ``source`` directory to the ``dest`` directory. @@ -48,6 +48,9 @@ def copy_dir(source, dest, vars, verbosity, simulate, indent=0, ``template_renderer(content_as_string, vars_as_dict, filename=filename)``. """ + def out(msg): + out_.write(msg) + out_.flush() # This allows you to use a leading +dot+ in filenames which would # otherwise be skipped because leading dots make the file hidden: vars.setdefault('dot', '.') @@ -60,11 +63,11 @@ def copy_dir(source, dest, vars, verbosity, simulate, indent=0, pad = ' '*(indent*2) if not os.path.exists(dest): if verbosity >= 1: - print('%sCreating %s/' % (pad, dest)) + out('%sCreating %s/' % (pad, dest)) if not simulate: makedirs(dest, verbosity=verbosity, pad=pad) elif verbosity >= 2: - print('%sDirectory %s exists' % (pad, dest)) + out('%sDirectory %s exists' % (pad, dest)) for name in names: if use_pkg_resources: full = '/'.join([source[1], name]) @@ -74,7 +77,7 @@ def copy_dir(source, dest, vars, verbosity, simulate, indent=0, if reason: if verbosity >= 2: reason = pad + reason % {'filename': full} - print(reason) + out(reason) continue if sub_vars: dest_full = os.path.join(dest, substitute_filename(name, vars)) @@ -84,19 +87,19 @@ def copy_dir(source, dest, vars, verbosity, simulate, indent=0, sub_file = sub_vars if use_pkg_resources and pkg_resources.resource_isdir(source[0], full): if verbosity: - print('%sRecursing into %s' % (pad, os.path.basename(full))) + out('%sRecursing into %s' % (pad, os.path.basename(full))) copy_dir((source[0], full), dest_full, vars, verbosity, simulate, indent=indent+1, sub_vars=sub_vars, interactive=interactive, - template_renderer=template_renderer) + template_renderer=template_renderer, out_=out_) continue elif not use_pkg_resources and os.path.isdir(full): if verbosity: - print('%sRecursing into %s' % (pad, os.path.basename(full))) + out('%sRecursing into %s' % (pad, os.path.basename(full))) copy_dir(full, dest_full, vars, verbosity, simulate, indent=indent+1, sub_vars=sub_vars, interactive=interactive, - template_renderer=template_renderer) + template_renderer=template_renderer, out_=out_) continue elif use_pkg_resources: content = pkg_resources.resource_string(source[0], full) @@ -121,22 +124,23 @@ def copy_dir(source, dest, vars, verbosity, simulate, indent=0, f.close() if old_content == content: if verbosity: - print('%s%s already exists (same content)' % + out('%s%s already exists (same content)' % (pad, dest_full)) continue if interactive: if not query_interactive( native_(full, fsenc), native_(dest_full, fsenc), native_(content, fsenc), native_(old_content, fsenc), - simulate=simulate): + simulate=simulate, out_=out_): continue elif not overwrite: continue if verbosity and use_pkg_resources: - print('%sCopying %s to %s' % (pad, full, dest_full)) + out('%sCopying %s to %s' % (pad, full, dest_full)) elif verbosity: - print( - '%sCopying %s to %s' % (pad, os.path.basename(full), dest_full)) + out( + '%sCopying %s to %s' % (pad, os.path.basename(full), + dest_full)) if not simulate: f = open(dest_full, 'wb') f.write(content) @@ -165,7 +169,10 @@ def should_skip_file(name): all_answer = None def query_interactive(src_fn, dest_fn, src_content, dest_content, - simulate): + simulate, out_=sys.stdout): + def out(msg): + out_.write(msg) + out_.flush() global all_answer from difflib import unified_diff, context_diff u_diff = list(unified_diff( @@ -186,7 +193,7 @@ def query_interactive(src_fn, dest_fn, src_content, dest_content, msg = '; %i lines removed' % (removed-added) else: msg = '' - print('Replace %i bytes with %i bytes (%i/%i lines changed%s)' % ( + out('Replace %i bytes with %i bytes (%i/%i lines changed%s)' % ( len(dest_content), len(src_content), removed, len(dest_content.splitlines()), msg)) prompt = 'Overwrite %s [y/n/d/B/?] ' % dest_fn @@ -202,14 +209,14 @@ def query_interactive(src_fn, dest_fn, src_content, dest_content, while os.path.exists(new_dest_fn): n += 1 new_dest_fn = dest_fn + '.bak' + str(n) - print('Backing up %s to %s' % (dest_fn, new_dest_fn)) + out('Backing up %s to %s' % (dest_fn, new_dest_fn)) if not simulate: shutil.copyfile(dest_fn, new_dest_fn) return True elif response.startswith('all '): rest = response[4:].strip() if not rest or rest[0] not in ('y', 'n', 'b'): - print(query_usage) + out(query_usage) continue response = all_answer = rest[0] if response[0] == 'y': @@ -217,11 +224,11 @@ def query_interactive(src_fn, dest_fn, src_content, dest_content, elif response[0] == 'n': return False elif response == 'dc': - print('\n'.join(c_diff)) + out('\n'.join(c_diff)) elif response[0] == 'd': - print('\n'.join(u_diff)) + out('\n'.join(u_diff)) else: - print(query_usage) + out(query_usage) query_usage = """\ Responses: diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/__init__.py_tmpl b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/__init__.py_tmpl new file mode 100644 index 000000000..d763b2435 --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/__init__.py_tmpl @@ -0,0 +1,12 @@ +from pyramid.config import Configurator +from {{package}}.resources import Root + +def main(global_config, **settings): + """ This function returns a Pyramid WSGI application. + """ + config = Configurator(root_factory=Root, settings=settings) + config.add_view('{{package}}.views.my_view', + context='{{package}}:resources.Root', + renderer='{{package}}:templates/mytemplate.pt') + config.add_static_view('static', '{{package}}:static', cache_max_age=3600) + return config.make_wsgi_app() diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/resources.py b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/resources.py new file mode 100644 index 000000000..3d811895c --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/resources.py @@ -0,0 +1,3 @@ +class Root(object): + def __init__(self, request): + self.request = request diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/favicon.ico b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/favicon.ico new file mode 100644 index 000000000..71f837c9e Binary files /dev/null and b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/favicon.ico differ diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/footerbg.png b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/footerbg.png new file mode 100644 index 000000000..1fbc873da Binary files /dev/null and b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/footerbg.png differ diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/headerbg.png b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/headerbg.png new file mode 100644 index 000000000..0596f2020 Binary files /dev/null and b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/headerbg.png differ diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/ie6.css b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/ie6.css new file mode 100644 index 000000000..b7c8493d8 --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/ie6.css @@ -0,0 +1,8 @@ +* html img, +* html .png{position:relative;behavior:expression((this.runtimeStyle.behavior="none")&&(this.pngSet?this.pngSet=true:(this.nodeName == "IMG" && this.src.toLowerCase().indexOf('.png')>-1?(this.runtimeStyle.backgroundImage = "none", +this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.src + "',sizingMethod='image')", +this.src = "static/transparent.gif"):(this.origBg = this.origBg? this.origBg :this.currentStyle.backgroundImage.toString().replace('url("','').replace('")',''), +this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.origBg + "',sizingMethod='crop')", +this.runtimeStyle.backgroundImage = "none")),this.pngSet=true) +);} +#wrap{display:table;height:100%} diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/middlebg.png b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/middlebg.png new file mode 100644 index 000000000..2369cfb7d Binary files /dev/null and b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/middlebg.png differ diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pylons.css b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pylons.css new file mode 100644 index 000000000..c54499ddd --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pylons.css @@ -0,0 +1,65 @@ +html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;font-size:100%;/* 16px */ +vertical-align:baseline;background:transparent;} +body{line-height:1;} +ol,ul{list-style:none;} +blockquote,q{quotes:none;} +blockquote:before,blockquote:after,q:before,q:after{content:'';content:none;} +:focus{outline:0;} +ins{text-decoration:none;} +del{text-decoration:line-through;} +table{border-collapse:collapse;border-spacing:0;} +sub{vertical-align:sub;font-size:smaller;line-height:normal;} +sup{vertical-align:super;font-size:smaller;line-height:normal;} +ul,menu,dir{display:block;list-style-type:disc;margin:1em 0;padding-left:40px;} +ol{display:block;list-style-type:decimal-leading-zero;margin:1em 0;padding-left:40px;} +li{display:list-item;} +ul ul,ul ol,ul dir,ul menu,ul dl,ol ul,ol ol,ol dir,ol menu,ol dl,dir ul,dir ol,dir dir,dir menu,dir dl,menu ul,menu ol,menu dir,menu menu,menu dl,dl ul,dl ol,dl dir,dl menu,dl dl{margin-top:0;margin-bottom:0;} +ol ul,ul ul,menu ul,dir ul,ol menu,ul menu,menu menu,dir menu,ol dir,ul dir,menu dir,dir dir{list-style-type:circle;} +ol ol ul,ol ul ul,ol menu ul,ol dir ul,ol ol menu,ol ul menu,ol menu menu,ol dir menu,ol ol dir,ol ul dir,ol menu dir,ol dir dir,ul ol ul,ul ul ul,ul menu ul,ul dir ul,ul ol menu,ul ul menu,ul menu menu,ul dir menu,ul ol dir,ul ul dir,ul menu dir,ul dir dir,menu ol ul,menu ul ul,menu menu ul,menu dir ul,menu ol menu,menu ul menu,menu menu menu,menu dir menu,menu ol dir,menu ul dir,menu menu dir,menu dir dir,dir ol ul,dir ul ul,dir menu ul,dir dir ul,dir ol menu,dir ul menu,dir menu menu,dir dir menu,dir ol dir,dir ul dir,dir menu dir,dir dir dir{list-style-type:square;} +.hidden{display:none;} +p{line-height:1.5em;} +h1{font-size:1.75em;line-height:1.7em;font-family:helvetica,verdana;} +h2{font-size:1.5em;line-height:1.7em;font-family:helvetica,verdana;} +h3{font-size:1.25em;line-height:1.7em;font-family:helvetica,verdana;} +h4{font-size:1em;line-height:1.7em;font-family:helvetica,verdana;} +html,body{width:100%;height:100%;} +body{margin:0;padding:0;background-color:#ffffff;position:relative;font:16px/24px "NobileRegular","Lucida Grande",Lucida,Verdana,sans-serif;} +a{color:#1b61d6;text-decoration:none;} +a:hover{color:#e88f00;text-decoration:underline;} +body h1, +body h2, +body h3, +body h4, +body h5, +body h6{font-family:"NeutonRegular","Lucida Grande",Lucida,Verdana,sans-serif;font-weight:normal;color:#373839;font-style:normal;} +#wrap{min-height:100%;} +#header,#footer{width:100%;color:#ffffff;height:40px;position:absolute;text-align:center;line-height:40px;overflow:hidden;font-size:12px;vertical-align:middle;} +#header{background:#000000;top:0;font-size:14px;} +#footer{bottom:0;background:#000000 url(footerbg.png) repeat-x 0 top;position:relative;margin-top:-40px;clear:both;} +.header,.footer{width:750px;margin-right:auto;margin-left:auto;} +.wrapper{width:100%} +#top,#top-small,#bottom{width:100%;} +#top{color:#000000;height:230px;background:#ffffff url(headerbg.png) repeat-x 0 top;position:relative;} +#top-small{color:#000000;height:60px;background:#ffffff url(headerbg.png) repeat-x 0 top;position:relative;} +#bottom{color:#222;background-color:#ffffff;} +.top,.top-small,.middle,.bottom{width:750px;margin-right:auto;margin-left:auto;} +.top{padding-top:40px;} +.top-small{padding-top:10px;} +#middle{width:100%;height:100px;background:url(middlebg.png) repeat-x;border-top:2px solid #ffffff;border-bottom:2px solid #b2b2b2;} +.app-welcome{margin-top:25px;} +.app-name{color:#000000;font-weight:bold;} +.bottom{padding-top:50px;} +#left{width:350px;float:left;padding-right:25px;} +#right{width:350px;float:right;padding-left:25px;} +.align-left{text-align:left;} +.align-right{text-align:right;} +.align-center{text-align:center;} +ul.links{margin:0;padding:0;} +ul.links li{list-style-type:none;font-size:14px;} +form{border-style:none;} +fieldset{border-style:none;} +input{color:#222;border:1px solid #ccc;font-family:sans-serif;font-size:12px;line-height:16px;} +input[type=text],input[type=password]{width:205px;} +input[type=submit]{background-color:#ddd;font-weight:bold;} +/*Opera Fix*/ +body:before{content:"";height:100%;float:left;width:0;margin-top:-32767px;} diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pyramid-small.png b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pyramid-small.png new file mode 100644 index 000000000..a5bc0ade7 Binary files /dev/null and b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pyramid-small.png differ diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pyramid.png b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pyramid.png new file mode 100644 index 000000000..347e05549 Binary files /dev/null and b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pyramid.png differ diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/transparent.gif b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/transparent.gif new file mode 100644 index 000000000..0341802e5 Binary files /dev/null and b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/transparent.gif differ diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/templates/mytemplate.pt_tmpl b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/templates/mytemplate.pt_tmpl new file mode 100644 index 000000000..3cd9c66a4 --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/templates/mytemplate.pt_tmpl @@ -0,0 +1,76 @@ + + + + The Pyramid Web Application Development Framework + + + + + + + + + + +
+
+
+
pyramid
+
+
+
+
+

+ Welcome to ${project}, an application generated by
+ the Pyramid web application development framework. +

+
+
+
+
+
+

Search documentation

+
+ + +
+
+ +
+
+
+ + + diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/tests.py_tmpl b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/tests.py_tmpl new file mode 100644 index 000000000..1627bf015 --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/tests.py_tmpl @@ -0,0 +1,16 @@ +import unittest + +from pyramid import testing + +class ViewTests(unittest.TestCase): + def setUp(self): + self.config = testing.setUp() + + def tearDown(self): + testing.tearDown() + + def test_my_view(self): + from {{package}}.views import my_view + request = testing.DummyRequest() + info = my_view(request) + self.assertEqual(info['project'], '{{project}}') diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/views.py_tmpl b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/views.py_tmpl new file mode 100644 index 000000000..12ed8832d --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/views.py_tmpl @@ -0,0 +1,2 @@ +def my_view(request): + return {'project':'{{project}}'} diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/CHANGES.txt_tmpl b/pyramid/tests/test_scaffolds/fixture_scaffold/CHANGES.txt_tmpl new file mode 100644 index 000000000..35a34f332 --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/CHANGES.txt_tmpl @@ -0,0 +1,4 @@ +0.0 +--- + +- Initial version diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/MANIFEST.in_tmpl b/pyramid/tests/test_scaffolds/fixture_scaffold/MANIFEST.in_tmpl new file mode 100644 index 000000000..0ff6eb7a0 --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/MANIFEST.in_tmpl @@ -0,0 +1,2 @@ +include *.txt *.ini *.cfg *.rst +recursive-include {{package}} *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/README.txt_tmpl b/pyramid/tests/test_scaffolds/fixture_scaffold/README.txt_tmpl new file mode 100644 index 000000000..40f98d14a --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/README.txt_tmpl @@ -0,0 +1 @@ +{{project}} README diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/development.ini_tmpl b/pyramid/tests/test_scaffolds/fixture_scaffold/development.ini_tmpl new file mode 100644 index 000000000..4d3a80286 --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/development.ini_tmpl @@ -0,0 +1,46 @@ +[app:main] +use = egg:{{project}} + +pyramid.reload_templates = true +pyramid.debug_authorization = false +pyramid.debug_notfound = false +pyramid.debug_routematch = false +pyramid.debug_templates = true +pyramid.default_locale_name = en +pyramid.includes = pyramid_debugtoolbar + +[server:main] +use = egg:pyramid#wsgiref +host = 0.0.0.0 +port = 6543 + +# Begin logging configuration + +[loggers] +keys = root, {{package_logger}} + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = INFO +handlers = console + +[logger_{{package_logger}}] +level = DEBUG +handlers = +qualname = {{package}} + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s + +# End logging configuration diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/production.ini_tmpl b/pyramid/tests/test_scaffolds/fixture_scaffold/production.ini_tmpl new file mode 100644 index 000000000..931cfa510 --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/production.ini_tmpl @@ -0,0 +1,45 @@ +[app:main] +use = egg:{{project}} + +pyramid.reload_templates = false +pyramid.debug_authorization = false +pyramid.debug_notfound = false +pyramid.debug_routematch = false +pyramid.debug_templates = false +pyramid.default_locale_name = en + +[server:main] +use = egg:pyramid#wsgiref +host = 0.0.0.0 +port = 6543 + +# Begin logging configuration + +[loggers] +keys = root, {{package_logger}} + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console + +[logger_{{package_logger}}] +level = WARN +handlers = +qualname = {{package}} + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s + +# End logging configuration diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/setup.cfg_tmpl b/pyramid/tests/test_scaffolds/fixture_scaffold/setup.cfg_tmpl new file mode 100644 index 000000000..04c738049 --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/setup.cfg_tmpl @@ -0,0 +1,27 @@ +[nosetests] +match = ^test +nocapture = 1 +cover-package = {{package}} +with-coverage = 1 +cover-erase = 1 + +[compile_catalog] +directory = {{package}}/locale +domain = {{project}} +statistics = true + +[extract_messages] +add_comments = TRANSLATORS: +output_file = {{package}}/locale/{{project}}.pot +width = 80 + +[init_catalog] +domain = {{project}} +input_file = {{package}}/locale/{{project}}.pot +output_dir = {{package}}/locale + +[update_catalog] +domain = {{project}} +input_file = {{package}}/locale/{{project}}.pot +output_dir = {{package}}/locale +previous = true diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/setup.py_tmpl b/pyramid/tests/test_scaffolds/fixture_scaffold/setup.py_tmpl new file mode 100644 index 000000000..e63579d50 --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/setup.py_tmpl @@ -0,0 +1,36 @@ +import os + +from setuptools import setup, find_packages + +here = os.path.abspath(os.path.dirname(__file__)) +README = open(os.path.join(here, 'README.txt')).read() +CHANGES = open(os.path.join(here, 'CHANGES.txt')).read() + +requires = ['pyramid', 'pyramid_debugtoolbar'] + +setup(name='{{project}}', + version='0.0', + description='{{project}}', + long_description=README + '\n\n' + CHANGES, + classifiers=[ + "Programming Language :: Python", + "Framework :: Pylons", + "Topic :: Internet :: WWW/HTTP", + "Topic :: Internet :: WWW/HTTP :: WSGI :: Application", + ], + author='', + author_email='', + url='', + keywords='web pyramid pylons', + packages=find_packages(), + include_package_data=True, + zip_safe=False, + install_requires=requires, + tests_require=requires, + test_suite="{{package}}", + entry_points = """\ + [paste.app_factory] + main = {{package}}:main + """, + ) + diff --git a/pyramid/tests/test_scaffolds/test_copydir.py b/pyramid/tests/test_scaffolds/test_copydir.py new file mode 100644 index 000000000..b61dc85c3 --- /dev/null +++ b/pyramid/tests/test_scaffolds/test_copydir.py @@ -0,0 +1,68 @@ +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 = ('pyramid.tests.test_scaffolds', + 'fixture_scaffold') + + def tearDown(self): + import shutil + shutil.rmtree(self.dirname, ignore_errors=True) + + 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) + result = self.out.getvalue() + self.assertTrue('Creating %s/mypackage/' % self.dirname in result) + self.assertTrue( + 'Copying fixture_scaffold/+package+/__init__.py_tmpl to' in result) + source = pkg_resources.resource_filename( + 'pyramid.tests.test_scaffolds', + 'fixture_scaffold/+package+/__init__.py_tmpl') + target = os.path.join(self.dirname, 'mypackage', '__init__.py') + with open(target, 'r') as f: + tcontent = f.read() + with open(source, 'r') as f: + scontent = f.read() + self.assertEqual(scontent, tcontent) + + def test_copy_source_as_dirname(self): + vars = {'package':'mypackage'} + source = pkg_resources.resource_filename(*self.fixturetuple) + self._callFUT(source, + self.dirname, + vars, + 1, False, + template_renderer=dummy_template_renderer) + result = self.out.getvalue() + self.assertTrue('Creating %s/mypackage/' % self.dirname in result) + self.assertTrue('Copying __init__.py_tmpl to' in result) + source = pkg_resources.resource_filename( + 'pyramid.tests.test_scaffolds', + 'fixture_scaffold/+package+/__init__.py_tmpl') + target = os.path.join(self.dirname, 'mypackage', '__init__.py') + with open(target, 'r') as f: + tcontent = f.read() + with open(source, 'r') as f: + scontent = f.read() + self.assertEqual(scontent, tcontent) + +def dummy_template_renderer(content, v, filename=None): + return content + + -- cgit v1.2.3