From 521a87c900a19e39f9e508c898cb191acfc75199 Mon Sep 17 00:00:00 2001 From: Andi Albrecht Date: Thu, 17 Jun 2010 20:07:23 +0200 Subject: Move regression test to separate directory. --- tests/regressiontests/__init__.py | 0 tests/regressiontests/issue9.py | 18 ++++++++++++++++++ tests/run_tests.py | 32 +++++++++++++++++++++++++------- tests/test_regressions.py | 20 -------------------- 4 files changed, 43 insertions(+), 27 deletions(-) create mode 100644 tests/regressiontests/__init__.py create mode 100644 tests/regressiontests/issue9.py delete mode 100644 tests/test_regressions.py diff --git a/tests/regressiontests/__init__.py b/tests/regressiontests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/regressiontests/issue9.py b/tests/regressiontests/issue9.py new file mode 100644 index 0000000..b40d88a --- /dev/null +++ b/tests/regressiontests/issue9.py @@ -0,0 +1,18 @@ +import unittest + +import sqlparse +from sqlparse import tokens as T +from sqlparse.engine.grouping import Statement, Parenthesis + + +class TestIssue9(unittest.TestCase): + + def test_where_doesnt_consume_parenthesis(self): + p = sqlparse.parse('(where 1)')[0] + self.assert_(isinstance(p, Statement)) + self.assertEqual(len(p.tokens), 1) + self.assert_(isinstance(p.tokens[0], Parenthesis)) + prt = p.tokens[0] + self.assertEqual(len(prt.tokens), 3) + self.assertEqual(prt.tokens[0].ttype, T.Punctuation) + self.assertEqual(prt.tokens[-1].ttype, T.Punctuation) diff --git a/tests/run_tests.py b/tests/run_tests.py index 9a532fc..c057216 100755 --- a/tests/run_tests.py +++ b/tests/run_tests.py @@ -3,6 +3,7 @@ """Test runner for sqlparse.""" +import fnmatch import optparse import os import sys @@ -19,17 +20,34 @@ parser.add_option('-P', '--profile', action='store_true', default=False) +def _path_matches(path, *patterns): + if not patterns: + return True + for pattern in patterns: + if fnmatch.fnmatch(path, pattern): + return True + return False + + +def _collect_test_modules(base=None, *patterns): + for root, dirnames, filenames in os.walk(os.path.dirname(__file__)): + print root, filenames + for fname in filenames: + if not fname.endswith('.py'): + continue + elif not _path_matches(os.path.join(root, fname), *patterns): + continue + if not root in sys.path: + sys.path.append(root) + modname = os.path.splitext(fname)[0] + yield __import__(modname) + + def main(args): """Create a TestSuite and run it.""" loader = unittest.TestLoader() suite = unittest.TestSuite() - fnames = [os.path.split(f)[-1] for f in args] - for fname in os.listdir(os.path.dirname(__file__)): - if (not fname.startswith('test_') or not fname.endswith('.py') - or (fnames and fname not in fnames)): - continue - modname = os.path.splitext(fname)[0] - mod = __import__(os.path.splitext(fname)[0]) + for mod in _collect_test_modules(*args): suite.addTests(loader.loadTestsFromModule(mod)) return unittest.TextTestRunner(verbosity=2).run(suite) diff --git a/tests/test_regressions.py b/tests/test_regressions.py deleted file mode 100644 index 41ca531..0000000 --- a/tests/test_regressions.py +++ /dev/null @@ -1,20 +0,0 @@ -# -*- coding: utf-8 -*- - -import sqlparse -from sqlparse import tokens as T -from sqlparse.engine.grouping import * - -from tests.utils import TestCaseBase - - -class TestRegression(TestCaseBase): - - def test_where_doesnt_consume_parenthesis(self): # issue9 - p = sqlparse.parse('(where 1)')[0] - self.assert_(isinstance(p, Statement)) - self.assertEqual(len(p.tokens), 1) - self.assert_(isinstance(p.tokens[0], Parenthesis)) - prt = p.tokens[0] - self.assertEqual(len(prt.tokens), 3) - self.assertEqual(prt.tokens[0].ttype, T.Punctuation) - self.assertEqual(prt.tokens[-1].ttype, T.Punctuation) -- cgit v1.2.1