def test_new_duplicate(sample_config): initialize(sample_config) args = cli.parser.parse_args(["newdb", "new", "First script"]) cli.dispatch(args, sample_config) with pytest.raises(exceptions.ScriptAlreadyExists): cli.dispatch(args, sample_config)
def test_initial_upgrade(self): args = cli.parser.parse_args(["test", "upgrade"]) cli.dispatch(args, self.cfg) self.assertEqual( list(self.db0.migrations), ["INITIAL", "aaaa_first", "bbbb_second", "cccc_third"], )
def test_new_on_repo_init(sample_config, migrant_backend): backend = MockedBackend([]) migrant_backend.set(backend) args = cli.parser.parse_args(["newdb", "init"]) cli.dispatch(args, sample_config) assert backend.inits == 1
def test_status_clean(self): self.db0.migrations.extend(["aaaa_first", "bbbb_second", "cccc_third"]) args = cli.parser.parse_args(["test", "status"]) cli.dispatch(args, self.cfg) log = self.logstream.getvalue() self.assertIn("Up-to-date", log)
def test_status_dirty(self): self.db0.migrations.extend(["aaaa_first"]) args = cli.parser.parse_args(["test", "status"]) cli.dispatch(args, self.cfg) log = self.logstream.getvalue() self.assertIn("Pending actions: 2", log)
def test_upgrade_particular(self): self.db0.migrations.extend(["aaaa_first"]) args = cli.parser.parse_args( ["test", "upgrade", "--revision", "bbbb_second"]) cli.dispatch(args, self.cfg) self.assertEqual(list(self.db0.migrations), ["aaaa_first", "bbbb_second"]) self.assertEqual(dict(self.db0.data), {"value": "b"})
def test_upgrade_latest(self): self.db0.migrations.extend(["aaaa_first"]) args = cli.parser.parse_args(["test", "upgrade"]) cli.dispatch(args, self.cfg) self.assertEqual(list(self.db0.migrations), ["aaaa_first", "bbbb_second", "cccc_third"]) self.assertEqual(dict(self.db0.data), {"hello": "world", "value": "c"})
def test_dry_run_upgrade(self): self.db0.migrations.extend(["aaaa_first"]) self.db0.data.update({"value": "a"}) args = cli.parser.parse_args(["test", "upgrade", "--dry-run"]) cli.dispatch(args, self.cfg) self.assertEqual(list(self.db0.migrations), ["aaaa_first"]) self.assertEqual(dict(self.db0.data), {"value": "a"})
def test_new_initialized(sample_config): initialize(sample_config) args = cli.parser.parse_args(["newdb", "new", "First script"]) cli.dispatch(args, sample_config) with open(get_scripts_filename(sample_config)) as slist: lines = slist.readlines() assert len(lines) == 3 assert lines[-1].strip().endswith("_first_script.py")
def test_new_on_new_script(sample_config, migrant_backend): backend = MockedBackend([]) migrant_backend.set(backend) initialize(sample_config) args = cli.parser.parse_args(["newdb", "new", "First script"]) cli.dispatch(args, sample_config) assert len(backend.new_scripts) == 1 assert backend.new_scripts[0].endswith("_first_script")
def test_subsequent_emtpy_upgrade(self): args = cli.parser.parse_args(["test", "upgrade"]) cli.dispatch(args, self.cfg) # this should be a noop cli.dispatch(args, self.cfg) self.assertEqual( list(self.db0.migrations), ["INITIAL", "aaaa_first", "bbbb_second", "cccc_third"], )
def test_downgrade_to_initial(self): self.db0.migrations.extend( ["INITIAL", "aaaa_first", "bbbb_second", "cccc_third"]) self.db0.data.update({"hello": "world", "value": "c"}) args = cli.parser.parse_args( ["test", "upgrade", "--revision", "INITIAL"]) cli.dispatch(args, self.cfg) self.assertEqual(list(self.db0.migrations), ["INITIAL"]) self.assertEqual(dict(self.db0.data), {})
def test_init_subsequent(sample_config): os.mkdir(sample_config.get("newdb", "repository")) slistfname = get_scripts_filename(sample_config) with open(slistfname, "w") as f: f.write("aaaa_test.py") args = cli.parser.parse_args(["newdb", "init"]) cli.dispatch(args, sample_config) with open(slistfname) as slist: assert slist.read() == "aaaa_test.py"
def test_no_scripts(self): args = cli.parser.parse_args(["virgin", "upgrade"]) cli.dispatch(args, self.cfg) self.assertEqual(list(self.db0.migrations), ["INITIAL"])
def test_new_uninitialized(sample_config): args = cli.parser.parse_args(["newdb", "new", "First script"]) with pytest.raises(exceptions.RepositoryNotFound): cli.dispatch(args, sample_config)
def test_init(sample_config): args = cli.parser.parse_args(["newdb", "init"]) cli.dispatch(args, sample_config) repodir = sample_config.get("newdb", "repository") assert os.path.exists(repodir)
def initialize(cfg): # Initialize repository args = cli.parser.parse_args(["newdb", "init"]) cli.dispatch(args, cfg)