diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2022-11-17 05:44:49 -0500 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2022-11-17 07:01:54 -0500 |
commit | 66c45143008366726293a341405d45a3a8e9ed87 (patch) | |
tree | 756e2efc0151471331bb6012d98529c0371df7ad | |
parent | 709c7443e30b20226c4fb61acaf47de529a7688c (diff) | |
download | python-coveragepy-git-66c45143008366726293a341405d45a3a8e9ed87.tar.gz |
build: allow for .devN version numbers
-rw-r--r-- | coverage/version.py | 18 | ||||
-rw-r--r-- | igor.py | 13 | ||||
-rw-r--r-- | tests/test_html.py | 2 | ||||
-rw-r--r-- | tests/test_version.py | 17 |
4 files changed, 34 insertions, 16 deletions
diff --git a/coverage/version.py b/coverage/version.py index 8ebeee40..2c051f84 100644 --- a/coverage/version.py +++ b/coverage/version.py @@ -4,28 +4,32 @@ """The version and URL for coverage.py""" # This file is exec'ed in setup.py, don't import anything! -# Same semantics as sys.version_info. +# version_info: same semantics as sys.version_info. +# _dev: the .devN suffix if any. version_info = (6, 6, 0, "beta", 2) +_dev = 0 -def _make_version(major, minor, micro, releaselevel, serial): +def _make_version(major, minor, micro, releaselevel="final", serial=0, dev=0): """Create a readable version string from version_info tuple components.""" assert releaselevel in ['alpha', 'beta', 'candidate', 'final'] version = "%d.%d.%d" % (major, minor, micro) if releaselevel != 'final': short = {'alpha': 'a', 'beta': 'b', 'candidate': 'rc'}[releaselevel] version += f"{short}{serial}" + if dev != 0: + version += f".dev{dev}" return version -def _make_url(major, minor, micro, releaselevel, serial): +def _make_url(major, minor, micro, releaselevel, serial=0, dev=0): """Make the URL people should start at for this version of coverage.py.""" url = "https://coverage.readthedocs.io" - if releaselevel != 'final': + if releaselevel != "final" or dev != 0: # For pre-releases, use a version-specific URL. - url += "/en/" + _make_version(major, minor, micro, releaselevel, serial) + url += "/en/" + _make_version(major, minor, micro, releaselevel, serial, dev) return url -__version__ = _make_version(*version_info) -__url__ = _make_url(*version_info) +__version__ = _make_version(*version_info, _dev) +__url__ = _make_url(*version_info, _dev) @@ -15,6 +15,7 @@ import glob import inspect import os import platform +import pprint import re import subprocess import sys @@ -380,9 +381,11 @@ def do_quietly(command): def get_release_facts(): """Return an object with facts about the current release.""" import coverage + import coverage.version facts = types.SimpleNamespace() facts.ver = coverage.__version__ facts.vi = coverage.version_info + facts.dev = coverage.version._dev facts.shortver = f"{facts.vi[0]}.{facts.vi[1]}.{facts.vi[2]}" facts.anchor = facts.shortver.replace(".", "-") if facts.vi[3] != "final": @@ -411,6 +414,10 @@ def do_edit_for_release(): """Edit a few files in preparation for a release.""" facts = get_release_facts() + if facts.dev: + print(f"**\n** This is a dev release: {facts.ver}\n**\n\nNo edits") + return + # NOTICE.txt update_file("NOTICE.txt", r"Copyright 2004.*? Ned", f"Copyright 2004-{facts.now:%Y} Ned") @@ -448,13 +455,15 @@ def do_bump_version(): ) # coverage/version.py - next_version = f"version_info = {facts.next_vi}".replace("'", '"') - update_file("coverage/version.py", r"(?m)^version_info = .*$", next_version) + next_version = f"version_info = {facts.next_vi}\n_dev = 1".replace("'", '"') + update_file("coverage/version.py", r"(?m)^version_info = .*\n_dev = \d+$", next_version) def do_cheats(): """Show a cheatsheet of useful things during releasing.""" facts = get_release_facts() + pprint.pprint(facts.__dict__) + print() print(f"Coverage version is {facts.ver}") print(f"pip install git+https://github.com/nedbat/coveragepy@{facts.branch}") diff --git a/tests/test_html.py b/tests/test_html.py index d649c67f..6aea0626 100644 --- a/tests/test_html.py +++ b/tests/test_html.py @@ -615,7 +615,7 @@ def compare_html(expected, actual, extra_scrubs=None): __tracebackhide__ = True # pytest, please don't show me this function. scrubs = [ (r'/coverage.readthedocs.io/?[-.\w/]*', '/coverage.readthedocs.io/VER'), - (r'coverage.py v[\d.abc]+', 'coverage.py vVER'), + (r'coverage.py v[\d.abcdev]+', 'coverage.py vVER'), (r'created at \d\d\d\d-\d\d-\d\d \d\d:\d\d [-+]\d\d\d\d', 'created at DATE'), (r'created at \d\d\d\d-\d\d-\d\d \d\d:\d\d', 'created at DATE'), # Occasionally an absolute path is in the HTML report. diff --git a/tests/test_version.py b/tests/test_version.py index c4571668..ce6c705a 100644 --- a/tests/test_version.py +++ b/tests/test_version.py @@ -18,18 +18,23 @@ class VersionTest(CoverageTest): # Make sure we didn't screw up the version_info tuple. assert isinstance(coverage.version_info, tuple) assert [type(d) for d in coverage.version_info] == [int, int, int, str, int] - assert coverage.version_info[3] in ['alpha', 'beta', 'candidate', 'final'] + assert coverage.version_info[3] in {'alpha', 'beta', 'candidate', 'final'} def test_make_version(self): - assert _make_version(4, 0, 0, 'alpha', 0) == "4.0.0a0" + assert _make_version(4, 0, 0, 'alpha') == "4.0.0a0" assert _make_version(4, 0, 0, 'alpha', 1) == "4.0.0a1" - assert _make_version(4, 0, 0, 'final', 0) == "4.0.0" - assert _make_version(4, 1, 0, 'final', 0) == "4.1.0" + assert _make_version(4, 0, 0, 'final') == "4.0.0" + assert _make_version(4, 1, 0) == "4.1.0" assert _make_version(4, 1, 2, 'beta', 3) == "4.1.2b3" - assert _make_version(4, 1, 2, 'final', 0) == "4.1.2" + assert _make_version(4, 1, 2) == "4.1.2" assert _make_version(5, 10, 2, 'candidate', 7) == "5.10.2rc7" + assert _make_version(5, 10, 2, 'candidate', 7, 3) == "5.10.2rc7.dev3" def test_make_url(self): - assert _make_url(4, 0, 0, 'final', 0) == "https://coverage.readthedocs.io" + assert _make_url(4, 0, 0, 'final') == "https://coverage.readthedocs.io" expected = "https://coverage.readthedocs.io/en/4.1.2b3" assert _make_url(4, 1, 2, 'beta', 3) == expected + expected = "https://coverage.readthedocs.io/en/4.1.2b3.dev17" + assert _make_url(4, 1, 2, 'beta', 3, 17) == expected + expected = "https://coverage.readthedocs.io/en/4.1.2.dev17" + assert _make_url(4, 1, 2, 'final', 0, 17) == expected |