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
This commit is contained in:
parent
a513fcb455
commit
3e97535907
|
@ -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,
|
# Some backends can't execute more than one SQL statement at a time,
|
||||||
# so split into separate statements.
|
# so split into separate statements.
|
||||||
sql_expr = re.compile(
|
sql_expr = re.compile(
|
||||||
r"""( # each statement is...
|
r"""( # each statement ...
|
||||||
(?: # one or more chunks of ...
|
[^\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
|
(?:[^;'"]+) # not the end of a statement or start of a quote
|
||||||
| (?:'[^']*') # something in single quotes
|
| (?:'[^']*') # something in single quotes
|
||||||
| (?:"[^"]*") # something in double quotes
|
| (?:"[^"]*") # something in double quotes
|
||||||
|
|
|
@ -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.
|
|
@ -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');
|
||||||
|
|
|
@ -34,8 +34,13 @@ ALWAYS_INSTALLED_APPS = [
|
||||||
]
|
]
|
||||||
|
|
||||||
def get_test_models():
|
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('.')] +\
|
models = []
|
||||||
[(REGRESSION_TESTS_DIR_NAME, f) for f in os.listdir(REGRESSION_TEST_DIR) if not f.startswith('__init__') and not f.startswith('.')]
|
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):
|
class DjangoDoctestRunner(doctest.DocTestRunner):
|
||||||
def __init__(self, verbosity_level, *args, **kwargs):
|
def __init__(self, verbosity_level, *args, **kwargs):
|
||||||
|
|
Loading…
Reference in New Issue