# HG changeset patch # User Georges Racinet <georges.racinet@octobus.net> # Date 1606399242 -3600 # Thu Nov 26 15:00:42 2020 +0100 # Node ID 5c10f022bea2789cff0d4525462936f12de61ca9 # Parent d06c82eda802cf436d97b8de19e66d2b710503ba Removed obsole migration scripts and their tests diff --git a/conftest.py b/conftest.py deleted file mode 100644 --- a/conftest.py +++ /dev/null @@ -1,45 +0,0 @@ -import attr -import os -import pytest -import sys - -sys.path.insert(0, - os.path.join(os.path.dirname(__file__), - 'heptapod', 'assets')) - - -@attr.s -class Heptapod: - rails_root = attr.ib() - log_vol = attr.ib() - data_vol = attr.ib() - - def migrator(self): - from heptapod_migr import HeptapodMigrator - return HeptapodMigrator(rails_root=str(self.rails_root), - data_vol=str(self.data_vol), - log_vol=str(self.log_vol)) - - @property - def git_data(self): - return self.data_vol.join('git-data') - - @property - def repos_root(self): - return self.git_data.join('repositories') - - def ensure_dirs(self): - self.git_data.ensure(dir=True) - self.repos_root.ensure(dir=True) - - -@pytest.fixture() -def heptapod(tmpdir): - data = tmpdir.ensure('var', dir=True) - log = tmpdir.ensure('log', dir=True) - rails = tmpdir.ensure('rails', dir=True) - heptapod = Heptapod(rails_root=rails, - data_vol=data, - log_vol=log) - heptapod.ensure_dirs() - yield heptapod diff --git a/tests/test_migr_0_3.py b/tests/test_migr_0_3.py deleted file mode 100644 --- a/tests/test_migr_0_3.py +++ /dev/null @@ -1,40 +0,0 @@ -def test_migr(heptapod): - rails = heptapod.rails_root - rails.join('HEPTAPOD_VERSION').write('0.3.1.dev') - - migrator = heptapod.migrator() - repos_root = heptapod.repos_root - group_repo = repos_root.ensure('grp', 'repo', '.hg', dir=True) - subgroup_repo = repos_root.ensure('other', 'subgrp', - 'repo', '.hg', dir=True) - nestedsubgroup_repo = repos_root.ensure('other', 'subgrp', 'nested', - 'repo', '.hg', dir=True) - topl_repo = repos_root.ensure('top', '.hg', dir=True) - all_repos = (group_repo, subgroup_repo, nestedsubgroup_repo, topl_repo) - old_global_hgrc = repos_root.ensure('global_hgrc') - for repo in all_repos: - repo.join('hgrc').write("%include {}\n".format(old_global_hgrc)) - - migrator.pick_version_steps('0.3.0') - migrator.run_all() - - for repo in all_repos: - assert repo.join('hgrc').read() == ( - "%include /etc/gitlab/heptapod.hgrc\n") - assert not old_global_hgrc.check() - - -def test_migr_unit_no_global_hgrc(heptapod): - """Don't fail if the previous global hgrc file has already been removed.""" - migrator = heptapod.migrator() - migrator.migr_global_hgrc() - - -def test_migr_unit_no_hgrc(heptapod): - """Don't fail the whole process if some repo has no hgrc. - """ - migrator = heptapod.migrator() - repos_root = heptapod.repos_root - repos_root.ensure('global_hgrc') - repos_root.ensure('grp', 'repo', '.hg', dir=True) - migrator.migr_global_hgrc() diff --git a/tests/test_migr_0_7.py b/tests/test_migr_0_7.py deleted file mode 100644 --- a/tests/test_migr_0_7.py +++ /dev/null @@ -1,226 +0,0 @@ -def strip_comments_whitespace(lines): - return [l for l in (li.split('#', 1)[0].strip() for li in lines) if l] - - -def test_migr_full(heptapod): - rails = heptapod.rails_root - rails.join('HEPTAPOD_VERSION').write('0.6.1') - - migrator = heptapod.migrator() - repos_root = heptapod.repos_root - group_repo = repos_root.ensure('grp', 'repo', '.hg', dir=True) - hgrc = group_repo.join('hgrc') - hgrc_local = group_repo.join('hgrc.local') - hgrc.write('\n'.join(( - "%include /etc/gitlab/heptapod.hgrc", - "", - "[extensions]", - "foo=/path/to/foo.py", - "", - "[heptapod]", - "mirror-path = git+ssh://grp/repo.git", - "", - "[phases]", - "publish=true", - ))) - - migrator.pick_version_steps('0.7.0.dev1') - migrator.run_all() - - assert strip_comments_whitespace(hgrc_local.readlines()) == [ - "%include ../../hgrc", - "[extensions]", - "foo=/path/to/foo.py", - "[phases]", - "publish=true", - ] - - assert strip_comments_whitespace(hgrc.readlines()) == [ - "%include /etc/gitlab/heptapod.hgrc", - "%include hgrc.local" - ] - - -def test_migr_unit_no_hgrc(heptapod): - """Don't fail the whole process if some repo has no hgrc. - """ - migrator = heptapod.migrator() - repos_root = heptapod.repos_root - repos_root.ensure('grp', 'repo', '.hg', dir=True) - migrator.migr_default_git_sync() - - -def test_migr_existing_include(heptapod): - """Previsously set includes have to preserved. - - This is how before the group HGRCs users may have factorized - configuration over several repos (I did). - """ - migrator = heptapod.migrator() - repos_root = heptapod.repos_root - group_repo = repos_root.ensure('grp', 'repo', '.hg', dir=True) - hgrc = group_repo.join('hgrc') - hgrc_local = group_repo.join('hgrc.local') - hgrc.write('\n'.join(( - "%include /etc/gitlab/heptapod.hgrc", - "%include /path/to/first.hgrc", - "", - "[heptapod]", - "mirror-path = git+ssh://grp/repo.git", - "[phases]", - "publish = no", - "%include /path/to/second.hgrc", - ))) - - migrator.migr_default_git_sync() - - assert strip_comments_whitespace(hgrc_local.readlines()) == [ - "%include ../../hgrc", - "%include /path/to/first.hgrc", - "[phases]", - "publish = no", - "%include /path/to/second.hgrc", - ] - - -def test_migr_existing_include_right_after_section(heptapod): - """A manually previously set include ends the section - """ - migrator = heptapod.migrator() - repos_root = heptapod.repos_root - group_repo = repos_root.ensure('grp', 'repo', '.hg', dir=True) - hgrc = group_repo.join('hgrc') - hgrc_local = group_repo.join('hgrc.local') - hgrc.write('\n'.join(( - "%include /etc/gitlab/heptapod.hgrc", - "%include /path/to/first.hgrc", - "", - "[heptapod]", - "mirror-path = git+ssh://grp/repo.git", - "%include /path/to/second.hgrc", - ))) - - migrator.migr_default_git_sync() - - assert strip_comments_whitespace(hgrc_local.readlines()) == [ - "%include ../../hgrc", - "%include /path/to/first.hgrc", - "%include /path/to/second.hgrc", - ] - - -def test_migr_unit_heptapod_section_item_not_last(heptapod): - """Other settings than mirror-path must survive. - - This is mostly useful if we want to re-run later and a meaningful - setting has appeared. - """ - migrator = heptapod.migrator() - repos_root = heptapod.repos_root - group_repo = repos_root.ensure('grp', 'repo', '.hg', dir=True) - hgrc = group_repo.join('hgrc') - hgrc_local = group_repo.join('hgrc.local') - hgrc.write('\n'.join(( - "%include /etc/gitlab/heptapod.hgrc", - "", - "[heptapod]", - "mirror-path = git+ssh://grp/repo.git", - "foo = bar", - "", - "[phases]", - "publish=true", - ))) - - migrator.migr_default_git_sync() - - assert strip_comments_whitespace(hgrc_local.readlines()) == [ - "%include ../../hgrc", - "[heptapod]", - "foo = bar", - "[phases]", - "publish=true", - ] - - -def test_migr_unit_heptapod_section_item_last(heptapod): - """Other settings than mirror-path must survive. - - This is mostly useful if we want to re-run later and a meaningful - setting has appeared. - """ - migrator = heptapod.migrator() - repos_root = heptapod.repos_root - group_repo = repos_root.ensure('grp', 'repo', '.hg', dir=True) - hgrc = group_repo.join('hgrc') - hgrc_local = group_repo.join('hgrc.local') - hgrc.write('\n'.join(( - "%include /etc/gitlab/heptapod.hgrc", - "", - "[heptapod]", - "mirror-path = git+ssh://grp/repo.git", - "foo = bar", - ))) - - migrator.migr_default_git_sync() - - assert strip_comments_whitespace(hgrc_local.readlines()) == [ - "%include ../../hgrc", - "[heptapod]", - "foo = bar", - ] - - -def test_migr_unit_heptapod_section_only_comments(heptapod): - """The heptapod section must disappear if only comments besides mirror-path - """ - migrator = heptapod.migrator() - repos_root = heptapod.repos_root - group_repo = repos_root.ensure('grp', 'repo', '.hg', dir=True) - hgrc = group_repo.join('hgrc') - hgrc_local = group_repo.join('hgrc.local') - hgrc.write('\n'.join(( - "%include /etc/gitlab/heptapod.hgrc", - "", - "[heptapod]", - "mirror-path = git+ssh://grp/repo.git", - "# I enjoy making some comments" - "", - "[phases]", - "publish=true", - ))) - - migrator.migr_default_git_sync() - - assert strip_comments_whitespace(hgrc_local.readlines()) == [ - "%include ../../hgrc", - "[phases]", - "publish=true", - ] - - -def test_migr_subgroup(heptapod): - """Subgroups HGRCs must be initialized. - """ - migrator = heptapod.migrator() - repos_root = heptapod.repos_root - subgroup = repos_root.ensure('grp', 'sub', dir=True) - subgroup_repo = subgroup.ensure('repo', '.hg', dir=True) - - subgroup_hgrc = subgroup.join('hgrc') - repo_hgrc = subgroup_repo.join('hgrc') - hgrc_local = subgroup_repo.join('hgrc.local') - repo_hgrc.write('\n'.join(( - "%include /etc/gitlab/heptapod.hgrc", - "", - "[heptapod]", - "mirror-path = git+ssh://grp/repo.git", - ))) - - migrator.migr_default_git_sync() - - assert strip_comments_whitespace(hgrc_local.readlines()) == [ - "%include ../../hgrc", - ] - assert strip_comments_whitespace(subgroup_hgrc.readlines()) == [ - "%include ../hgrc", - ] diff --git a/tests/test_migr_runner.py b/tests/test_migr_runner.py deleted file mode 100644 --- a/tests/test_migr_runner.py +++ /dev/null @@ -1,123 +0,0 @@ -"""General tests for the migration runner. - -These should not test a given step. -""" -from heptapod_migr import parse_version - - -def should_not_be_called(name): - def wrapped(*a, **kw): - raise AssertionError("%s should not have been called, " - "args=%r, kwargs=%r" % (name, a, kw)) - return wrapped - - -def failing(msg): - def wrapped(*a, **kw): - raise RuntimeError(msg) - - return wrapped - - -def record(msg, acc): - """Create a function that appends its message into the `acc` list.""" - def wrapped(*a, **kw): - acc.append(msg) - return wrapped - - -def test_migr_basic_operation(heptapod): - """Only steps for the appropriate versions get run, final version is pkg - """ - rails = heptapod.rails_root - rails.join('HEPTAPOD_VERSION').write('1.2.3') - migrator = heptapod.migrator() - migrator.write_migrated_version(parse_version('1.0')) - done = [] - migrator.all_steps = [('1.0.0', record('step for 1.0.0', done)), - ('1.1.0', record('step for 1.1.0', done)) - ] - migrator.run_all() - assert done == ['step for 1.1.0'] - assert heptapod.git_data.join('HEPTAPOD_VERSION').read() == '1.2.3' - - -def test_migr_dev_versions(heptapod): - """Often migration steps are introduced in intermediate versions. - """ - rails = heptapod.rails_root - rails.join('HEPTAPOD_VERSION').write('1.2.3') - migrator = heptapod.migrator() - migrator.write_migrated_version(parse_version('1.0')) - done = [] - migrator.all_steps = [('1.0.0', record('step for 1.0.0', done)), - ('1.1.0.dev1', record('step for dev version', done)) - ] - migrator.run_all() - assert done == ['step for dev version'] - assert heptapod.git_data.join('HEPTAPOD_VERSION').read() == '1.2.3' - - -def test_migr_early_return(heptapod): - rails = heptapod.rails_root - rails.join('HEPTAPOD_VERSION').write('1.2.3') - migrator = heptapod.migrator() - migrator.write_migrated_version(parse_version('1.2.3')) - migrator.step = should_not_be_called('step()') - migrator.run_all() - - -def test_runner_idempotency(heptapod): - rails = heptapod.rails_root - rails.join('HEPTAPOD_VERSION').write('1.2.3') - migrator = heptapod.migrator() - migrator.write_migrated_version(parse_version('1.1')) - migrator.all_steps = [('1.0', should_not_be_called("step for 1.0"))] - migrator.run_all() - - -def test_logging_config(heptapod): - """At the very least, test that it doesn't break.""" - migrator = heptapod.migrator() - migrator.setup_logging() - - -def test_stop_log_on_uncatched(heptapod): - rails = heptapod.rails_root - rails.join('HEPTAPOD_VERSION').write('1.4.0') - migrator = heptapod.migrator() - migrator.write_migrated_version(parse_version('1.0')) - done = [] - migrator.all_steps = [('1.1.0', record('step before failure', done)), - ('1.2.0', failing('bogus step')), - ('1.3.0', record('step after failure', done)), - ] - try: - migrator.run_all() - except RuntimeError as exc: - assert str(exc) == 'bogus step' - assert done == ['step before failure'] - assert heptapod.git_data.join('HEPTAPOD_VERSION').read() == '1.1.0' - - -def test_walk_for_repos(heptapod): - migrator = heptapod.migrator() - repos_root = heptapod.repos_root - repos_root.ensure('grp', 'somefile') - repos_root.ensure('grp', 'repo', '.hg', dir=True) - repos_root.ensure('grp', 'repo.git', dir=True) - repos_root.ensure('grp', 'repo.git', 'sub', dir=True) - repos_root.ensure('grp', 'repo', '.hg', 'wd_dir', dir=True) - repos_root.ensure('grp', 'repo', '.hg', 'wd_file') - repos_root.ensure('grp', 'sub', 'repo', '.hg', dir=True) - repos_root.ensure('grp', 'sub', 'nested', 'repo', '.hg', dir=True) - - assert set(migrator.walk_for_repos()) == { - (False, 0, str(repos_root)), - (False, 1, str(repos_root.join('grp'))), - (True, 2, str(repos_root.join('grp', 'repo'))), - (False, 2, str(repos_root.join('grp', 'sub'))), - (True, 3, str(repos_root.join('grp', 'sub', 'repo'))), - (False, 3, str(repos_root.join('grp', 'sub', 'nested'))), - (True, 4, str(repos_root.join('grp', 'sub', 'nested', 'repo'))), - } diff --git a/tests/util.py b/tests/util.py deleted file mode 100644 --- a/tests/util.py +++ /dev/null @@ -1,6 +0,0 @@ -def prepare_heptapod(tmpdir): - """Create the needed files and directories. - - This is probably not worth a fixture (nothing to tear down) and - a simple way to have the caller know the paths is to have it give them. - """