summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2022-11-17 05:44:49 -0500
committerNed Batchelder <ned@nedbatchelder.com>2022-11-17 07:01:54 -0500
commit66c45143008366726293a341405d45a3a8e9ed87 (patch)
tree756e2efc0151471331bb6012d98529c0371df7ad
parent709c7443e30b20226c4fb61acaf47de529a7688c (diff)
downloadpython-coveragepy-git-66c45143008366726293a341405d45a3a8e9ed87.tar.gz
build: allow for .devN version numbers
-rw-r--r--coverage/version.py18
-rw-r--r--igor.py13
-rw-r--r--tests/test_html.py2
-rw-r--r--tests/test_version.py17
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)
diff --git a/igor.py b/igor.py
index d78dff98..510d6adf 100644
--- a/igor.py
+++ b/igor.py
@@ -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