[Checkins] SVN: grokproject/trunk/ Better checks and tests for faulty project names.
Jan-Jaap Driessen
jdriessen at thehealthagency.com
Wed Feb 2 06:17:34 EST 2011
Log message for revision 120044:
Better checks and tests for faulty project names.
Changed:
U grokproject/trunk/CHANGES.txt
U grokproject/trunk/grokproject/main.py
U grokproject/trunk/tests_paste.txt
-=-
Modified: grokproject/trunk/CHANGES.txt
===================================================================
--- grokproject/trunk/CHANGES.txt 2011-02-02 10:28:40 UTC (rev 120043)
+++ grokproject/trunk/CHANGES.txt 2011-02-02 11:17:33 UTC (rev 120044)
@@ -4,7 +4,7 @@
2.5 (unreleased)
----------------
-- Nothing changed yet.
+- Better checks and tests for faulty project names.
2.4 (2011-01-20)
Modified: grokproject/trunk/grokproject/main.py
===================================================================
--- grokproject/trunk/grokproject/main.py 2011-02-02 10:28:40 UTC (rev 120043)
+++ grokproject/trunk/grokproject/main.py 2011-02-02 11:17:33 UTC (rev 120044)
@@ -5,7 +5,7 @@
import re
from grokproject import GrokProject
-project_name_re=re.compile('[a-zA-Z_][a-zA-Z0-9_]*')
+project_name_re=re.compile('[A-z_][A-z0-9_]*')
def main(vars=GrokProject.vars, template_name='grok'):
usage = "usage: %prog [options] PROJECT"
@@ -68,13 +68,25 @@
extra_args.append('version_url=%s' % options.version_url)
# Assert that the project name is a valid Python identifier.
- if not (project_name_re.match(project).group() == project):
+ if not project_name_re.match(project):
print
print "Error: The chosen project name is not a valid " \
"package name: %s." % project
print "Please choose a different project name."
sys.exit(1)
+ existing = False
+ try:
+ __import__(project)
+ existing = True
+ except ImportError:
+ pass
+ if existing:
+ print
+ print "Error: The package '%s' is already on sys.path." % project
+ print "Please choose a different project name."
+ sys.exit(1)
+
# Create the project.
exit_code = runner.run(option_args + ['-t', template_name, project] + extra_args)
sys.exit(exit_code)
Modified: grokproject/trunk/tests_paste.txt
===================================================================
--- grokproject/trunk/tests_paste.txt 2011-02-02 10:28:40 UTC (rev 120043)
+++ grokproject/trunk/tests_paste.txt 2011-02-02 11:17:33 UTC (rev 120044)
@@ -5,16 +5,15 @@
>>> cd(testdir)
-Then use paster. Eggs are placed in our freshly created eggs directory:
+Eggs are placed in our freshly created eggs directory:
>>> import os.path
>>> # Use a specific grok version, because 'current' will change at some
>>> # point in the future.
>>> executable = [os.path.join(current_dir, 'bin', 'grokproject')]
>>> opts = ['--user=a', '--passwd=a', '--eggs-dir=' + eggsdir]
- >>> version = [
- ... '--version-url=http://grok.zope.org/releaseinfo/1.3/versions.cfg']
- >>> sh(executable + opts + version + ['GrokExample'])
+ >>> opts += ['--version-url=http://grok.zope.org/releaseinfo/1.3/versions.cfg']
+ >>> sh(executable + opts + ['GrokExample'])
['...grokproject',
'--user=a',
'--passwd=a',
@@ -308,3 +307,18 @@
<BLANKLINE>
*************** /PICKED VERSIONS ***************
<BLANKLINE>
+
+Invalid project names
+---------------------
+
+We check for invalid project names:
+
+ >>> sh(executable + opts + ['360profile'])
+ [...]
+ Error: The chosen project name is not a valid package name: 360profile.
+ Please choose a different project name.
+
+ >>> sh(executable + opts + ['profile'])
+ [...]
+ Error: The package 'profile' is already on sys.path.
+ Please choose a different project name.
More information about the checkins
mailing list