diff options
| author | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2006-06-20 07:12:45 +0000 |
|---|---|---|
| committer | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2006-06-20 07:12:45 +0000 |
| commit | 3e97535907baa7b57c9bf322871ef6243e2045a9 (patch) | |
| tree | 5582b52d992a79567ed86fdeb5bac5aa7f544eb8 | |
| parent | a513fcb455c31e574821e966cd199efca52edd6d (diff) | |
Fixed #2161 -- handle trailing newlines in initial SQL data. Includes
regression test. Thanks to russellm.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@3177 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/core/management.py | 5 | ||||
| -rw-r--r-- | tests/regressiontests/initial_sql_regress/__init__.py | 0 | ||||
| -rw-r--r-- | tests/regressiontests/initial_sql_regress/models.py | 13 | ||||
| -rw-r--r-- | tests/regressiontests/initial_sql_regress/sql/simple.sql | 5 | ||||
| -rwxr-xr-x | tests/runtests.py | 9 |
5 files changed, 28 insertions, 4 deletions
diff --git a/django/core/management.py b/django/core/management.py index 06c7f3ab1b..684020f9d1 100644 --- a/django/core/management.py +++ b/django/core/management.py @@ -334,8 +334,9 @@ def get_sql_initial_data_for_model(model): # Some backends can't execute more than one SQL statement at a time, # so split into separate statements. sql_expr = re.compile( - r"""( # each statement is... - (?: # one or more chunks of ... + r"""( # each statement ... + [^\r\n;] # starts with something other than a line ending or ';' + (?: # then has one or more chunks of ... (?:[^;'"]+) # not the end of a statement or start of a quote | (?:'[^']*') # something in single quotes | (?:"[^"]*") # something in double quotes diff --git a/tests/regressiontests/initial_sql_regress/__init__.py b/tests/regressiontests/initial_sql_regress/__init__.py new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tests/regressiontests/initial_sql_regress/__init__.py diff --git a/tests/regressiontests/initial_sql_regress/models.py b/tests/regressiontests/initial_sql_regress/models.py new file mode 100644 index 0000000000..c4cf12bdf7 --- /dev/null +++ b/tests/regressiontests/initial_sql_regress/models.py @@ -0,0 +1,13 @@ +""" +Regression tests for initial SQL insertion. +""" + +from django.db import models + +class Simple(models.Model): + name = models.CharField(maxlength = 50) + +API_TESTS = "" + +# NOTE: The format of the included SQL file for this test suite is important. +# It must end with a trailing newline in order to test the fix for #2161. diff --git a/tests/regressiontests/initial_sql_regress/sql/simple.sql b/tests/regressiontests/initial_sql_regress/sql/simple.sql new file mode 100644 index 0000000000..ac60c0c3d6 --- /dev/null +++ b/tests/regressiontests/initial_sql_regress/sql/simple.sql @@ -0,0 +1,5 @@ +INSERT INTO initial_sql_regress_simple (name) VALUES ('John'); +INSERT INTO initial_sql_regress_simple (name) VALUES ('Paul'); +INSERT INTO initial_sql_regress_simple (name) VALUES ('Ringo'); +INSERT INTO initial_sql_regress_simple (name) VALUES ('George'); + diff --git a/tests/runtests.py b/tests/runtests.py index bb0d15db8c..a43985175e 100755 --- a/tests/runtests.py +++ b/tests/runtests.py @@ -34,8 +34,13 @@ ALWAYS_INSTALLED_APPS = [ ] def get_test_models(): - return [(MODEL_TESTS_DIR_NAME, f) for f in os.listdir(MODEL_TEST_DIR) if not f.startswith('__init__') and not f.startswith('.')] +\ - [(REGRESSION_TESTS_DIR_NAME, f) for f in os.listdir(REGRESSION_TEST_DIR) if not f.startswith('__init__') and not f.startswith('.')] + models = [] + for loc in MODEL_TESTS_DIR_NAME, REGRESSION_TESTS_DIR_NAME: + for f in os.listdir(loc): + if f.startswith('__init__') or f.startswith('.') or f.startswith('sql'): + continue + models.append((loc, f)) + return models class DjangoDoctestRunner(doctest.DocTestRunner): def __init__(self, verbosity_level, *args, **kwargs): |
