[Checkins] SVN: zc.recipe.macro/trunk/ Improved test coverage.
Aaron Lehmann
aaron at zope.com
Mon Aug 11 14:30:27 EDT 2008
Log message for revision 89677:
Improved test coverage.
Changed:
U zc.recipe.macro/trunk/CHANGES.txt
U zc.recipe.macro/trunk/src/zc/recipe/macro/README.txt
U zc.recipe.macro/trunk/src/zc/recipe/macro/recipe.py
U zc.recipe.macro/trunk/src/zc/recipe/macro/tests.py
-=-
Modified: zc.recipe.macro/trunk/CHANGES.txt
===================================================================
--- zc.recipe.macro/trunk/CHANGES.txt 2008-08-11 17:55:56 UTC (rev 89676)
+++ zc.recipe.macro/trunk/CHANGES.txt 2008-08-11 18:30:27 UTC (rev 89677)
@@ -1,6 +1,12 @@
CHANGES
=======
+1.2.5 (unreleased)
+------------------
+
+- Removed version sections from the documentation.
+- Improved test coverage.
+
1.2.4 (2008-07-18)
------------------
Modified: zc.recipe.macro/trunk/src/zc/recipe/macro/README.txt
===================================================================
--- zc.recipe.macro/trunk/src/zc/recipe/macro/README.txt 2008-08-11 17:55:56 UTC (rev 89676)
+++ zc.recipe.macro/trunk/src/zc/recipe/macro/README.txt 2008-08-11 18:30:27 UTC (rev 89677)
@@ -23,15 +23,7 @@
... """
... [buildout]
... parts = instance0 instance1
- ... versions = versions
...
- ... [versions]
- ... zc.recipe.egg = 1.0.0
- ... setuptools = 0.6c8
- ... zc.recipe.testrunner = 1.0.0
- ... zc.buildout = 1.0.0
- ... zope.testing = 3.5.0
- ...
... [instance-macro]
... application = application
... zope.conf =
@@ -130,8 +122,7 @@
</eventlog>
<product-config zc.z3monitor>
port 9089
- </product-config>'},
- 'versions': {...}}
+ </product-config>'}}
>>> os.chdir(macro)
@@ -144,15 +135,7 @@
... """
... [buildout]
... parts = instance0 instance1
- ... versions = versions
...
- ... [versions]
- ... zc.recipe.egg = 1.0.0
- ... setuptools = 0.6c8
- ... zc.recipe.testrunner = 1.0.0
- ... zc.buildout = 1.0.0
- ... zope.testing = 3.5.0
- ...
... [instance0]
... recipe = zc.recipe.macro:test
... application = application
@@ -222,84 +205,13 @@
</eventlog>
<product-config zc.z3monitor>
port 9089
- </product-config>'},
- 'versions': {...}}
+ </product-config>'}}
>>> os.chdir(macro)
Note that the options from the invocation are used both to perform
substitutions and as additional options in the expansion. The result-recipe
option is used to determine the recipe used on the resulting part.
-Default values in macros
-------------------------
-
-It is possible to make default values in macros.
-
- >>> buildout = setupBuildout(sample_buildout, "buildout.cfg",
- ... """
- ... [buildout]
- ... parts = instance0
- ... versions = versions
- ...
- ... [versions]
- ... zc.recipe.egg = 1.0.0
- ... setuptools = 0.6c8
- ... zc.recipe.testrunner = 1.0.0
- ... zc.buildout = 1.0.0
- ... zope.testing = 3.5.0
- ...
- ... [instance-macro]
- ... application = application
- ... zope.conf =
- ... <eventlog>
- ... <logfile>
- ... path /var/log/myapp/$${:__name__}-z3.log
- ... </logfile>
- ... </eventlog>
- ... <product-config zc.z3monitor>
- ... port $${:monitor-port}
- ... </product-config>
- ... address = 8080
- ... monitor-port = 8089
- ...
- ... [instance0]
- ... recipe = zc.recipe.macro
- ... result-recipe = zc.recipe.macro:test
- ... macro = instance-macro
- ... """)
- >>> os.chdir(sample_buildout)
- >>> buildout.install([])
- >>> buildout_pprint(dict(buildout))
- {'buildout': {...},
- 'instance-macro': {'address': '8080',
- 'application': 'application',
- 'monitor-port': '8089',
- 'zope.conf': '
- <eventlog>
- <logfile>
- path /var/log/myapp/$${:__name__}-z3.log
- </logfile>
- </eventlog>
- <product-config zc.z3monitor>
- port $${:monitor-port}
- </product-config>'},
- 'instance0': {'address': '8080',
- 'application': 'application',
- 'monitor-port': '8089',
- 'recipe': 'zc.recipe.macro:test',
- 'zope.conf': '
- <eventlog>
- <logfile>
- path /var/log/myapp/instance0-z3.log
- </logfile>
- </eventlog>
- <product-config zc.z3monitor>
- port 8089
- </product-config>'},
- 'versions': {...}}
- >>> os.chdir(macro)
-
-
Macro invocation without a result-recipe
----------------------------------------
@@ -309,15 +221,7 @@
... """
... [buildout]
... parts = instance0 instance1
- ... versions = versions
...
- ... [versions]
- ... zc.recipe.egg = 1.0.0
- ... setuptools = 0.6c8
- ... zc.recipe.testrunner = 1.0.0
- ... zc.buildout = 1.0.0
- ... zope.testing = 3.5.0
- ...
... [instance-macro]
... application = application
... zope.conf =
@@ -381,8 +285,7 @@
</eventlog>
<product-config zc.z3monitor>
port 9089
- </product-config>'},
- 'versions': {...}}
+ </product-config>'}}
>>> os.chdir(sample_buildout)
In this case, the zc.recipe.macro recipe is used, with its Empty entry point.
@@ -394,15 +297,7 @@
... """
... [buildout]
... parts = instance0 instance1
- ... versions = versions
...
- ... [versions]
- ... zc.recipe.egg = 1.0.0
- ... setuptools = 0.6c8
- ... zc.recipe.testrunner = 1.0.0
- ... zc.buildout = 1.0.0
- ... zope.testing = 3.5.0
- ...
... [instance-macro]
... application = application
... zope.conf =
@@ -467,8 +362,7 @@
</eventlog>
<product-config zc.z3monitor>
port 9089
- </product-config>'},
- 'versions': {...}}
+ </product-config>'}}
And of course they are the same as explicitly declaring and empty result.
@@ -487,15 +381,7 @@
... """
... [buildout]
... parts = invoker
- ... versions = versions
...
- ... [versions]
- ... zc.recipe.egg = 1.0.0
- ... setuptools = 0.6c8
- ... zc.recipe.testrunner = 1.0.0
- ... zc.buildout = 1.0.0
- ... zope.testing = 3.5.0
- ...
... [macro]
... output = I was invoked on $${:__name__}
...
@@ -512,7 +398,6 @@
'invoker': {'recipe': 'zc.recipe.macro:empty'},
'macro': {'output': 'I was invoked on $${:__name__}'},
'one': {'output': 'I was invoked on one'},
- 'versions': {...},
'zero': {'output': 'I was invoked on zero'}}
It is possible, and much more useful, to provide parameters by specifying other
@@ -522,15 +407,7 @@
... """
... [buildout]
... parts = invoker
- ... versions = versions
...
- ... [versions]
- ... zc.recipe.egg = 1.0.0
- ... setuptools = 0.6c8
- ... zc.recipe.testrunner = 1.0.0
- ... zc.buildout = 1.0.0
- ... zope.testing = 3.5.0
- ...
... [macro]
... output = $${:subject} was invoked on $${:__name__}
...
@@ -554,11 +431,99 @@
'macro': {'output': '$${:subject} was invoked on $${:__name__}'},
'one': {'output': 'Fred was invoked on one'},
'one-parameters': {'subject': 'Fred'},
- 'versions': {...},
'zero': {'output': 'Benji was invoked on zero'},
'zero-parameters': {'subject': 'Benji'}}
+Default values in macros
+------------------------
+
+It is possible to make default values in macros.
+
+ >>> buildout = setupBuildout(sample_buildout, "buildout.cfg",
+ ... """
+ ... [buildout]
+ ... parts = instance0
+ ...
+ ... [instance-macro]
+ ... application = application
+ ... zope.conf =
+ ... <eventlog>
+ ... <logfile>
+ ... path /var/log/myapp/$${:__name__}-z3.log
+ ... </logfile>
+ ... </eventlog>
+ ... <product-config zc.z3monitor>
+ ... port $${:monitor-port}
+ ... </product-config>
+ ... address = 8080
+ ... monitor-port = 8089
+ ...
+ ... [instance0]
+ ... recipe = zc.recipe.macro
+ ... result-recipe = zc.recipe.macro:test
+ ... macro = instance-macro
+ ... """)
+ >>> os.chdir(sample_buildout)
+ >>> buildout.install([])
+ >>> buildout_pprint(dict(buildout))
+ {'buildout': {...},
+ 'instance-macro': {'address': '8080',
+ 'application': 'application',
+ 'monitor-port': '8089',
+ 'zope.conf': '
+ <eventlog>
+ <logfile>
+ path /var/log/myapp/$${:__name__}-z3.log
+ </logfile>
+ </eventlog>
+ <product-config zc.z3monitor>
+ port $${:monitor-port}
+ </product-config>'},
+ 'instance0': {'address': '8080',
+ 'application': 'application',
+ 'monitor-port': '8089',
+ 'recipe': 'zc.recipe.macro:test',
+ 'zope.conf': '
+ <eventlog>
+ <logfile>
+ path /var/log/myapp/instance0-z3.log
+ </logfile>
+ </eventlog>
+ <product-config zc.z3monitor>
+ port 8089
+ </product-config>'}}
+ >>> os.chdir(macro)
+
+ >>> buildout = setupBuildout(sample_buildout, "buildout.cfg",
+ ... """
+ ... [buildout]
+ ... parts = invoker
+ ...
+ ... [macro]
+ ... output = $${:subject} $${:verb} on $${:__name__}
+ ... subject = I
+ ... verb = was invoked
+ ...
+ ... [zero-parameters]
+ ... verb = drive
+ ...
+ ... [invoker]
+ ... recipe = zc.recipe.macro
+ ... macro = macro
+ ... targets = zero:zero-parameters
+ ... """)
+ >>> buildout.install([])
+ >>> buildout_pprint(buildout)
+ {'buildout': {...},
+ 'invoker': {'recipe': 'zc.recipe.macro:empty'},
+ 'macro': {'output': '$${:subject} $${:verb} on $${:__name__}',
+ 'subject': 'I',
+ 'verb': 'was invoked'},
+ 'zero': {'output': 'I drive on zero', 'verb': 'drive', 'subject': 'I'},
+ 'zero-parameters': {'verb': 'drive'}}
+
+
Edge Case Tests
---------------
@@ -580,15 +545,7 @@
... """
... [buildout]
... parts = instance0
- ... versions = versions
...
- ... [versions]
- ... zc.recipe.egg = 1.0.0
- ... setuptools = 0.6c8
- ... zc.recipe.testrunner = 1.0.0
- ... zc.buildout = 1.0.0
- ... zope.testing = 3.5.0
- ...
... [instance-macro]
... address = 8080
... application = application
@@ -635,8 +592,7 @@
</eventlog>
<product-config zc.z3monitor>
port 8089
- </product-config>'},
- 'versions': {...}}
+ </product-config>'}}
And we'll return to the old Options:
Modified: zc.recipe.macro/trunk/src/zc/recipe/macro/recipe.py
===================================================================
--- zc.recipe.macro/trunk/src/zc/recipe/macro/recipe.py 2008-08-11 17:55:56 UTC (rev 89676)
+++ zc.recipe.macro/trunk/src/zc/recipe/macro/recipe.py 2008-08-11 18:30:27 UTC (rev 89677)
@@ -44,11 +44,6 @@
target, input_section = target.split(':')
return target, input_section
-def parse_macro_invocation(invocation):
- inputs = {}
- parse = re.match(r'([^:\n]*)(?::([^:{\n]*)(?:{([^}]*)})?)?', invocation, re.M)
- return tuple(parse.group(x) for x in xrange(1,4))
-
def Macro(buildout, name, options):
del options['recipe']
recipe = options.pop('result-recipe', '')
Modified: zc.recipe.macro/trunk/src/zc/recipe/macro/tests.py
===================================================================
--- zc.recipe.macro/trunk/src/zc/recipe/macro/tests.py 2008-08-11 17:55:56 UTC (rev 89676)
+++ zc.recipe.macro/trunk/src/zc/recipe/macro/tests.py 2008-08-11 18:30:27 UTC (rev 89677)
@@ -39,7 +39,7 @@
string = pprint.pformat(b_dict).replace('\\n', '\n')
print string
-def setupBuildout(test, *args):
+def setupBuildout(test, install_eggs=tuple(), *args):
tmpdir, rmdir, write, sample_buildout = (
test.globs['tmpdir'],
test.globs['rmdir'],
@@ -65,13 +65,11 @@
user_defaults=False
)
logger = logging.getLogger('zc.buildout')
- logger.removeHandler(logger.handlers[0])
logging.getLogger('zc.buildout').setLevel(99999)
+ logger.removeHandler(logger.handlers[0])
buildout.bootstrap([])
- zc.buildout.testing.install('zope.testing', eggs)
- zc.buildout.testing.install('zc.recipe.testrunner', eggs)
- zc.buildout.testing.install('zc.recipe.egg', eggs)
- zc.buildout.testing.install('zc.recipe.macro', eggs)
+ for egg in install_eggs:
+ zc.buildout.testing.install(egg, eggs)
return buildout
@@ -80,7 +78,8 @@
test.globs['here'] = here
test.globs['macro'] = os.path.join('../../../..', here)
- test.globs['setupBuildout'] = (lambda *args: setupBuildout(test, *args))
+ test.globs['setupBuildout'] = (
+ lambda *args: setupBuildout(test, (), *args))
test.globs['buildout_pprint'] = buildout_pprint
os.chdir(test.globs['macro'])
return test
More information about the Checkins
mailing list