[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