diff options
| author | Chris McDonough <chrism@plope.com> | 2011-10-09 00:49:57 -0400 |
|---|---|---|
| committer | Chris McDonough <chrism@plope.com> | 2011-10-09 00:49:57 -0400 |
| commit | 360ebabfca6124ac98812039c9bf1c1a05aa7035 (patch) | |
| tree | be9364d41895676d6d43eeeb7d282a39e8a1ac2a | |
| parent | b77e7feba77b29adbe47ac0e5c18a905bb7555e8 (diff) | |
| download | pyramid-360ebabfca6124ac98812039c9bf1c1a05aa7035.tar.gz pyramid-360ebabfca6124ac98812039c9bf1c1a05aa7035.tar.bz2 pyramid-360ebabfca6124ac98812039c9bf1c1a05aa7035.zip | |
first few copydir tests
23 files changed, 438 insertions, 20 deletions
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 Binary files differnew file mode 100644 index 000000000..71f837c9e --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/favicon.ico diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/footerbg.png b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/footerbg.png Binary files differnew file mode 100644 index 000000000..1fbc873da --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/footerbg.png diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/headerbg.png b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/headerbg.png Binary files differnew file mode 100644 index 000000000..0596f2020 --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/headerbg.png 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 Binary files differnew file mode 100644 index 000000000..2369cfb7d --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/middlebg.png 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 Binary files differnew file mode 100644 index 000000000..a5bc0ade7 --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pyramid-small.png diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pyramid.png b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pyramid.png Binary files differnew file mode 100644 index 000000000..347e05549 --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/pyramid.png diff --git a/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/transparent.gif b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/transparent.gif Binary files differnew file mode 100644 index 000000000..0341802e5 --- /dev/null +++ b/pyramid/tests/test_scaffolds/fixture_scaffold/+package+/static/transparent.gif 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 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" xmlns:tal="http://xml.zope.org/namespaces/tal"> +<head> + <title>The Pyramid Web Application Development Framework</title> + <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> + <meta name="keywords" content="python web application" /> + <meta name="description" content="pyramid web application" /> + <link rel="shortcut icon" href="${request.static_url('{{package}}:static/favicon.ico')}" /> + <link rel="stylesheet" href="${request.static_url('{{package}}:static/pylons.css')}" type="text/css" media="screen" charset="utf-8" /> + <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/nobile/stylesheet.css" media="screen" /> + <link rel="stylesheet" href="http://static.pylonsproject.org/fonts/neuton/stylesheet.css" media="screen" /> + <!--[if lte IE 6]> + <link rel="stylesheet" href="${request.static_url('{{package}}:static/ie6.css')}" type="text/css" media="screen" charset="utf-8" /> + <![endif]--> +</head> +<body> + <div id="wrap"> + <div id="top"> + <div class="top align-center"> + <div><img src="${request.static_url('{{package}}:static/pyramid.png')}" width="750" height="169" alt="pyramid"/></div> + </div> + </div> + <div id="middle"> + <div class="middle align-center"> + <p class="app-welcome"> + Welcome to <span class="app-name">${project}</span>, an application generated by<br/> + the Pyramid web application development framework. + </p> + </div> + </div> + <div id="bottom"> + <div class="bottom"> + <div id="left" class="align-right"> + <h2>Search documentation</h2> + <form method="get" action="http://docs.pylonsproject.org/projects/pyramid/current/search.html"> + <input type="text" id="q" name="q" value="" /> + <input type="submit" id="x" value="Go" /> + </form> + </div> + <div id="right" class="align-left"> + <h2>Pyramid links</h2> + <ul class="links"> + <li> + <a href="http://pylonsproject.org">Pylons Website</a> + </li> + <li> + <a href="http://docs.pylonsproject.org/projects/pyramid/current/#narrative-documentation">Narrative Documentation</a> + </li> + <li> + <a href="http://docs.pylonsproject.org/projects/pyramid/current/#api-documentation">API Documentation</a> + </li> + <li> + <a href="http://docs.pylonsproject.org/projects/pyramid/current/#tutorials">Tutorials</a> + </li> + <li> + <a href="http://docs.pylonsproject.org/projects/pyramid/current/#change-history">Change History</a> + </li> + <li> + <a href="http://docs.pylonsproject.org/projects/pyramid/current/#sample-applications">Sample Applications</a> + </li> + <li> + <a href="http://docs.pylonsproject.org/projects/pyramid/current/#support-and-development">Support and Development</a> + </li> + <li> + <a href="irc://irc.freenode.net#pyramid">IRC Channel</a> + </li> + </ul> + </div> + </div> + </div> + </div> + <div id="footer"> + <div class="footer">© Copyright 2008-2011, Agendaless Consulting.</div> + </div> +</body> +</html> 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 + + |
