* Release checklist - Check that the current virtualenv matches the current coverage branch. - start branch for release work $ make relbranch - Edit version number in coverage/version.py version_info = (4, 0, 2, "alpha", 1) version_info = (4, 0, 2, "beta", 1) version_info = (4, 0, 2, "candidate", 1) version_info = (4, 0, 2, "final", 0) - make sure: _dev = 0 - Edit supported Python version numbers. Search for "PYVERSIONS". - Update source files with release facts: $ make edit_for_release - Get useful snippets for next steps, and beyond, in cheats.txt $ make cheats - Look over CHANGES.rst - Update README.rst - "New in x.y:" - Python versions supported - Update docs - Python versions in doc/index.rst - IF PRE-RELEASE: - Version of latest stable release in doc/index.rst - Make sure the docs are cogged: $ make prebuild - Don't forget the man page: doc/python-coverage.1.txt - Check that the docs build correctly: $ tox -e doc - commit the release-prep changes $ make relcommit1 - Generate new sample_html to get the latest, incl footer version number: - IF PRE-RELEASE: $ make sample_html_beta - IF NOT PRE-RELEASE: $ make sample_html - check in the new sample html $ make relcommit2 - Done with changes to source files - check them in on the release prep branch - wait for ci to finish - merge to master - git push - Start the kits: - Trigger the kit GitHub Action $ make build_kits - Build and publish docs: - IF PRE-RELEASE: $ make publishbeta - ELSE: $ make publish - Kits: - Wait for kits to finish: - https://github.com/nedbat/coveragepy/actions/workflows/kit.yml - Download and check built kits from GitHub Actions: $ make clean download_kits check_kits - examine the dist directory, and remove anything that looks malformed. - opvars - test the pypi upload: $ make test_upload - upload kits: $ make kit_upload - Tag the tree $ make tag - IF NOT PRE-RELEASE: - update git "stable" branch to point to latest release $ make update_stable - Update GitHub releases: $ make clean github_releases - Visit the fixed issues on GitHub and mention the version it was fixed in. $ make comment_on_fixes - unopvars - Bump version: $ make bump_version - Update readthedocs - @ https://readthedocs.org/projects/coverage/versions/ - find the latest tag in the inactive list, edit it, make it active. - readthedocs won't find the tag until a commit is made on master. - keep just the latest version of each x.y release, make the rest active but hidden. - pre-releases should be hidden - IF NOT PRE-RELEASE: - @ https://readthedocs.org/projects/coverage/builds/ - wait for the new tag build to finish successfully. - @ https://readthedocs.org/dashboard/coverage/advanced/ - change the default version to the new version - Don't forget to merge the bump-version branch - things to automate: - url to link to latest changes in docs - next version.py line - readthedocs api to do the readthedocs changes * Testing - Testing of Python code is handled by tox. - Create and activate a virtualenv - pip install -r requirements/dev.pip - $ tox - For complete coverage testing: $ make metacov This will run coverage.py under its own measurement. You can do this in different environments (Linux vs. Windows, for example), then copy the data files (.metacov.*) to one machine for combination and reporting. To combine and report: $ make metahtml - To run the Javascript tests: open tests/js/index.html in variety of browsers.