[Checkins] SVN: grokproject/trunk/tests Moved test setup and teardown to test suite.

Jan-Jaap Driessen jdriessen at thehealthagency.com
Mon Apr 19 11:14:27 EDT 2010


Log message for revision 111105:
  Moved test setup and teardown to test suite.

Changed:
  U   grokproject/trunk/tests.py
  U   grokproject/trunk/tests_alternative_release_url.txt
  U   grokproject/trunk/tests_paste.txt

-=-
Modified: grokproject/trunk/tests.py
===================================================================
--- grokproject/trunk/tests.py	2010-04-19 15:13:50 UTC (rev 111104)
+++ grokproject/trunk/tests.py	2010-04-19 15:14:27 UTC (rev 111105)
@@ -117,8 +117,16 @@
     rmdir(path)
     
 
-tempdir = os.getenv('TEMP','/tmp')
+def setup(test):
+    eggsdir = os.path.join(tempfile.gettempdir(), 'grokproject-test-eggs')
+    maybe_mkdir(eggsdir)
+    test.globs['eggsdir'] = eggsdir
+    test.globs['testdir'] = tempfile.mkdtemp()
 
+def teardown(test):
+    maybe_rmdir(test.globs['eggsdir'])
+    shutil.rmtree(test.globs['testdir'])
+
 def doc_suite(package_dir):
     """Returns a test suite"""
     suite = []
@@ -131,12 +139,22 @@
     tests = [os.path.join(package_dir, filename)
             for filename in [
                 'tests_paste.txt', 'tests_alternative_release_url.txt']]
+    globs = {
+        'ls': ls,
+        'cd': cd,
+        'cat': cat,
+        'touch': touch,
+        'sh': sh,
+        'read_sh': read_sh,
+        'current_dir': current_dir,
+    }
 
     for test in tests:
         suite.append(doctest.DocFileSuite(test, optionflags=flags,
-                                          globs=globals(),
+                                          globs=globs,
+                                          setUp=setup,
+                                          tearDown=teardown,
                                           module_relative=False))
-
     return unittest.TestSuite(suite)
 
 def test_suite():

Modified: grokproject/trunk/tests_alternative_release_url.txt
===================================================================
--- grokproject/trunk/tests_alternative_release_url.txt	2010-04-19 15:13:50 UTC (rev 111104)
+++ grokproject/trunk/tests_alternative_release_url.txt	2010-04-19 15:14:27 UTC (rev 111105)
@@ -8,7 +8,8 @@
 "file:///" URL pointing to a directory with a fake set of grok release
 information files:
 
-    >>> testdir = tempfile.mkdtemp() # can be removed when tempdir becomes really temporary
+    >>> cd(testdir)
+    >>> import os.path
     >>> fake_release = os.path.join(testdir, 'fake_release')
     >>> os.mkdir(fake_release)
     >>> touch(fake_release, 'current', data='grok-0.555.cfg')
@@ -28,13 +29,13 @@
 Let's use paster, with a "file:///" url pointing to the fake grok release. We
 won't run buildout because the version file is not actually valid::
 
-    >>> paster = current_dir + '/bin/paster'
+    >>> paster = [os.path.join(current_dir, 'bin', 'paster')]
     >>> paster_params = ('create -t grok --no-interactive -o'.split() +
     ...                  [testdir])
     >>> grok_params = ('grokexample user=a passwd=a run_buildout=false '
     ...                'grok_release_url=' + alt_url).split()
-    >>> sh([paster] + paster_params + grok_params)
-    ['/.../bin/paster', 'create', '-t', 'grok', '--no-interactive',
+    >>> sh(paster + paster_params + grok_params)
+    ['.../bin/paster', 'create', '-t', 'grok', '--no-interactive',
      '-o', ... 'grokexample', 'user=a', 'passwd=a', 'run_buildout=false',
      'grok_release_url=file:///.../fake_release/']
     ...
@@ -42,6 +43,13 @@
 Let's check the contents::
 
     >>> package_dir = os.path.join(testdir, 'grokexample')
+    >>> print open(os.path.join(package_dir, 'buildout.cfg')).read()
+    [buildout]
+    extends = file:///.../fake_release/0.555/versions.cfg
+    extends-cache = cache
+    find-links = file:///.../fake_release/0.555/eggs/
+    ...
+
     >>> ls(package_dir)
     bootstrap.py
     buildout.cfg
@@ -61,6 +69,3 @@
     static
     tests.py
 
-Cleanup:
-
-    >>> rmdir(package_dir)

Modified: grokproject/trunk/tests_paste.txt
===================================================================
--- grokproject/trunk/tests_paste.txt	2010-04-19 15:13:50 UTC (rev 111104)
+++ grokproject/trunk/tests_paste.txt	2010-04-19 15:14:27 UTC (rev 111105)
@@ -1,28 +1,16 @@
 Grokproject tests
 =================
 
-Go to a directory::
+Go to a fresh test directory::
 
-    >>> cd(tempdir)
+    >>> cd(testdir)
 
-Check that the directory does not exist::
-
-    >>> rmdir('GrokExample')
-
-Create an empty eggs directory. So we make sure that we don't have to
-care for arbitrary eggs, that were installed in the user's environment
-before. If this directory contains a file ``shorttests`` and the eggs
-directory exists already, then we leave it untouched::
-
-    >>> tempeggs = 'grokexample-eggs'
-    >>> eggsdir = os.path.join(tempdir, tempeggs)
-    >>> maybe_mkdir(eggsdir)
-
 Then use paster. 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 = [current_dir + '/bin/grokproject']
+    >>> executable = [os.path.join(current_dir, 'bin', 'grokproject')]
     >>> opts = ['--user=a', '--passwd=a', '--eggs-dir=' + eggsdir]
     >>> grokversion = ['--grokversion=1.1rc1']
     >>> sh(executable + opts + grokversion + ['GrokExample'])
@@ -39,7 +27,13 @@
 
 Let's check the contents::
 
-    >>> package_dir = os.path.join(tempdir, 'GrokExample')
+    >>> package_dir = os.path.join(testdir, 'GrokExample')
+    >>> print open(os.path.join(package_dir, 'buildout.cfg')).read()
+    [buildout]
+    extends = http://grok.zope.org/releaseinfo/1.1rc1/versions.cfg
+    find-links = http://grok.zope.org/releaseinfo/1.1rc1/eggs/
+    ...
+
     >>> ls(package_dir)
     .installed.cfg
     bin
@@ -101,7 +95,7 @@
 cached versions file for 1.1rc1 will look like:
 
     >>> ls(os.path.join(package_dir, 'cache'))
-    6a3f22ca3d6177f67814aa5ce2d48c62
+    000739fbb1c7d540a2861c7476c5ec2d
 
 We used a projectname with uppercase letters. This is respected by
 configuration files::
@@ -266,8 +260,8 @@
 We can influence the version of grok to be installed by using the
 ``grokversion`` parameter. 
 
-    >>> cd(tempdir)
-    >>> package_dir = os.path.join(tempdir, 'GrokExample2')
+    >>> cd(testdir)
+    >>> package_dir = os.path.join(testdir, 'GrokExample2')
     >>> grokversion = ['--grokversion=1.1a2']
     >>> # WARNING: We know that running the buildout of grok 1.1a2 has a 
     >>> # buildout failure. That's OK for this test, as we want to show 
@@ -277,7 +271,6 @@
     '--grokversion=1.1a2', 'GrokExample2']
     Creating directory ./GrokExample2
     Downloading zc.buildout...
-    ...
     Invoking zc.buildout...
     *************** PICKED VERSIONS ****************
     [versions]
@@ -290,12 +283,5 @@
     ...
 
     >>> ls(os.path.join(package_dir, 'cache'))
-    76cda68c4f673d08a52e03fc4a3e0b65
+    6ac204ce415265b11b4a9a4701f2a04f
 
-Clean up::
-
-    >>> cd(tempdir)
-    >>> rmdir('GrokExample')
-    >>> rmdir('GrokExample2')
-    >>> maybe_rmdir(eggsdir)
-



More information about the checkins mailing list