From 9473d17dd6703bbc570b5104672949758835a41b Mon Sep 17 00:00:00 2001 From: markotibold Date: Wed, 27 Apr 2011 13:40:46 +0200 Subject: [PATCH 1/5] Omitting all the superfluous tests. Later on we might want a nicer way to specify which apps to test, because they are now hardcoded in runtests.py. (Listdir doesn't do the trick, tried that already :-) ) --- examples/runtests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/runtests.py b/examples/runtests.py index fd79bc644..b420968fd 100644 --- a/examples/runtests.py +++ b/examples/runtests.py @@ -19,7 +19,7 @@ def main(): failures = TestRunner(None) else: test_runner = TestRunner() - failures = test_runner.run_tests(None) + failures = test_runner.run_tests(['blogpost', 'pygments_api']) sys.exit(failures) From a880bf460af4cd9135bc8cc85de9806f3f314e3c Mon Sep 17 00:00:00 2001 From: markotibold Date: Wed, 27 Apr 2011 13:47:46 +0200 Subject: [PATCH 2/5] Danielfm packaged the 1.2 release so we can now install it from his repo. --- tox.ini | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tox.ini b/tox.ini index 27c8e806e..47bb3880b 100644 --- a/tox.ini +++ b/tox.ini @@ -28,42 +28,42 @@ basepython=python2.5 deps= django==1.2.4 coverage==3.4 - https://github.com/downloads/markotibold/unittest-xml-reporting/unittest-xml-reporting-1.1.zip + unittest-xml-reporting==1.2 [testenv:py26-django12] basepython=python2.6 deps= django==1.2.4 coverage==3.4 - https://github.com/downloads/markotibold/unittest-xml-reporting/unittest-xml-reporting-1.1.zip + unittest-xml-reporting==1.2 [testenv:py27-django12] basepython=python2.7 deps= django==1.2.4 coverage==3.4 - https://github.com/downloads/markotibold/unittest-xml-reporting/unittest-xml-reporting-1.1.zip + unittest-xml-reporting==1.2 [testenv:py25-django13] basepython=python2.5 deps= django==1.3 coverage==3.4 - https://github.com/downloads/markotibold/unittest-xml-reporting/unittest-xml-reporting-1.1.zip + unittest-xml-reporting==1.2 [testenv:py26-django13] basepython=python2.6 deps= django==1.3 coverage==3.4 - https://github.com/downloads/markotibold/unittest-xml-reporting/unittest-xml-reporting-1.1.zip + unittest-xml-reporting==1.2 [testenv:py27-django13] basepython=python2.7 deps= django==1.3 coverage==3.4 - https://github.com/downloads/markotibold/unittest-xml-reporting/unittest-xml-reporting-1.1.zip + unittest-xml-reporting==1.2 ####################################### EXAMPLES ################################################ @@ -78,7 +78,7 @@ deps= Pygments==1.4 httplib2==0.6.0 Markdown==2.0.3 - https://github.com/downloads/markotibold/unittest-xml-reporting/unittest-xml-reporting-1.1.zip + unittest-xml-reporting==1.2 [testenv:py26-django12e] basepython=python2.6 @@ -91,7 +91,7 @@ deps= Pygments==1.4 httplib2==0.6.0 Markdown==2.0.3 - https://github.com/downloads/markotibold/unittest-xml-reporting/unittest-xml-reporting-1.1.zip + unittest-xml-reporting==1.2 [testenv:py27-django12e] basepython=python2.7 @@ -104,7 +104,7 @@ deps= Pygments==1.4 httplib2==0.6.0 Markdown==2.0.3 - https://github.com/downloads/markotibold/unittest-xml-reporting/unittest-xml-reporting-1.1.zip + unittest-xml-reporting==1.2 [testenv:py25-django13e] basepython=python2.5 @@ -117,7 +117,7 @@ deps= Pygments==1.4 httplib2==0.6.0 Markdown==2.0.3 - https://github.com/downloads/markotibold/unittest-xml-reporting/unittest-xml-reporting-1.1.zip + unittest-xml-reporting==1.2 [testenv:py26-django13e] basepython=python2.6 @@ -130,7 +130,7 @@ deps= Pygments==1.4 httplib2==0.6.0 Markdown==2.0.3 - https://github.com/downloads/markotibold/unittest-xml-reporting/unittest-xml-reporting-1.1.zip + unittest-xml-reporting==1.2 [testenv:py27-django13e] basepython=python2.7 @@ -143,4 +143,4 @@ deps= Pygments==1.4 httplib2==0.6.0 Markdown==2.0.3 - https://github.com/downloads/markotibold/unittest-xml-reporting/unittest-xml-reporting-1.1.zip \ No newline at end of file + unittest-xml-reporting==1.2 \ No newline at end of file From 31bfdbeb1a5911e4c313b6742dfb6cb70ee13a5c Mon Sep 17 00:00:00 2001 From: markotibold Date: Wed, 27 Apr 2011 14:28:48 +0200 Subject: [PATCH 3/5] reverse on a a sorted list which was laerady reversed is rather pointless :) --- examples/pygments_api/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/pygments_api/views.py b/examples/pygments_api/views.py index 6fb9217aa..377761b1b 100644 --- a/examples/pygments_api/views.py +++ b/examples/pygments_api/views.py @@ -25,7 +25,7 @@ def list_dir_sorted_by_ctime(dir): """Return a list of files sorted by creation time""" filepaths = [os.path.join(dir, file) for file in os.listdir(dir) if not file.startswith('.')] return [item[0] for item in sorted([(path, os.path.getctime(path)) for path in filepaths], - key=operator.itemgetter(1), reverse=True)] + key=operator.itemgetter(1), reverse=False)] def remove_oldest_files(dir, max_files): """Remove the oldest files in a directory 'dir', leaving at most 'max_files' remaining. We use this to limit the number of resources in the sandbox.""" From 391560e69c5e37edac2e3c470253e7dce3c62511 Mon Sep 17 00:00:00 2001 From: markotibold Date: Wed, 27 Apr 2011 14:29:59 +0200 Subject: [PATCH 4/5] The test was bad. It expected 11 snippets while the view made sure (as designed) that there would not be more than 10 snippets stored on disk. --- examples/pygments_api/tests.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/pygments_api/tests.py b/examples/pygments_api/tests.py index b4b01e8d1..3bdc2ec5d 100644 --- a/examples/pygments_api/tests.py +++ b/examples/pygments_api/tests.py @@ -28,12 +28,14 @@ class TestPygmentsExample(TestCase): def test_snippets_datetime_sorted(self): '''Pygments examples should be datetime sorted''' locations = [] - for snippet in 'abcdefghijk': + for snippet in 'abcdefghij': # String length must not exceed views.MAX_FILES, otherwise test fails form_data = {'code': '%s' % snippet, 'style':'friendly', 'lexer':'python'} request = self.factory.post('/pygments', data=form_data) view = views.PygmentsRoot.as_view() response = view(request) locations.append(response.items()[2][1]) + import time + time.sleep(.1) request = self.factory.get('/pygments') view = views.PygmentsRoot.as_view() response = view(request) From 116a9ee82486fb31a9132db837569460fe1eb5da Mon Sep 17 00:00:00 2001 From: markotibold Date: Wed, 27 Apr 2011 15:07:25 +0200 Subject: [PATCH 5/5] Stole some code from djangorestframework/runtests/runcoverage.py so that coverage is also implemented for the examples. Because Jenkins looks for a coverage.xml file for all defeined projects in tox.ini we need it to pass the tests. --- examples/runtests.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/examples/runtests.py b/examples/runtests.py index b420968fd..fdd358395 100644 --- a/examples/runtests.py +++ b/examples/runtests.py @@ -4,10 +4,24 @@ os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' from django.conf import settings from django.test.utils import get_runner +from coverage import coverage def main(): + """Run the tests for the examples and generate a coverage report.""" + + # Discover the list of all modules that we should test coverage for + project_dir = os.path.dirname(__file__) + cov_files = [] + for (path, dirs, files) in os.walk(project_dir): + # Drop tests and runtests directories from the test coverage report + if os.path.basename(path) == 'tests' or os.path.basename(path) == 'runtests': + continue + cov_files.extend([os.path.join(path, file) for file in files if file.endswith('.py')]) TestRunner = get_runner(settings) - + + cov = coverage() + cov.erase() + cov.start() if hasattr(TestRunner, 'func_name'): # Pre 1.2 test runners were just functions, # and did not support the 'failfast' option. @@ -21,6 +35,9 @@ def main(): test_runner = TestRunner() failures = test_runner.run_tests(['blogpost', 'pygments_api']) + cov.stop() + cov.report(cov_files) + cov.xml_report(cov_files) sys.exit(failures) if __name__ == '__main__':