diff --git a/.gitignore b/.gitignore index 3eb4f30817..a7f29d9aee 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ AUTHORS build/ dist/ etc/keystone.conf +tests/test.db.pristine diff --git a/keystone/common/sql/util.py b/keystone/common/sql/util.py index 126b887eeb..8c98aeadbe 100644 --- a/keystone/common/sql/util.py +++ b/keystone/common/sql/util.py @@ -15,6 +15,7 @@ # under the License. import os +import shutil from keystone import config from keystone.common.sql import migration @@ -24,9 +25,13 @@ CONF = config.CONF def setup_test_database(): - # TODO(termie): be smart about this try: - os.unlink('test.db') + if os.path.exists('test.db'): + os.unlink('test.db') + if not os.path.exists('test.db.pristine'): + migration.db_sync() + shutil.copyfile('test.db', 'test.db.pristine') + else: + shutil.copyfile('test.db.pristine', 'test.db') except Exception: pass - migration.db_sync() diff --git a/run_tests.py b/run_tests.py index 9e8b676674..25ad7dc888 100644 --- a/run_tests.py +++ b/run_tests.py @@ -66,6 +66,8 @@ from nose import config from nose import core from nose import result +from keystone.common.sql import util + class _AnsiColorizer(object): """ @@ -357,4 +359,7 @@ if __name__ == '__main__': verbosity=c.verbosity, config=c, show_elapsed=show_elapsed) + if os.path.exists('tests/test.db.pristine'): + os.unlink('tests/test.db.pristine') + sys.exit(not core.run(config=c, testRunner=runner, argv=argv))