text: Detailed tests of bumpversion.py
  ================================
  
  .. :doctest:
  .. :setup: zest.releaser.tests.functional.setup
  .. :teardown: zest.releaser.tests.functional.teardown
  
  Several items are prepared for us.
  
  An svn repository:
  
      >>> repo_url
      'file://TESTREPO'
  
  An svn checkout of a project:
  
      >>> svnsourcedir
      'TESTTEMP/tha.example-svn'
      >>> import os
      >>> import sys
      >>> os.chdir(svnsourcedir)
  
  Asking input on the prompt is not unittestable unless we use the prepared
  testing hack in utils.py:
  
      >>> from zest.releaser import utils
      >>> utils.TESTMODE = True
  
  Initially there are no tags, and we require them.  In the tests the
  error is ugly, but in practice it looks fine, saying no bump is needed.
  
      >>> from zest.releaser import bumpversion
      >>> bumpversion.main()
      Traceback (most recent call last):
      ...
      RuntimeError: SYSTEM EXIT (code=0)
  
  So first run the fullrelease:
  
      >>> from zest.releaser import fullrelease
      >>> utils.test_answer_book.set_answers(['', '', '', '2.9.4', '', '', '', '', '', '', ''])
      >>> fullrelease.main()
      Question...
      Question: Enter version [0.1]:
      Our reply: 2.9.4
      ...
      >>> svnhead('CHANGES.txt')
      Changelog of tha.example
      ========================
      <BLANKLINE>
      2.9.5 (unreleased)
      ------------------
      >>> svnhead('setup.py')
      from setuptools import setup, find_packages
      import os.path
      <BLANKLINE>
      version = '2.9.5.dev0'
  
  Try bumpversion again.  The first time we again get an error because
  no version bump is needed: our current version is already higher than
  the latest tag, and we have no feature or breaking change.  In the
  tests it is again ugly, but the exit code is zero, which is good.
  
      >>> utils.test_answer_book.set_answers(['', '', '', '', '', ''])
      >>> bumpversion.main()
      Traceback (most recent call last):
      ...
      RuntimeError: SYSTEM EXIT (code=0)
  
  Now a feature bump::
  
      >>> sys.argv[1:] = ['--feature']
      >>> bumpversion.main()
      Checking version bump for feature release.
      Last tag: 2.9.4
      Current version: 2.9.5.dev0
      Question: Enter version [2.10.0.dev0]:
      Our reply: <ENTER>
      Checking data dict
      Question: OK to commit this (Y/n)?
      Our reply: <ENTER>
      >>> svnhead('setup.py')
      from setuptools import setup, find_packages
      import os.path
      <BLANKLINE>
      version = '2.10.0.dev0'
      >>> svnhead('CHANGES.txt')
      Changelog of tha.example
      ========================
      <BLANKLINE>
      2.10.0 (unreleased)
      -------------------
  
  Now a breaking bump, and for this test we explicitly remove the dev marker::
  
      >>> utils.test_answer_book.set_answers(['3.0.0', ''])
      >>> sys.argv[1:] = ['--breaking']
      >>> bumpversion.main()
      Checking version bump for breaking release.
      Last tag: 2.9.4
      Current version: 2.10.0.dev0
      Question: Enter version [3.0.0.dev0]:
      Our reply: 3.0.0
      Checking data dict
      Question: OK to commit this (Y/n)?
      Our reply: <ENTER>
      >>> svnhead('setup.py')
      from setuptools import setup, find_packages
      import os.path
      <BLANKLINE>
      version = '3.0.0'
      >>> svnhead('CHANGES.txt')
      Changelog of tha.example
      ========================
      <BLANKLINE>
      3.0.0 (unreleased)
      ------------------
  