[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