[Checkins] SVN: grokproject/branches/rochael-alternate-grok_release_url/ Add optional grok_release_url variable to the paster template: allow grokproject to work with an http cache or the local filesystem instead of requiring release files to be on the grok.zope.org server.

Leonardo Rochael Almeida leo at hiper.com.br
Sun Sep 28 06:20:12 EDT 2008


Log message for revision 91573:
  Add optional grok_release_url variable to the paster template: allow grokproject to work with an http cache or the local filesystem instead of requiring release files to be on the grok.zope.org server.

Changed:
  U   grokproject/branches/rochael-alternate-grok_release_url/grokproject/template/buildout.cfg_tmpl
  U   grokproject/branches/rochael-alternate-grok_release_url/grokproject/templates.py
  A   grokproject/branches/rochael-alternate-grok_release_url/test_alt_url.txt
  A   grokproject/branches/rochael-alternate-grok_release_url/test_offline/
  A   grokproject/branches/rochael-alternate-grok_release_url/test_offline/current
  A   grokproject/branches/rochael-alternate-grok_release_url/test_offline/grok-0.555.cfg
  U   grokproject/branches/rochael-alternate-grok_release_url/tests.py
  U   grokproject/branches/rochael-alternate-grok_release_url/tests.txt

-=-
Modified: grokproject/branches/rochael-alternate-grok_release_url/grokproject/template/buildout.cfg_tmpl
===================================================================
--- grokproject/branches/rochael-alternate-grok_release_url/grokproject/template/buildout.cfg_tmpl	2008-09-28 08:14:58 UTC (rev 91572)
+++ grokproject/branches/rochael-alternate-grok_release_url/grokproject/template/buildout.cfg_tmpl	2008-09-28 10:20:11 UTC (rev 91573)
@@ -71,4 +71,4 @@
 [eggbasket]
 recipe = z3c.recipe.eggbasket
 eggs = grok
-url = http://grok.zope.org/releaseinfo/grok-eggs-${grokversion}.tgz
+url = ${grok_release_url}grok-eggs-${grokversion}.tgz

Modified: grokproject/branches/rochael-alternate-grok_release_url/grokproject/templates.py
===================================================================
--- grokproject/branches/rochael-alternate-grok_release_url/grokproject/templates.py	2008-09-28 08:14:58 UTC (rev 91572)
+++ grokproject/branches/rochael-alternate-grok_release_url/grokproject/templates.py	2008-09-28 10:20:11 UTC (rev 91573)
@@ -35,6 +35,10 @@
         ask_var('eggs_dir',
                 'Location where zc.buildout will look for and place packages',
                 default='', should_ask=False),
+        ask_var('grok_release_url',
+                "URL where grokproject will look up grok version and "
+                "release information.",
+                should_ask=False),
         ]
 
     def check_vars(self, vars, cmd):
@@ -46,6 +50,7 @@
             sys.exit(1)
 
         explicit_eggs_dir = vars.get('eggs_dir')
+        grok_release_url = vars.get('grok_release_url', GROK_RELEASE_URL)
 
         skipped_vars = {}
         for var in list(self.vars):
@@ -57,6 +62,8 @@
         for name in skipped_vars:
             vars[name] = skipped_vars[name]
 
+        vars['grok_release_url'] = grok_release_url
+
         for var_name in ['user', 'passwd']:
             # Escape values that go in site.zcml.
             vars[var_name] = xml.sax.saxutils.quoteattr(vars[var_name])
@@ -64,7 +71,7 @@
 
         # Handling the version.cfg file.
         print "Downloading info about versions..."
-        current_info_url = GROK_RELEASE_URL + 'current'
+        current_info_url = grok_release_url + 'current'
         try:
             info = urllib.urlopen(current_info_url).read().strip()
         except IOError:

Added: grokproject/branches/rochael-alternate-grok_release_url/test_alt_url.txt
===================================================================
--- grokproject/branches/rochael-alternate-grok_release_url/test_alt_url.txt	                        (rev 0)
+++ grokproject/branches/rochael-alternate-grok_release_url/test_alt_url.txt	2008-09-28 10:20:11 UTC (rev 91573)
@@ -0,0 +1,79 @@
+Grokproject with alternative release URL
+========================================
+
+Providing an alternative release URL for grokproject is useful if you need to have your own
+local mirror for grok.
+
+In this test we will use an alternative release URL for grokproject. It is a "file:///"
+URL pointing to a directory with a fake set of grok release information files:
+
+    >>> ls(current_dir, 'test_offline')
+    current
+    grok-0.555.cfg
+    >>> cat(current_dir, 'test_offline', 'current')
+    grok-0.555.cfg
+    >>> cat(current_dir, 'test_offline', 'grok-0.555.cfg')
+    [versions]
+    grok = 0.555
+    <BLANKLINE>
+    >>> alt_url = 'file://' + os.path.join(current_dir, 'test_offline', '')
+
+Go to a directory::
+
+    >>> cd(tempdir)
+
+Check that the directory does not exist::
+
+    >>> rmdir('grokexample')
+
+Then use paster, with a "file:///" url pointing to a fake grok release. We won't run
+buildout because the version file is not actually valid::
+
+    >>> paster = current_dir + '/bin/paster create -t grok --no-interactive '
+    >>> grok_params = ('grokexample user=a passwd=a run_buildout=false grok_release_url=' +
+    ...	               alt_url)
+    >>> sh(paster + grok_params)
+    /.../bin/paster create -t grok --no-interactive grokexample user=a passwd=a run_buildout=false
+    ...
+
+Let's check the contents::
+
+    >>> package_dir = os.path.join(tempdir, 'grokexample')
+    >>> ls(package_dir)
+    bootstrap.py
+    buildout.cfg
+    setup.py
+    src
+    versions.cfg
+
+    >>> software_dir = os.path.join(package_dir, 'src', 'grokexample')
+    >>> ls(software_dir)
+    __init__.py
+    app.py
+    app.txt
+    app_templates
+    configure.zcml
+    ftesting.zcml
+    static
+    tests.py
+
+Let's see if the information in our fake release URL was correctly propagated.
+
+    >>> cat(package_dir, 'versions.cfg')
+    # This file contains a list of versions of the various grok modules that
+    # belong together.
+    # It was downloaded from file://.../test_offline/grok-0.555.cfg
+    # when this project was created.
+    <BLANKLINE>
+    [versions]
+    grok = 0.555
+    <BLANKLINE>
+    ...
+
+    >>> cat(package_dir, 'buildout.cfg')
+    [buildout]
+    ...
+    [eggbasket]
+    recipe = z3c.recipe.eggbasket
+    eggs = grok
+    url = file:///.../grok-eggs-0.555.tgz...

Added: grokproject/branches/rochael-alternate-grok_release_url/test_offline/current
===================================================================
--- grokproject/branches/rochael-alternate-grok_release_url/test_offline/current	                        (rev 0)
+++ grokproject/branches/rochael-alternate-grok_release_url/test_offline/current	2008-09-28 10:20:11 UTC (rev 91573)
@@ -0,0 +1 @@
+grok-0.555.cfg
\ No newline at end of file

Added: grokproject/branches/rochael-alternate-grok_release_url/test_offline/grok-0.555.cfg
===================================================================
--- grokproject/branches/rochael-alternate-grok_release_url/test_offline/grok-0.555.cfg	                        (rev 0)
+++ grokproject/branches/rochael-alternate-grok_release_url/test_offline/grok-0.555.cfg	2008-09-28 10:20:11 UTC (rev 91573)
@@ -0,0 +1,2 @@
+[versions]
+grok = 0.555

Modified: grokproject/branches/rochael-alternate-grok_release_url/tests.py
===================================================================
--- grokproject/branches/rochael-alternate-grok_release_url/tests.py	2008-09-28 08:14:58 UTC (rev 91572)
+++ grokproject/branches/rochael-alternate-grok_release_url/tests.py	2008-09-28 10:20:11 UTC (rev 91573)
@@ -71,7 +71,8 @@
     open(filename, 'w').write(kwargs.get('data',''))
 
 execdir = os.path.abspath(os.path.dirname(sys.executable))
-testfiles = ['tests.txt',]# 'test_offline.txt']
+testfiles = ['tests.txt', 
+             'test_alt_url.txt',]
 
 def doc_suite(package_dir, setUp=None, tearDown=None, globs=None):
     """Returns a test suite, based on doctests found in /doctest."""

Modified: grokproject/branches/rochael-alternate-grok_release_url/tests.txt
===================================================================
--- grokproject/branches/rochael-alternate-grok_release_url/tests.txt	2008-09-28 08:14:58 UTC (rev 91572)
+++ grokproject/branches/rochael-alternate-grok_release_url/tests.txt	2008-09-28 10:20:11 UTC (rev 91573)
@@ -50,6 +50,14 @@
     test...
     zopectl...
 
+    >>> cat(package_dir, 'buildout.cfg')
+    [buildout]
+    ...
+    [eggbasket]
+    recipe = z3c.recipe.eggbasket
+    eggs = grok
+    url = http://grok.zope.org/releaseinfo/grok-eggs-...tgz...
+
 Using i18n scripts
 ------------------
 



More information about the Checkins mailing list