Merged in release-checklist (pull request #266)
add a release checklist
This commit is contained in:
		
						commit
						1ab93a5f1d
					
				|  | @ -1,6 +1,9 @@ | ||||||
| 2.7.1.dev (compared to 2.7.0) | 2.7.1.dev (compared to 2.7.0) | ||||||
| ----------------------------- | ----------------------------- | ||||||
| 
 | 
 | ||||||
|  | - streamlined and documented release process.  Also all versions | ||||||
|  |   (in setup.py and documentation generation) are now read | ||||||
|  |   from _pytest/__init__.py. | ||||||
| 
 | 
 | ||||||
| 2.7.0 (compared to 2.6.4) | 2.7.0 (compared to 2.6.4) | ||||||
| ----------------------------- | ----------------------------- | ||||||
|  |  | ||||||
|  | @ -147,7 +147,9 @@ the issues there and submit your pull requests. | ||||||
| 
 | 
 | ||||||
|     $ hg clone ssh://hg@bitbucket.org/YOUR_BITBUCKET_USERNAME/pytest |     $ hg clone ssh://hg@bitbucket.org/YOUR_BITBUCKET_USERNAME/pytest | ||||||
|     $ cd pytest |     $ cd pytest | ||||||
|     $ hg branch your-branch-name |     $ hg up pytest-2.7   # if you want to fix a bug for the pytest-2.7 series | ||||||
|  |     $ hg up default      # if you want to add a feature bound for the next minor release | ||||||
|  |     $ hg branch your-branch-name  # your feature/bugfix branch | ||||||
| 
 | 
 | ||||||
|    If you need some help with Mercurial, follow this quick start |    If you need some help with Mercurial, follow this quick start | ||||||
|    guide: http://mercurial.selenic.com/wiki/QuickStart |    guide: http://mercurial.selenic.com/wiki/QuickStart | ||||||
|  | @ -197,7 +199,9 @@ the issues there and submit your pull requests. | ||||||
|     branch: your-branch-name |     branch: your-branch-name | ||||||
| 
 | 
 | ||||||
|     target: pytest-dev/pytest |     target: pytest-dev/pytest | ||||||
|     branch: default |     branch: default         # if it's a feature | ||||||
|  |     branch: pytest-VERSION  # if it's a bugfix | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| .. _contribution-using-git: | .. _contribution-using-git: | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,2 +1,2 @@ | ||||||
| # | # | ||||||
| __version__ = '2.7.1.dev' | __version__ = '2.7.1.dev1' | ||||||
|  |  | ||||||
|  | @ -15,46 +15,39 @@ ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . | ||||||
| 
 | 
 | ||||||
| .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest | .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest | ||||||
| 
 | 
 | ||||||
| regen: |  | ||||||
| 	PYTHONDONTWRITEBYTECODE=1 COLUMNS=76 regendoc --update *.txt */*.txt |  | ||||||
|      |      | ||||||
| help: | help: | ||||||
| 	@echo "Please use \`make <target>' where <target> is one of" | 	@echo "Please use \`make <target>' where <target> is one of" | ||||||
| 	@echo "  html       to make standalone HTML files" | 	@echo "  html       to make standalone HTML files" | ||||||
| 	@echo "  dirhtml    to make HTML files named index.html in directories" |  | ||||||
| 	@echo "  singlehtml to make a single large HTML file" |  | ||||||
| 	@echo "  pickle     to make pickle files" |  | ||||||
| 	@echo "  json       to make JSON files" |  | ||||||
| 	@echo "  htmlhelp   to make HTML files and a HTML help project" |  | ||||||
| 	@echo "  qthelp     to make HTML files and a qthelp project" |  | ||||||
| 	@echo "  devhelp    to make HTML files and a Devhelp project" |  | ||||||
| 	@echo "  epub       to make an epub" |  | ||||||
| 	@echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter" |  | ||||||
| 	@echo "  texinfo    to make Texinfo files" |  | ||||||
| 	@echo "  info       to make Texinfo files and run them through makeinfo" |  | ||||||
| 	@echo "  latexpdf   to make LaTeX files and run them through pdflatex" | 	@echo "  latexpdf   to make LaTeX files and run them through pdflatex" | ||||||
| 	@echo "  text       to make text files" | 	@echo "  showtarget to show the pytest.org target directory" | ||||||
| 	@echo "  man        to make manual pages" | 	@echo "  install    to install docs to pytest.org/SITETARGET" | ||||||
| 	@echo "  changes    to make an overview of all changed/added/deprecated items" | 	@echo "  install-ldf to install the doc pdf to pytest.org/SITETARGET" | ||||||
|  | 	@echo "  regen      to regenerate pytest examples using the installed pytest" | ||||||
| 	@echo "  linkcheck  to check all external links for integrity" | 	@echo "  linkcheck  to check all external links for integrity" | ||||||
| 	@echo "  doctest    to run all doctests embedded in the documentation (if enabled)" |  | ||||||
| 
 | 
 | ||||||
| clean: | clean: | ||||||
| 	-rm -rf $(BUILDDIR)/* | 	-rm -rf $(BUILDDIR)/* | ||||||
| 
 | 
 | ||||||
| SITETARGET=dev | SITETARGET=$(shell ./_getdoctarget.py) | ||||||
|  | 
 | ||||||
|  | showtarget: | ||||||
|  | 	@echo $(SITETARGET) | ||||||
| 
 | 
 | ||||||
| install: html | install: html | ||||||
| 	 # for access talk to someone with login rights to | 	 # for access talk to someone with login rights to | ||||||
| 	 # pytest-dev@pytest.org to add your ssh key | 	 # pytest-dev@pytest.org to add your ssh key | ||||||
| 	 rsync -avz _build/html/ pytest-dev@pytest.org:/www/pytest.org/$(SITETARGET) | 	 rsync -avz _build/html/ pytest-dev@pytest.org:pytest.org/$(SITETARGET) | ||||||
| 
 | 
 | ||||||
| installpdf: latexpdf | installpdf: latexpdf | ||||||
| 	@scp $(BUILDDIR)/latex/pytest.pdf pytest-dev@pytest.org:/www/pytest.org/$(SITETARGET) | 	@scp $(BUILDDIR)/latex/pytest.pdf pytest-dev@pytest.org:pytest.org/$(SITETARGET) | ||||||
| 
 | 
 | ||||||
| installall: clean install installpdf | installall: clean install installpdf | ||||||
| 	@echo "done" | 	@echo "done" | ||||||
| 
 | 
 | ||||||
|  | regen: | ||||||
|  | 	PYTHONDONTWRITEBYTECODE=1 COLUMNS=76 regendoc --update *.txt */*.txt | ||||||
|  | 
 | ||||||
| html: | html: | ||||||
| 	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html | 	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html | ||||||
| 	@echo | 	@echo | ||||||
|  |  | ||||||
|  | @ -0,0 +1,16 @@ | ||||||
|  | #!/usr/bin/env python | ||||||
|  | 
 | ||||||
|  | import py | ||||||
|  | 
 | ||||||
|  | def get_version_string(): | ||||||
|  |     fn = py.path.local(__file__).join("..", "..", "..", | ||||||
|  |                                       "_pytest", "__init__.py") | ||||||
|  |     for line in fn.readlines(): | ||||||
|  |         if "version" in line: | ||||||
|  |             return eval(line.split("=")[-1]) | ||||||
|  | 
 | ||||||
|  | def get_minor_version_string(): | ||||||
|  |     return ".".join(get_version_string().split(".")[:2]) | ||||||
|  | 
 | ||||||
|  | if __name__ == "__main__": | ||||||
|  |     print (get_minor_version_string()) | ||||||
|  | @ -12,7 +12,7 @@ | ||||||
| {% set link_color = '#000' %} | {% set link_color = '#000' %} | ||||||
| {% set link_hover_color = '#000' %} | {% set link_hover_color = '#000' %} | ||||||
| {% set base_font = 'sans-serif' %} | {% set base_font = 'sans-serif' %} | ||||||
| {% set header_font = 'sans-serif' %} | {% set header_font = 'serif' %} | ||||||
| 
 | 
 | ||||||
| @import url("basic.css"); | @import url("basic.css"); | ||||||
| 
 | 
 | ||||||
|  | @ -265,9 +265,10 @@ p.admonition-title:after { | ||||||
|     content: ":"; |     content: ":"; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| pre, tt { | pre, tt, code { | ||||||
|     font-family: 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; |     font-family: 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; | ||||||
|     font-size: 0.9em; |     font-size: 0.9em; | ||||||
|  |     background: #eee; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| img.screenshot { | img.screenshot { | ||||||
|  |  | ||||||
|  | @ -17,10 +17,13 @@ | ||||||
| # | # | ||||||
| # The full version, including alpha/beta/rc tags. | # The full version, including alpha/beta/rc tags. | ||||||
| # The short X.Y version. | # The short X.Y version. | ||||||
| version = "2.7" |  | ||||||
| release = "2.7.1.dev" |  | ||||||
| 
 | 
 | ||||||
| import sys, os | import os, sys | ||||||
|  | sys.path.insert(0, os.path.dirname(__file__)) | ||||||
|  | import _getdoctarget | ||||||
|  | 
 | ||||||
|  | version = _getdoctarget.get_minor_version_string() | ||||||
|  | release = _getdoctarget.get_version_string() | ||||||
| 
 | 
 | ||||||
| # If extensions (or modules to document with autodoc) are in another directory, | # If extensions (or modules to document with autodoc) are in another directory, | ||||||
| # add these directories to sys.path here. If the directory is relative to the | # add these directories to sys.path here. If the directory is relative to the | ||||||
|  | @ -54,7 +57,7 @@ master_doc = 'contents' | ||||||
| 
 | 
 | ||||||
| # General information about the project. | # General information about the project. | ||||||
| project = u'pytest' | project = u'pytest' | ||||||
| copyright = u'2014, holger krekel' | copyright = u'2015, holger krekel and pytest-dev team' | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -0,0 +1,54 @@ | ||||||
|  | pytest release checklist | ||||||
|  | ------------------------- | ||||||
|  | 
 | ||||||
|  | For doing a release of pytest (status April 2015) this rough checklist is used: | ||||||
|  | 
 | ||||||
|  | 1. change version numbers in ``_pytest/__init__.py`` to the to-be-released version. | ||||||
|  |    (the version number in ``setup.py`` reads from that init file as well) | ||||||
|  | 
 | ||||||
|  | 2. finalize ``./CHANGELOG`` (don't forget the the header). | ||||||
|  | 
 | ||||||
|  | 3. write ``doc/en/announce/release-VERSION.txt`` | ||||||
|  |    (usually copying from an earlier release version). | ||||||
|  | 
 | ||||||
|  | 4. regenerate doc examples with ``tox -e regen`` and check with ``hg diff`` | ||||||
|  |    if the differences show regressions.  It's a bit of a manual process because | ||||||
|  |    there a large part of the diff is about pytest headers or differences in | ||||||
|  |    speed ("tests took X.Y seconds"). (XXX automate doc/example diffing to ignore | ||||||
|  |    such changes and integrate it into "tox -e regen"). | ||||||
|  | 
 | ||||||
|  | 5. ``devpi upload`` to `your developer devpi index <http://doc.devpi.net/latest/quickstart-releaseprocess.html>`_. You can create your own user and index on https://devpi.net, | ||||||
|  |    an inofficial service from the devpi authors. | ||||||
|  | 
 | ||||||
|  | 6. run ``devpi use INDEX`` and ``devpi test`` from linux and windows machines | ||||||
|  |    and verify test results on the index.  On linux typically all environments | ||||||
|  |    pass (April 2015 there is a setup problem with a cx_freeze environment) | ||||||
|  |    but on windows all involving ``pexpect`` fail because pexpect does not exist | ||||||
|  |    on windows and tox does not allow to have platform-specific environments. | ||||||
|  |    Also on windows ``py33-trial`` fails but should probably pass (March 2015). | ||||||
|  |    In any case, py26,py27,py33,py34 are required to pass for all platforms. | ||||||
|  | 
 | ||||||
|  | 7. You can fix tests/code and repeat number 6. until everything passes. | ||||||
|  | 
 | ||||||
|  | 8. Once you have sufficiently passing tox tests you can do the actual release:: | ||||||
|  | 
 | ||||||
|  |      cd doc/en/ | ||||||
|  |      make install      # will install to 2.7, 2.8, ... according to _pytest/__init__.py | ||||||
|  |      make install-pdf  # optional, requires latex packages installed | ||||||
|  |      ssh pytest-dev@pytest.org # MANUAL: symlink "pytest.org/latest" to the just | ||||||
|  |                                # installed release docs | ||||||
|  |                                # browse to pytest.org to see | ||||||
|  | 
 | ||||||
|  |      devpi push pytest-VERSION pypi:NAME | ||||||
|  |      hg ci -m "... finalized pytest-VERSION" | ||||||
|  |      hg tag VERSION | ||||||
|  |      hg push | ||||||
|  | 
 | ||||||
|  | 9. send out release announcement to pytest-dev@python.org, | ||||||
|  |     testing-in-python@lists.idyll.org and python-announce-list@python.org . | ||||||
|  | 
 | ||||||
|  | 10. **after the release** bump the version number in ``_pytest/__init__.py``, | ||||||
|  |     to the next Minor release version (i.e. if you released ``pytest-2.8.0``, | ||||||
|  |     set it to ``pytest-2.9.0.dev1``). | ||||||
|  | 
 | ||||||
|  | 11. already done :) | ||||||
							
								
								
									
										11
									
								
								setup.py
								
								
								
								
							
							
						
						
									
										11
									
								
								setup.py
								
								
								
								
							|  | @ -16,6 +16,15 @@ classifiers = ['Development Status :: 6 - Mature', | ||||||
| with open('README.rst') as fd: | with open('README.rst') as fd: | ||||||
|     long_description = fd.read() |     long_description = fd.read() | ||||||
| 
 | 
 | ||||||
|  | def get_version(): | ||||||
|  |     p = os.path.join(os.path.dirname( | ||||||
|  |                      os.path.abspath(__file__)), "_pytest", "__init__.py") | ||||||
|  |     with open(p) as f: | ||||||
|  |         for line in f.readlines(): | ||||||
|  |             if "__version__" in line: | ||||||
|  |                 return line.strip().split("=")[-1].strip(" '") | ||||||
|  |     raise ValueError("could not read version") | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| def main(): | def main(): | ||||||
|     install_requires = ['py>=1.4.25'] |     install_requires = ['py>=1.4.25'] | ||||||
|  | @ -28,7 +37,7 @@ def main(): | ||||||
|         name='pytest', |         name='pytest', | ||||||
|         description='pytest: simple powerful testing with Python', |         description='pytest: simple powerful testing with Python', | ||||||
|         long_description=long_description, |         long_description=long_description, | ||||||
|         version='2.7.1.dev', |         version=get_version(), | ||||||
|         url='http://pytest.org', |         url='http://pytest.org', | ||||||
|         license='MIT license', |         license='MIT license', | ||||||
|         platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'], |         platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'], | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue