Display information that a problem has been found but ignored (and therefore the migration is considered ok)
This commit is contained in:
1 parent
aa8043db74
commit
85b9abdbc3
2 files changed
+27
-12
No files matched your search
@@ -121,9 +121,15 @@ class MigrationLinter(object):
|
|||||||
|
|
||||||
sql_statements = self.get_sql(app_label, migration_name)
|
sql_statements = self.get_sql(app_label, migration_name)
|
||||||
exclude_migration_tests = self.exclude_migration_tests or []
|
exclude_migration_tests = self.exclude_migration_tests or []
|
||||||
errors = analyse_sql_statements(sql_statements, exclude_migration_tests)
|
errors, ignored = analyse_sql_statements(
|
||||||
|
sql_statements, exclude_migration_tests
|
||||||
|
)
|
||||||
|
|
||||||
if not errors:
|
if not errors:
|
||||||
|
if ignored:
|
||||||
|
print("OK (ignored)")
|
||||||
|
self.print_errors(ignored)
|
||||||
|
else:
|
||||||
print("OK")
|
print("OK")
|
||||||
self.nb_valid += 1
|
self.nb_valid += 1
|
||||||
if self.should_use_cache():
|
if self.should_use_cache():
|
||||||
|
|||||||
@@ -70,20 +70,29 @@ migration_tests = (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def get_migration_tests(exclude_migration_tests):
|
|
||||||
for test in migration_tests:
|
|
||||||
if test["code"] in exclude_migration_tests:
|
|
||||||
continue
|
|
||||||
yield test
|
|
||||||
|
|
||||||
|
|
||||||
def analyse_sql_statements(sql_statements, exclude_migration_tests):
|
def analyse_sql_statements(sql_statements, exclude_migration_tests):
|
||||||
errors = []
|
errors, ignored = [], []
|
||||||
for statement in sql_statements:
|
for statement in sql_statements:
|
||||||
for test in get_migration_tests(exclude_migration_tests):
|
for test in migration_tests:
|
||||||
if test["fn"](statement, errors=errors):
|
if test["fn"](statement, errors=errors):
|
||||||
|
if test["code"] in exclude_migration_tests:
|
||||||
|
logger.debug("Testing {0} -- IGNORED".format(statement))
|
||||||
|
table_search = re.search(
|
||||||
|
"TABLE `([^`]*)`", statement, re.IGNORECASE
|
||||||
|
)
|
||||||
|
col_search = re.search("COLUMN `([^`]*)`", statement, re.IGNORECASE)
|
||||||
|
err = {
|
||||||
|
"err_msg": test["err_msg"],
|
||||||
|
"code": test["code"],
|
||||||
|
"table": table_search.group(1) if table_search else None,
|
||||||
|
"column": col_search.group(1) if col_search else None,
|
||||||
|
}
|
||||||
|
ignored.append(err)
|
||||||
|
else:
|
||||||
logger.debug("Testing {0} -- ERROR".format(statement))
|
logger.debug("Testing {0} -- ERROR".format(statement))
|
||||||
table_search = re.search("TABLE `([^`]*)`", statement, re.IGNORECASE)
|
table_search = re.search(
|
||||||
|
"TABLE `([^`]*)`", statement, re.IGNORECASE
|
||||||
|
)
|
||||||
col_search = re.search("COLUMN `([^`]*)`", statement, re.IGNORECASE)
|
col_search = re.search("COLUMN `([^`]*)`", statement, re.IGNORECASE)
|
||||||
err = {
|
err = {
|
||||||
"err_msg": test["err_msg"],
|
"err_msg": test["err_msg"],
|
||||||
@@ -94,4 +103,4 @@ def analyse_sql_statements(sql_statements, exclude_migration_tests):
|
|||||||
errors.append(err)
|
errors.append(err)
|
||||||
else:
|
else:
|
||||||
logger.debug("Testing {0} -- PASSED".format(statement))
|
logger.debug("Testing {0} -- PASSED".format(statement))
|
||||||
return errors
|
return errors, ignored
|
||||||
Reference in new issue
Block a user