From 25335dfc8a398037363ba63e8206fc9ae60dce7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul?= Date: Tue, 8 Dec 2020 18:16:17 +0100 Subject: [PATCH] New .N git post version strategy --- CHANGES.rst | 6 ++++++ README.rst | 1 + setuptools_odoo/git_postversion.py | 4 ++++ tests/test_git_postversion.py | 21 +++++++++++++++++++++ 4 files changed, 32 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index 582e7e2f..716bc9dd 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -5,6 +5,12 @@ Changes .. ---------- .. - +2.7.0 (unreleased) +------------------ +- [UPD] update base addons lists +- [ADD] add new ``.N`` git post version strategy that adds a 6th digit with the + number of commit since the latest manifest version change + 2.6.0 (2020-10-21) ------------------ diff --git a/README.rst b/README.rst index 9104a642..cf5c206e 100644 --- a/README.rst +++ b/README.rst @@ -412,6 +412,7 @@ N being the number of git commits since the version change. ``[8|9|10|11|12].0.x.y.z.99.devN``. - Strategy ``+1.devN`` is the default for series 13 and 14 and yields ``[13|14].0.x.y.z+1.devN``. +- Strategy ``.N`` adds a digit, typically yielding ``[series].0.x.y.z.N``. - Strategy ``none`` is not used by default and disables the post versioning mechanism, yielding the version found in the manifest. diff --git a/setuptools_odoo/git_postversion.py b/setuptools_odoo/git_postversion.py index 2b44370e..7d0666b6 100644 --- a/setuptools_odoo/git_postversion.py +++ b/setuptools_odoo/git_postversion.py @@ -12,6 +12,7 @@ STRATEGY_NONE = "none" STRATEGY_99_DEVN = ".99.devN" STRATEGY_P1_DEVN = "+1.devN" +STRATEGY_DOT_N = ".N" def _run_git_command_exit_code(args, cwd=None, stderr=None): @@ -100,6 +101,7 @@ def get_git_postversion(addon_dir, strategy): * STRATEGY_NONE: return the version in the manifest as is * STRATEGY_99_DEVN: [8|9].0.x.y.z.99.devN * STRATEGY_P1_DEVN: [series].0.x.y.(z+1).devN + * STRATEGY_DOT_N: [series].0.x.y.z.N Notes: @@ -144,6 +146,8 @@ def get_git_postversion(addon_dir, strategy): return last_version + ".99.dev%s" % count elif strategy == STRATEGY_P1_DEVN: return _bump_last(last_version) + ".dev%s" % count + elif strategy == STRATEGY_DOT_N: + return last_version + ".%s" % count else: raise RuntimeError("Unknown postversion strategy: %s" % strategy) if uncommitted: diff --git a/tests/test_git_postversion.py b/tests/test_git_postversion.py index 9079c359..e26b67de 100644 --- a/tests/test_git_postversion.py +++ b/tests/test_git_postversion.py @@ -10,6 +10,7 @@ from setuptools_odoo import manifest from setuptools_odoo.git_postversion import ( STRATEGY_99_DEVN, + STRATEGY_DOT_N, STRATEGY_NONE, STRATEGY_P1_DEVN, get_git_postversion, @@ -23,6 +24,8 @@ def test_addon1(): addon1_dir = os.path.join(DATA_DIR, "addon1") version = get_git_postversion(addon1_dir, STRATEGY_99_DEVN) assert version == "8.0.1.0.0.99.dev4" + version = get_git_postversion(addon1_dir, STRATEGY_DOT_N) + assert version == "8.0.1.0.0.4" version = get_git_postversion(addon1_dir, STRATEGY_P1_DEVN) assert version == "8.0.1.0.1.dev4" version = get_git_postversion(addon1_dir, STRATEGY_NONE) @@ -34,8 +37,12 @@ def test_addon2(): addon2_dir = os.path.join(DATA_DIR, "addon2") version = get_git_postversion(addon2_dir, STRATEGY_99_DEVN) assert version == "8.0.1.0.1" + version = get_git_postversion(addon2_dir, STRATEGY_DOT_N) + assert version == "8.0.1.0.1" version = get_git_postversion(addon2_dir, STRATEGY_P1_DEVN) assert version == "8.0.1.0.1" + version = get_git_postversion(addon2_dir, STRATEGY_NONE) + assert version == "8.0.1.0.1" def test_addon2_uncommitted_version_change(): @@ -49,8 +56,12 @@ def test_addon2_uncommitted_version_change(): f.write(manifest.replace("8.0.1.0.1", "8.0.1.0.2")) version = get_git_postversion(addon2_dir, STRATEGY_99_DEVN) assert version == "8.0.1.0.2.dev1" + version = get_git_postversion(addon2_dir, STRATEGY_DOT_N) + assert version == "8.0.1.0.2.dev1" version = get_git_postversion(addon2_dir, STRATEGY_P1_DEVN) assert version == "8.0.1.0.2.dev1" + version = get_git_postversion(addon2_dir, STRATEGY_NONE) + assert version == "8.0.1.0.2" finally: with open(manifest_path, "w") as f: f.write(manifest) @@ -67,8 +78,12 @@ def test_addon1_uncommitted_change(): f.write(manifest.replace("summary", "great summary")) version = get_git_postversion(addon1_dir, STRATEGY_99_DEVN) assert version == "8.0.1.0.0.99.dev5" + version = get_git_postversion(addon1_dir, STRATEGY_DOT_N) + assert version == "8.0.1.0.0.5" version = get_git_postversion(addon1_dir, STRATEGY_P1_DEVN) assert version == "8.0.1.0.1.dev5" + version = get_git_postversion(addon1_dir, STRATEGY_NONE) + assert version == "8.0.1.0.0" finally: with open(manifest_path, "w") as f: f.write(manifest) @@ -87,11 +102,17 @@ def test_no_git(tmpdir): ) version = get_git_postversion(str(tmpdir), STRATEGY_99_DEVN) assert version == "10.0.1.2.3" + version = get_git_postversion(str(tmpdir), STRATEGY_DOT_N) + assert version == "10.0.1.2.3" version = get_git_postversion(str(tmpdir), STRATEGY_P1_DEVN) assert version == "10.0.1.2.3" + version = get_git_postversion(str(tmpdir), STRATEGY_NONE) + assert version == "10.0.1.2.3" def test_no_manifest(): with pytest.raises(manifest.NoManifestFound): get_git_postversion(DATA_DIR, STRATEGY_99_DEVN) + get_git_postversion(DATA_DIR, STRATEGY_DOT_N) get_git_postversion(DATA_DIR, STRATEGY_P1_DEVN) + get_git_postversion(DATA_DIR, STRATEGY_NONE)