Ausgabe der neuen DB Einträge
This commit is contained in:
parent
bad48e1627
commit
cfbbb9ee3d
2399 changed files with 843193 additions and 43 deletions
|
|
@ -0,0 +1,715 @@
|
|||
# Copyright (c) Twisted Matrix Laboratories.
|
||||
# See LICENSE for details.
|
||||
|
||||
"""
|
||||
Tests for L{incremental.update}.
|
||||
"""
|
||||
|
||||
from __future__ import division, absolute_import
|
||||
|
||||
import sys
|
||||
import os
|
||||
import datetime
|
||||
|
||||
from twisted.python.filepath import FilePath
|
||||
from twisted.python.compat import NativeStringIO
|
||||
from twisted.trial.unittest import TestCase
|
||||
|
||||
from incremental.update import _run, run
|
||||
|
||||
|
||||
class NonCreatedUpdateTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
|
||||
self.srcdir = FilePath(self.mktemp())
|
||||
self.srcdir.makedirs()
|
||||
|
||||
packagedir = self.srcdir.child('inctestpkg')
|
||||
packagedir.makedirs()
|
||||
|
||||
packagedir.child('__init__.py').setContent(b"""
|
||||
from incremental import Version
|
||||
introduced_in = Version('inctestpkg', 'NEXT', 0, 0).short()
|
||||
next_released_version = "inctestpkg NEXT"
|
||||
""")
|
||||
self.getcwd = lambda: self.srcdir.path
|
||||
self.packagedir = packagedir
|
||||
|
||||
class Date(object):
|
||||
year = 2016
|
||||
month = 8
|
||||
|
||||
self.date = Date()
|
||||
|
||||
def test_create(self):
|
||||
"""
|
||||
`incremental.update package --create` initialises the version.
|
||||
"""
|
||||
self.assertFalse(self.packagedir.child("_version.py").exists())
|
||||
|
||||
out = []
|
||||
_run('inctestpkg', path=None, newversion=None, patch=False, rc=False,
|
||||
dev=False, create=True, _date=self.date, _getcwd=self.getcwd,
|
||||
_print=out.append)
|
||||
|
||||
self.assertTrue(self.packagedir.child("_version.py").exists())
|
||||
self.assertEqual(self.packagedir.child("_version.py").getContent(),
|
||||
b'''"""
|
||||
Provides inctestpkg version information.
|
||||
"""
|
||||
|
||||
# This file is auto-generated! Do not edit!
|
||||
# Use `python -m incremental.update inctestpkg` to change this file.
|
||||
|
||||
from incremental import Version
|
||||
|
||||
__version__ = Version('inctestpkg', 16, 8, 0)
|
||||
__all__ = ["__version__"]
|
||||
''')
|
||||
|
||||
|
||||
class MissingTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
|
||||
self.srcdir = FilePath(self.mktemp())
|
||||
self.srcdir.makedirs()
|
||||
|
||||
self.srcdir.child('srca').makedirs()
|
||||
|
||||
packagedir = self.srcdir.child('srca').child('inctestpkg')
|
||||
packagedir.makedirs()
|
||||
|
||||
packagedir.child('__init__.py').setContent(b"""
|
||||
from incremental import Version
|
||||
introduced_in = Version('inctestpkg', 'NEXT', 0, 0).short()
|
||||
next_released_version = "inctestpkg NEXT"
|
||||
""")
|
||||
packagedir.child('_version.py').setContent(b"""
|
||||
from incremental import Version
|
||||
__version__ = Version('inctestpkg', 1, 2, 3)
|
||||
__all__ = ["__version__"]
|
||||
""")
|
||||
self.getcwd = lambda: self.srcdir.path
|
||||
self.packagedir = packagedir
|
||||
|
||||
class Date(object):
|
||||
year = 2016
|
||||
month = 8
|
||||
|
||||
self.date = Date()
|
||||
|
||||
def test_path(self):
|
||||
"""
|
||||
`incremental.update package --dev` raises and quits if it can't find
|
||||
the package.
|
||||
"""
|
||||
out = []
|
||||
with self.assertRaises(ValueError):
|
||||
_run(u'inctestpkg', path=None, newversion=None,
|
||||
patch=False, rc=False, dev=True, create=False,
|
||||
_date=self.date, _getcwd=self.getcwd, _print=out.append)
|
||||
|
||||
|
||||
class CreatedUpdateInSrcTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
|
||||
self.srcdir = FilePath(self.mktemp())
|
||||
self.srcdir.makedirs()
|
||||
|
||||
self.srcdir.child('src').makedirs()
|
||||
|
||||
packagedir = self.srcdir.child('src').child('inctestpkg')
|
||||
packagedir.makedirs()
|
||||
|
||||
packagedir.child('__init__.py').setContent(b"""
|
||||
from incremental import Version
|
||||
introduced_in = Version('inctestpkg', 'NEXT', 0, 0).short()
|
||||
next_released_version = "inctestpkg NEXT"
|
||||
""")
|
||||
packagedir.child('_version.py').setContent(b"""
|
||||
from incremental import Version
|
||||
__version__ = Version('inctestpkg', 1, 2, 3)
|
||||
__all__ = ["__version__"]
|
||||
""")
|
||||
self.getcwd = lambda: self.srcdir.path
|
||||
self.packagedir = packagedir
|
||||
|
||||
class Date(object):
|
||||
year = 2016
|
||||
month = 8
|
||||
|
||||
self.date = Date()
|
||||
|
||||
def test_path(self):
|
||||
"""
|
||||
`incremental.update package --path=<path> --dev` increments the dev
|
||||
version of the package on the given path
|
||||
"""
|
||||
out = []
|
||||
_run(u'inctestpkg', path=None, newversion=None,
|
||||
patch=False, rc=False, dev=True, create=False, _date=self.date,
|
||||
_getcwd=self.getcwd, _print=out.append)
|
||||
|
||||
self.assertTrue(self.packagedir.child("_version.py").exists())
|
||||
self.assertEqual(self.packagedir.child("_version.py").getContent(),
|
||||
b'''"""
|
||||
Provides inctestpkg version information.
|
||||
"""
|
||||
|
||||
# This file is auto-generated! Do not edit!
|
||||
# Use `python -m incremental.update inctestpkg` to change this file.
|
||||
|
||||
from incremental import Version
|
||||
|
||||
__version__ = Version('inctestpkg', 1, 2, 3, dev=0)
|
||||
__all__ = ["__version__"]
|
||||
''')
|
||||
|
||||
_run(u'inctestpkg', path=None, newversion=None,
|
||||
patch=False, rc=False, dev=True, create=False, _date=self.date,
|
||||
_getcwd=self.getcwd, _print=out.append)
|
||||
|
||||
self.assertTrue(self.packagedir.child("_version.py").exists())
|
||||
self.assertEqual(self.packagedir.child("_version.py").getContent(),
|
||||
b'''"""
|
||||
Provides inctestpkg version information.
|
||||
"""
|
||||
|
||||
# This file is auto-generated! Do not edit!
|
||||
# Use `python -m incremental.update inctestpkg` to change this file.
|
||||
|
||||
from incremental import Version
|
||||
|
||||
__version__ = Version('inctestpkg', 1, 2, 3, dev=1)
|
||||
__all__ = ["__version__"]
|
||||
''')
|
||||
|
||||
|
||||
class CreatedUpdateTests(TestCase):
|
||||
|
||||
maxDiff = None
|
||||
|
||||
def setUp(self):
|
||||
|
||||
self.srcdir = FilePath(self.mktemp())
|
||||
self.srcdir.makedirs()
|
||||
|
||||
packagedir = self.srcdir.child('inctestpkg')
|
||||
packagedir.makedirs()
|
||||
|
||||
packagedir.child('__init__.py').setContent(b"""
|
||||
from incremental import Version
|
||||
introduced_in = Version('inctestpkg', 'NEXT', 0, 0).short()
|
||||
next_released_version = "inctestpkg NEXT"
|
||||
""")
|
||||
packagedir.child('_version.py').setContent(b"""
|
||||
from incremental import Version
|
||||
__version__ = Version('inctestpkg', 1, 2, 3)
|
||||
__all__ = ["__version__"]
|
||||
""")
|
||||
self.getcwd = lambda: self.srcdir.path
|
||||
self.packagedir = packagedir
|
||||
|
||||
class Date(object):
|
||||
year = 2016
|
||||
month = 8
|
||||
|
||||
self.date = Date()
|
||||
|
||||
def test_path(self):
|
||||
"""
|
||||
`incremental.update package --path=<path> --dev` increments the dev
|
||||
version of the package on the given path
|
||||
"""
|
||||
out = []
|
||||
_run(u'inctestpkg', path=self.packagedir.path, newversion=None,
|
||||
patch=False, rc=False, dev=True, create=False, _date=self.date,
|
||||
_print=out.append)
|
||||
|
||||
self.assertTrue(self.packagedir.child("_version.py").exists())
|
||||
self.assertEqual(self.packagedir.child("_version.py").getContent(),
|
||||
b'''"""
|
||||
Provides inctestpkg version information.
|
||||
"""
|
||||
|
||||
# This file is auto-generated! Do not edit!
|
||||
# Use `python -m incremental.update inctestpkg` to change this file.
|
||||
|
||||
from incremental import Version
|
||||
|
||||
__version__ = Version('inctestpkg', 1, 2, 3, dev=0)
|
||||
__all__ = ["__version__"]
|
||||
''')
|
||||
|
||||
def test_dev(self):
|
||||
"""
|
||||
`incremental.update package --dev` increments the dev version.
|
||||
"""
|
||||
out = []
|
||||
_run(u'inctestpkg', path=None, newversion=None, patch=False, rc=False,
|
||||
dev=True, create=False, _date=self.date, _getcwd=self.getcwd,
|
||||
_print=out.append)
|
||||
|
||||
self.assertTrue(self.packagedir.child("_version.py").exists())
|
||||
self.assertEqual(self.packagedir.child("_version.py").getContent(),
|
||||
b'''"""
|
||||
Provides inctestpkg version information.
|
||||
"""
|
||||
|
||||
# This file is auto-generated! Do not edit!
|
||||
# Use `python -m incremental.update inctestpkg` to change this file.
|
||||
|
||||
from incremental import Version
|
||||
|
||||
__version__ = Version('inctestpkg', 1, 2, 3, dev=0)
|
||||
__all__ = ["__version__"]
|
||||
''')
|
||||
|
||||
def test_patch(self):
|
||||
"""
|
||||
`incremental.update package --patch` increments the patch version.
|
||||
"""
|
||||
out = []
|
||||
_run(u'inctestpkg', path=None, newversion=None, patch=True, rc=False,
|
||||
dev=False, create=False, _date=self.date, _getcwd=self.getcwd,
|
||||
_print=out.append)
|
||||
|
||||
self.assertEqual(self.packagedir.child("_version.py").getContent(),
|
||||
b'''"""
|
||||
Provides inctestpkg version information.
|
||||
"""
|
||||
|
||||
# This file is auto-generated! Do not edit!
|
||||
# Use `python -m incremental.update inctestpkg` to change this file.
|
||||
|
||||
from incremental import Version
|
||||
|
||||
__version__ = Version('inctestpkg', 1, 2, 4)
|
||||
__all__ = ["__version__"]
|
||||
''')
|
||||
self.assertEqual(self.packagedir.child("__init__.py").getContent(),
|
||||
b"""
|
||||
from incremental import Version
|
||||
introduced_in = Version('inctestpkg', 1, 2, 4).short()
|
||||
next_released_version = "inctestpkg 1.2.4"
|
||||
""")
|
||||
|
||||
def test_patch_with_prerelease_and_dev(self):
|
||||
"""
|
||||
`incremental.update package --patch` increments the patch version, and
|
||||
disregards any old prerelease/dev versions.
|
||||
"""
|
||||
self.packagedir.child('_version.py').setContent(b"""
|
||||
from incremental import Version
|
||||
__version__ = Version('inctestpkg', 1, 2, 3, release_candidate=1, dev=2)
|
||||
__all__ = ["__version__"]
|
||||
""")
|
||||
|
||||
out = []
|
||||
_run(u'inctestpkg', path=None, newversion=None, patch=True, rc=False,
|
||||
dev=False, create=False, _date=self.date, _getcwd=self.getcwd,
|
||||
_print=out.append)
|
||||
|
||||
self.assertEqual(self.packagedir.child("_version.py").getContent(),
|
||||
b'''"""
|
||||
Provides inctestpkg version information.
|
||||
"""
|
||||
|
||||
# This file is auto-generated! Do not edit!
|
||||
# Use `python -m incremental.update inctestpkg` to change this file.
|
||||
|
||||
from incremental import Version
|
||||
|
||||
__version__ = Version('inctestpkg', 1, 2, 4)
|
||||
__all__ = ["__version__"]
|
||||
''')
|
||||
|
||||
def test_rc_patch(self):
|
||||
"""
|
||||
`incremental.update package --patch --rc` increments the patch
|
||||
version and makes it a release candidate.
|
||||
"""
|
||||
out = []
|
||||
_run(u'inctestpkg', path=None, newversion=None, patch=True, rc=True,
|
||||
dev=False, create=False, _date=self.date, _getcwd=self.getcwd,
|
||||
_print=out.append)
|
||||
|
||||
self.assertEqual(self.packagedir.child("_version.py").getContent(),
|
||||
b'''"""
|
||||
Provides inctestpkg version information.
|
||||
"""
|
||||
|
||||
# This file is auto-generated! Do not edit!
|
||||
# Use `python -m incremental.update inctestpkg` to change this file.
|
||||
|
||||
from incremental import Version
|
||||
|
||||
__version__ = Version('inctestpkg', 1, 2, 4, release_candidate=1)
|
||||
__all__ = ["__version__"]
|
||||
''')
|
||||
self.assertEqual(self.packagedir.child("__init__.py").getContent(),
|
||||
b"""
|
||||
from incremental import Version
|
||||
introduced_in = Version('inctestpkg', 1, 2, 4, release_candidate=1).short()
|
||||
next_released_version = "inctestpkg 1.2.4rc1"
|
||||
""")
|
||||
|
||||
def test_rc_with_existing_rc(self):
|
||||
"""
|
||||
`incremental.update package --rc` increments the rc version if the
|
||||
existing version is an rc, and discards any dev version.
|
||||
"""
|
||||
self.packagedir.child('_version.py').setContent(b"""
|
||||
from incremental import Version
|
||||
__version__ = Version('inctestpkg', 1, 2, 3, release_candidate=1, dev=2)
|
||||
__all__ = ["__version__"]
|
||||
""")
|
||||
|
||||
out = []
|
||||
_run(u'inctestpkg', path=None, newversion=None, patch=False, rc=True,
|
||||
dev=False, create=False, _date=self.date, _getcwd=self.getcwd,
|
||||
_print=out.append)
|
||||
|
||||
self.assertEqual(self.packagedir.child("_version.py").getContent(),
|
||||
b'''"""
|
||||
Provides inctestpkg version information.
|
||||
"""
|
||||
|
||||
# This file is auto-generated! Do not edit!
|
||||
# Use `python -m incremental.update inctestpkg` to change this file.
|
||||
|
||||
from incremental import Version
|
||||
|
||||
__version__ = Version('inctestpkg', 1, 2, 3, release_candidate=2)
|
||||
__all__ = ["__version__"]
|
||||
''')
|
||||
self.assertEqual(self.packagedir.child("__init__.py").getContent(),
|
||||
b"""
|
||||
from incremental import Version
|
||||
introduced_in = Version('inctestpkg', 1, 2, 3, release_candidate=2).short()
|
||||
next_released_version = "inctestpkg 1.2.3rc2"
|
||||
""")
|
||||
|
||||
def test_rc_with_no_rc(self):
|
||||
"""
|
||||
`incremental.update package --rc`, when the package is not a release
|
||||
candidate, will issue a new major/minor rc, and disregards the micro
|
||||
and dev.
|
||||
"""
|
||||
self.packagedir.child('_version.py').setContent(b"""
|
||||
from incremental import Version
|
||||
__version__ = Version('inctestpkg', 1, 2, 3, dev=2)
|
||||
__all__ = ["__version__"]
|
||||
""")
|
||||
|
||||
out = []
|
||||
_run(u'inctestpkg', path=None, newversion=None, patch=False, rc=True,
|
||||
dev=False, create=False, _date=self.date, _getcwd=self.getcwd,
|
||||
_print=out.append)
|
||||
|
||||
self.assertEqual(self.packagedir.child("_version.py").getContent(),
|
||||
b'''"""
|
||||
Provides inctestpkg version information.
|
||||
"""
|
||||
|
||||
# This file is auto-generated! Do not edit!
|
||||
# Use `python -m incremental.update inctestpkg` to change this file.
|
||||
|
||||
from incremental import Version
|
||||
|
||||
__version__ = Version('inctestpkg', 16, 8, 0, release_candidate=1)
|
||||
__all__ = ["__version__"]
|
||||
''')
|
||||
self.assertEqual(self.packagedir.child("__init__.py").getContent(),
|
||||
b"""
|
||||
from incremental import Version
|
||||
introduced_in = Version('inctestpkg', 16, 8, 0, release_candidate=1).short()
|
||||
next_released_version = "inctestpkg 16.8.0rc1"
|
||||
""")
|
||||
|
||||
def test_full_with_rc(self):
|
||||
"""
|
||||
`incremental.update package`, when the package is a release
|
||||
candidate, will issue the major/minor, sans release candidate or dev.
|
||||
"""
|
||||
out = []
|
||||
_run(u'inctestpkg', path=None, newversion=None, patch=False, rc=True,
|
||||
dev=False, create=False, _date=self.date, _getcwd=self.getcwd,
|
||||
_print=out.append)
|
||||
|
||||
self.assertEqual(self.packagedir.child("_version.py").getContent(),
|
||||
b'''"""
|
||||
Provides inctestpkg version information.
|
||||
"""
|
||||
|
||||
# This file is auto-generated! Do not edit!
|
||||
# Use `python -m incremental.update inctestpkg` to change this file.
|
||||
|
||||
from incremental import Version
|
||||
|
||||
__version__ = Version('inctestpkg', 16, 8, 0, release_candidate=1)
|
||||
__all__ = ["__version__"]
|
||||
''')
|
||||
self.assertEqual(self.packagedir.child("__init__.py").getContent(),
|
||||
b"""
|
||||
from incremental import Version
|
||||
introduced_in = Version('inctestpkg', 16, 8, 0, release_candidate=1).short()
|
||||
next_released_version = "inctestpkg 16.8.0rc1"
|
||||
""")
|
||||
|
||||
_run(u'inctestpkg', path=None, newversion=None, patch=False, rc=False,
|
||||
dev=False, create=False, _date=self.date, _getcwd=self.getcwd,
|
||||
_print=out.append)
|
||||
|
||||
self.assertEqual(self.packagedir.child("_version.py").getContent(),
|
||||
b'''"""
|
||||
Provides inctestpkg version information.
|
||||
"""
|
||||
|
||||
# This file is auto-generated! Do not edit!
|
||||
# Use `python -m incremental.update inctestpkg` to change this file.
|
||||
|
||||
from incremental import Version
|
||||
|
||||
__version__ = Version('inctestpkg', 16, 8, 0)
|
||||
__all__ = ["__version__"]
|
||||
''')
|
||||
self.assertEqual(self.packagedir.child("__init__.py").getContent(),
|
||||
b"""
|
||||
from incremental import Version
|
||||
introduced_in = Version('inctestpkg', 16, 8, 0).short()
|
||||
next_released_version = "inctestpkg 16.8.0"
|
||||
""")
|
||||
|
||||
def test_full_without_rc(self):
|
||||
"""
|
||||
`incremental.update package`, when the package is NOT a release
|
||||
candidate, will raise an error.
|
||||
"""
|
||||
out = []
|
||||
with self.assertRaises(ValueError) as e:
|
||||
_run(u'inctestpkg', path=None, newversion=None, patch=False,
|
||||
rc=False, dev=False, create=False, _date=self.date,
|
||||
_getcwd=self.getcwd, _print=out.append)
|
||||
|
||||
self.assertEqual(
|
||||
e.exception.args[0],
|
||||
"You need to issue a rc before updating the major/minor")
|
||||
|
||||
def test_no_mix_newversion(self):
|
||||
"""
|
||||
The `--newversion` flag can't be mixed with --patch, --rc, or --dev.
|
||||
"""
|
||||
out = []
|
||||
with self.assertRaises(ValueError) as e:
|
||||
_run(u'inctestpkg', path=None, newversion="1", patch=True,
|
||||
rc=False, dev=False, create=False, _date=self.date,
|
||||
_getcwd=self.getcwd, _print=out.append)
|
||||
self.assertEqual(e.exception.args[0], "Only give --newversion")
|
||||
|
||||
with self.assertRaises(ValueError) as e:
|
||||
_run(u'inctestpkg', path=None, newversion="1", patch=False,
|
||||
rc=True, dev=False, create=False, _date=self.date,
|
||||
_getcwd=self.getcwd, _print=out.append)
|
||||
self.assertEqual(e.exception.args[0], "Only give --newversion")
|
||||
|
||||
with self.assertRaises(ValueError) as e:
|
||||
_run(u'inctestpkg', path=None, newversion="1", patch=False,
|
||||
rc=False, dev=True, create=False, _date=self.date,
|
||||
_getcwd=self.getcwd, _print=out.append)
|
||||
self.assertEqual(e.exception.args[0], "Only give --newversion")
|
||||
|
||||
def test_no_mix_dev(self):
|
||||
"""
|
||||
The `--dev` flag can't be mixed with --patch, or --rc.
|
||||
"""
|
||||
out = []
|
||||
with self.assertRaises(ValueError) as e:
|
||||
_run(u'inctestpkg', path=None, newversion=None, patch=True,
|
||||
rc=False, dev=True, create=False, _date=self.date,
|
||||
_getcwd=self.getcwd, _print=out.append)
|
||||
self.assertEqual(e.exception.args[0], "Only give --dev")
|
||||
|
||||
with self.assertRaises(ValueError) as e:
|
||||
_run(u'inctestpkg', path=None, newversion=None, patch=False,
|
||||
rc=True, dev=True, create=False, _date=self.date,
|
||||
_getcwd=self.getcwd, _print=out.append)
|
||||
self.assertEqual(e.exception.args[0], "Only give --dev")
|
||||
|
||||
def test_no_mix_create(self):
|
||||
"""
|
||||
The `--create` flag can't be mixed with --patch, --rc, --dev, or
|
||||
--newversion.
|
||||
"""
|
||||
out = []
|
||||
with self.assertRaises(ValueError) as e:
|
||||
_run(u'inctestpkg', path=None, newversion=None, patch=True,
|
||||
rc=False, dev=False, create=True, _date=self.date,
|
||||
_getcwd=self.getcwd, _print=out.append)
|
||||
self.assertEqual(e.exception.args[0], "Only give --create")
|
||||
|
||||
with self.assertRaises(ValueError) as e:
|
||||
_run(u'inctestpkg', path=None, newversion="1", patch=False,
|
||||
rc=False, dev=False, create=True, _date=self.date,
|
||||
_getcwd=self.getcwd, _print=out.append)
|
||||
self.assertEqual(e.exception.args[0], "Only give --create")
|
||||
|
||||
with self.assertRaises(ValueError) as e:
|
||||
_run(u'inctestpkg', path=None, newversion=None, patch=False,
|
||||
rc=True, dev=False, create=True, _date=self.date,
|
||||
_getcwd=self.getcwd, _print=out.append)
|
||||
self.assertEqual(e.exception.args[0], "Only give --create")
|
||||
|
||||
with self.assertRaises(ValueError) as e:
|
||||
_run(u'inctestpkg', path=None, newversion=None, patch=False,
|
||||
rc=False, dev=True, create=True, _date=self.date,
|
||||
_getcwd=self.getcwd, _print=out.append)
|
||||
self.assertEqual(e.exception.args[0], "Only give --create")
|
||||
|
||||
def test_newversion(self):
|
||||
"""
|
||||
`incremental.update package --newversion=1.2.3rc1dev3`, will set that
|
||||
version in the package.
|
||||
"""
|
||||
out = []
|
||||
_run(u'inctestpkg', path=None, newversion="1.2.3rc1dev3", patch=False,
|
||||
rc=False, dev=False, create=False, _date=self.date,
|
||||
_getcwd=self.getcwd, _print=out.append)
|
||||
|
||||
self.assertEqual(self.packagedir.child("_version.py").getContent(),
|
||||
b'''"""
|
||||
Provides inctestpkg version information.
|
||||
"""
|
||||
|
||||
# This file is auto-generated! Do not edit!
|
||||
# Use `python -m incremental.update inctestpkg` to change this file.
|
||||
|
||||
from incremental import Version
|
||||
|
||||
__version__ = Version('inctestpkg', 1, 2, 3, release_candidate=1, dev=3)
|
||||
__all__ = ["__version__"]
|
||||
''')
|
||||
self.assertEqual(self.packagedir.child("__init__.py").getContent(),
|
||||
(b"""
|
||||
from incremental import Version
|
||||
introduced_in = Version('inctestpkg', 1, 2, 3, """
|
||||
b"""release_candidate=1, dev=3).short()
|
||||
next_released_version = "inctestpkg 1.2.3rc1dev3"
|
||||
"""))
|
||||
|
||||
def test_newversion_bare(self):
|
||||
"""
|
||||
`incremental.update package --newversion=1`, will set that
|
||||
version in the package.
|
||||
"""
|
||||
out = []
|
||||
_run(u'inctestpkg', path=None, newversion="1", patch=False,
|
||||
rc=False, dev=False, create=False, _date=self.date,
|
||||
_getcwd=self.getcwd, _print=out.append)
|
||||
|
||||
self.assertEqual(self.packagedir.child("_version.py").getContent(),
|
||||
b'''"""
|
||||
Provides inctestpkg version information.
|
||||
"""
|
||||
|
||||
# This file is auto-generated! Do not edit!
|
||||
# Use `python -m incremental.update inctestpkg` to change this file.
|
||||
|
||||
from incremental import Version
|
||||
|
||||
__version__ = Version('inctestpkg', 1, 0, 0)
|
||||
__all__ = ["__version__"]
|
||||
''')
|
||||
self.assertEqual(self.packagedir.child("__init__.py").getContent(),
|
||||
b"""
|
||||
from incremental import Version
|
||||
introduced_in = Version('inctestpkg', 1, 0, 0).short()
|
||||
next_released_version = "inctestpkg 1.0.0"
|
||||
""")
|
||||
|
||||
|
||||
class ScriptTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
|
||||
self.srcdir = FilePath(self.mktemp())
|
||||
self.srcdir.makedirs()
|
||||
|
||||
self.srcdir.child('src').makedirs()
|
||||
|
||||
packagedir = self.srcdir.child('src').child('inctestpkg')
|
||||
packagedir.makedirs()
|
||||
|
||||
packagedir.child('__init__.py').setContent(b"""
|
||||
from incremental import Version
|
||||
introduced_in = Version('inctestpkg', 'NEXT', 0, 0).short()
|
||||
next_released_version = "inctestpkg NEXT"
|
||||
""")
|
||||
packagedir.child('_version.py').setContent(b"""
|
||||
from incremental import Version
|
||||
__version__ = Version('inctestpkg', 1, 2, 3)
|
||||
__all__ = ["__version__"]
|
||||
""")
|
||||
self.getcwd = lambda: self.srcdir.path
|
||||
self.packagedir = packagedir
|
||||
|
||||
class Date(object):
|
||||
year = 2016
|
||||
month = 8
|
||||
|
||||
class DateModule(object):
|
||||
def today(self):
|
||||
return Date()
|
||||
|
||||
self.date = DateModule()
|
||||
|
||||
def test_run(self):
|
||||
"""
|
||||
Calling run() with no args will cause it to print help.
|
||||
"""
|
||||
stringio = NativeStringIO()
|
||||
self.patch(sys, 'stdout', stringio)
|
||||
|
||||
with self.assertRaises(SystemExit) as e:
|
||||
run(["--help"])
|
||||
|
||||
self.assertEqual(e.exception.args[0], 0)
|
||||
self.assertIn("Show this message and exit", stringio.getvalue())
|
||||
|
||||
def test_insufficient_args(self):
|
||||
"""
|
||||
Calling run() with no args will cause it to print help.
|
||||
"""
|
||||
stringio = NativeStringIO()
|
||||
self.patch(sys, 'stdout', stringio)
|
||||
self.patch(os, 'getcwd', self.getcwd)
|
||||
self.patch(datetime, 'date', self.date)
|
||||
|
||||
with self.assertRaises(SystemExit) as e:
|
||||
run(["inctestpkg", "--rc"])
|
||||
|
||||
self.assertEqual(e.exception.args[0], 0)
|
||||
self.assertIn("Updating codebase", stringio.getvalue())
|
||||
|
||||
self.assertEqual(self.packagedir.child("_version.py").getContent(),
|
||||
b'''"""
|
||||
Provides inctestpkg version information.
|
||||
"""
|
||||
|
||||
# This file is auto-generated! Do not edit!
|
||||
# Use `python -m incremental.update inctestpkg` to change this file.
|
||||
|
||||
from incremental import Version
|
||||
|
||||
__version__ = Version('inctestpkg', 16, 8, 0, release_candidate=1)
|
||||
__all__ = ["__version__"]
|
||||
''')
|
||||
self.assertEqual(self.packagedir.child("__init__.py").getContent(),
|
||||
b"""
|
||||
from incremental import Version
|
||||
introduced_in = Version('inctestpkg', 16, 8, 0, release_candidate=1).short()
|
||||
next_released_version = "inctestpkg 16.8.0rc1"
|
||||
""")
|
||||
|
|
@ -0,0 +1,415 @@
|
|||
# Copyright (c) Twisted Matrix Laboratories.
|
||||
# See LICENSE for details.
|
||||
|
||||
"""
|
||||
Tests for L{incremental}.
|
||||
"""
|
||||
|
||||
from __future__ import division, absolute_import
|
||||
|
||||
import operator
|
||||
|
||||
from incremental import getVersionString, IncomparableVersions
|
||||
from incremental import Version, _inf
|
||||
|
||||
from twisted.trial.unittest import TestCase
|
||||
|
||||
|
||||
class VersionsTests(TestCase):
|
||||
|
||||
def test_localIsShort(self):
|
||||
"""
|
||||
The local version is the same as the short version.
|
||||
"""
|
||||
va = Version("dummy", 1, 0, 0, release_candidate=1, dev=3)
|
||||
self.assertEqual(va.local(), va.short())
|
||||
|
||||
def test_versionComparison(self):
|
||||
"""
|
||||
Versions can be compared for equality and order.
|
||||
"""
|
||||
va = Version("dummy", 1, 0, 0)
|
||||
vb = Version("dummy", 0, 1, 0)
|
||||
self.assertTrue(va > vb)
|
||||
self.assertTrue(vb < va)
|
||||
self.assertTrue(va >= vb)
|
||||
self.assertTrue(vb <= va)
|
||||
self.assertTrue(va != vb)
|
||||
self.assertTrue(vb == Version("dummy", 0, 1, 0))
|
||||
self.assertTrue(vb == vb)
|
||||
|
||||
def test_versionComparisonCaseInsensitive(self):
|
||||
"""
|
||||
Version package names are case insensitive.
|
||||
"""
|
||||
va = Version("dummy", 1, 0, 0)
|
||||
vb = Version("DuMmY", 0, 1, 0)
|
||||
self.assertTrue(va > vb)
|
||||
self.assertTrue(vb < va)
|
||||
self.assertTrue(va >= vb)
|
||||
self.assertTrue(vb <= va)
|
||||
self.assertTrue(va != vb)
|
||||
self.assertTrue(vb == Version("dummy", 0, 1, 0))
|
||||
self.assertTrue(vb == vb)
|
||||
|
||||
def test_comparingNEXTReleases(self):
|
||||
"""
|
||||
NEXT releases are always larger than numbered releases.
|
||||
"""
|
||||
va = Version("whatever", "NEXT", 0, 0)
|
||||
vb = Version("whatever", 1, 0, 0)
|
||||
self.assertTrue(va > vb)
|
||||
self.assertFalse(va < vb)
|
||||
self.assertNotEquals(vb, va)
|
||||
|
||||
def test_NEXTMustBeAlone(self):
|
||||
"""
|
||||
NEXT releases must always have the rest of the numbers set to 0.
|
||||
"""
|
||||
with self.assertRaises(ValueError):
|
||||
Version("whatever", "NEXT", 1, 0, release_candidate=0, dev=0)
|
||||
|
||||
with self.assertRaises(ValueError):
|
||||
Version("whatever", "NEXT", 0, 1, release_candidate=0, dev=0)
|
||||
|
||||
with self.assertRaises(ValueError):
|
||||
Version("whatever", "NEXT", 0, 0, release_candidate=1, dev=0)
|
||||
|
||||
with self.assertRaises(ValueError):
|
||||
Version("whatever", "NEXT", 0, 0, release_candidate=0, dev=1)
|
||||
|
||||
def test_comparingNEXTReleasesEqual(self):
|
||||
"""
|
||||
NEXT releases are equal to each other.
|
||||
"""
|
||||
va = Version("whatever", "NEXT", 0, 0)
|
||||
vb = Version("whatever", "NEXT", 0, 0)
|
||||
self.assertEquals(vb, va)
|
||||
|
||||
def test_comparingPrereleasesWithReleases(self):
|
||||
"""
|
||||
Prereleases are always less than versions without prereleases.
|
||||
"""
|
||||
va = Version("whatever", 1, 0, 0, prerelease=1)
|
||||
vb = Version("whatever", 1, 0, 0)
|
||||
self.assertTrue(va < vb)
|
||||
self.assertFalse(va > vb)
|
||||
self.assertNotEquals(vb, va)
|
||||
|
||||
def test_prereleaseDeprecated(self):
|
||||
"""
|
||||
Passing 'prerelease' to Version is deprecated.
|
||||
"""
|
||||
Version("whatever", 1, 0, 0, prerelease=1)
|
||||
warnings = self.flushWarnings([self.test_prereleaseDeprecated])
|
||||
self.assertEqual(len(warnings), 1)
|
||||
self.assertEqual(
|
||||
warnings[0]['message'],
|
||||
("Passing prerelease to incremental.Version was deprecated in "
|
||||
"Incremental 16.9.0. Please pass release_candidate instead."))
|
||||
|
||||
def test_prereleaseAttributeDeprecated(self):
|
||||
"""
|
||||
Accessing 'prerelease' on a Version is deprecated.
|
||||
"""
|
||||
va = Version("whatever", 1, 0, 0, release_candidate=1)
|
||||
va.prerelease
|
||||
warnings = self.flushWarnings(
|
||||
[self.test_prereleaseAttributeDeprecated])
|
||||
self.assertEqual(len(warnings), 1)
|
||||
self.assertEqual(
|
||||
warnings[0]['message'],
|
||||
("Accessing incremental.Version.prerelease was deprecated in "
|
||||
"Incremental 16.9.0. Use Version.release_candidate instead."))
|
||||
|
||||
def test_comparingReleaseCandidatesWithReleases(self):
|
||||
"""
|
||||
Release Candidates are always less than versions without release
|
||||
candidates.
|
||||
"""
|
||||
va = Version("whatever", 1, 0, 0, release_candidate=1)
|
||||
vb = Version("whatever", 1, 0, 0)
|
||||
self.assertTrue(va < vb)
|
||||
self.assertFalse(va > vb)
|
||||
self.assertNotEquals(vb, va)
|
||||
|
||||
def test_comparingDevReleasesWithReleases(self):
|
||||
"""
|
||||
Dev releases are always less than versions without dev releases.
|
||||
"""
|
||||
va = Version("whatever", 1, 0, 0, dev=1)
|
||||
vb = Version("whatever", 1, 0, 0)
|
||||
self.assertTrue(va < vb)
|
||||
self.assertFalse(va > vb)
|
||||
self.assertNotEquals(vb, va)
|
||||
|
||||
def test_rcEqualspre(self):
|
||||
"""
|
||||
Release Candidates are equal to prereleases.
|
||||
"""
|
||||
va = Version("whatever", 1, 0, 0, release_candidate=1)
|
||||
vb = Version("whatever", 1, 0, 0, prerelease=1)
|
||||
self.assertTrue(va == vb)
|
||||
self.assertFalse(va != vb)
|
||||
|
||||
def test_rcOrpreButNotBoth(self):
|
||||
"""
|
||||
Release Candidate and prerelease can't both be given.
|
||||
"""
|
||||
with self.assertRaises(ValueError):
|
||||
Version("whatever", 1, 0, 0,
|
||||
prerelease=1, release_candidate=1)
|
||||
|
||||
def test_comparingReleaseCandidates(self):
|
||||
"""
|
||||
The value specified as the release candidate is used in version
|
||||
comparisons.
|
||||
"""
|
||||
va = Version("whatever", 1, 0, 0, release_candidate=1)
|
||||
vb = Version("whatever", 1, 0, 0, release_candidate=2)
|
||||
self.assertTrue(va < vb)
|
||||
self.assertTrue(vb > va)
|
||||
self.assertTrue(va <= vb)
|
||||
self.assertTrue(vb >= va)
|
||||
self.assertTrue(va != vb)
|
||||
self.assertTrue(vb == Version("whatever", 1, 0, 0,
|
||||
release_candidate=2))
|
||||
self.assertTrue(va == va)
|
||||
|
||||
def test_comparingDev(self):
|
||||
"""
|
||||
The value specified as the dev release is used in version comparisons.
|
||||
"""
|
||||
va = Version("whatever", 1, 0, 0, dev=1)
|
||||
vb = Version("whatever", 1, 0, 0, dev=2)
|
||||
self.assertTrue(va < vb)
|
||||
self.assertTrue(vb > va)
|
||||
self.assertTrue(va <= vb)
|
||||
self.assertTrue(vb >= va)
|
||||
self.assertTrue(va != vb)
|
||||
self.assertTrue(vb == Version("whatever", 1, 0, 0,
|
||||
dev=2))
|
||||
self.assertTrue(va == va)
|
||||
|
||||
def test_comparingDevAndRC(self):
|
||||
"""
|
||||
The value specified as the dev release and release candidate is used in
|
||||
version comparisons.
|
||||
"""
|
||||
va = Version("whatever", 1, 0, 0, release_candidate=1, dev=1)
|
||||
vb = Version("whatever", 1, 0, 0, release_candidate=1, dev=2)
|
||||
self.assertTrue(va < vb)
|
||||
self.assertTrue(vb > va)
|
||||
self.assertTrue(va <= vb)
|
||||
self.assertTrue(vb >= va)
|
||||
self.assertTrue(va != vb)
|
||||
self.assertTrue(vb == Version("whatever", 1, 0, 0,
|
||||
release_candidate=1, dev=2))
|
||||
self.assertTrue(va == va)
|
||||
|
||||
def test_comparingDevAndRCDifferent(self):
|
||||
"""
|
||||
The value specified as the dev release and release candidate is used in
|
||||
version comparisons.
|
||||
"""
|
||||
va = Version("whatever", 1, 0, 0, release_candidate=1, dev=1)
|
||||
vb = Version("whatever", 1, 0, 0, release_candidate=2, dev=1)
|
||||
self.assertTrue(va < vb)
|
||||
self.assertTrue(vb > va)
|
||||
self.assertTrue(va <= vb)
|
||||
self.assertTrue(vb >= va)
|
||||
self.assertTrue(va != vb)
|
||||
self.assertTrue(vb == Version("whatever", 1, 0, 0,
|
||||
release_candidate=2, dev=1))
|
||||
self.assertTrue(va == va)
|
||||
|
||||
def test_infComparison(self):
|
||||
"""
|
||||
L{_inf} is equal to L{_inf}.
|
||||
|
||||
This is a regression test.
|
||||
"""
|
||||
self.assertEqual(_inf, _inf)
|
||||
|
||||
def test_disallowBuggyComparisons(self):
|
||||
"""
|
||||
The package names of the Version objects need to be the same.
|
||||
"""
|
||||
self.assertRaises(IncomparableVersions,
|
||||
operator.eq,
|
||||
Version("dummy", 1, 0, 0),
|
||||
Version("dumym", 1, 0, 0))
|
||||
|
||||
def test_notImplementedComparisons(self):
|
||||
"""
|
||||
Comparing a L{Version} to some other object type results in
|
||||
C{NotImplemented}.
|
||||
"""
|
||||
va = Version("dummy", 1, 0, 0)
|
||||
vb = ("dummy", 1, 0, 0) # a tuple is not a Version object
|
||||
self.assertEqual(va.__cmp__(vb), NotImplemented)
|
||||
|
||||
def test_repr(self):
|
||||
"""
|
||||
Calling C{repr} on a version returns a human-readable string
|
||||
representation of the version.
|
||||
"""
|
||||
self.assertEqual(repr(Version("dummy", 1, 2, 3)),
|
||||
"Version('dummy', 1, 2, 3)")
|
||||
|
||||
def test_reprWithPrerelease(self):
|
||||
"""
|
||||
Calling C{repr} on a version with a prerelease returns a human-readable
|
||||
string representation of the version including the prerelease as a
|
||||
release candidate..
|
||||
"""
|
||||
self.assertEqual(repr(Version("dummy", 1, 2, 3, prerelease=4)),
|
||||
"Version('dummy', 1, 2, 3, release_candidate=4)")
|
||||
|
||||
def test_reprWithReleaseCandidate(self):
|
||||
"""
|
||||
Calling C{repr} on a version with a release candidate returns a
|
||||
human-readable string representation of the version including the rc.
|
||||
"""
|
||||
self.assertEqual(repr(Version("dummy", 1, 2, 3, release_candidate=4)),
|
||||
"Version('dummy', 1, 2, 3, release_candidate=4)")
|
||||
|
||||
def test_devWithReleaseCandidate(self):
|
||||
"""
|
||||
Calling C{repr} on a version with a dev release returns a
|
||||
human-readable string representation of the version including the dev
|
||||
release.
|
||||
"""
|
||||
self.assertEqual(repr(Version("dummy", 1, 2, 3, dev=4)),
|
||||
"Version('dummy', 1, 2, 3, dev=4)")
|
||||
|
||||
def test_str(self):
|
||||
"""
|
||||
Calling C{str} on a version returns a human-readable string
|
||||
representation of the version.
|
||||
"""
|
||||
self.assertEqual(str(Version("dummy", 1, 2, 3)),
|
||||
"[dummy, version 1.2.3]")
|
||||
|
||||
def test_strWithPrerelease(self):
|
||||
"""
|
||||
Calling C{str} on a version with a prerelease includes the prerelease
|
||||
as a release candidate.
|
||||
"""
|
||||
self.assertEqual(str(Version("dummy", 1, 0, 0, prerelease=1)),
|
||||
"[dummy, version 1.0.0rc1]")
|
||||
|
||||
def test_strWithReleaseCandidate(self):
|
||||
"""
|
||||
Calling C{str} on a version with a release candidate includes the
|
||||
release candidate.
|
||||
"""
|
||||
self.assertEqual(str(Version("dummy", 1, 0, 0, release_candidate=1)),
|
||||
"[dummy, version 1.0.0rc1]")
|
||||
|
||||
def test_strWithDevAndReleaseCandidate(self):
|
||||
"""
|
||||
Calling C{str} on a version with a release candidate and dev release
|
||||
includes the release candidate and the dev release.
|
||||
"""
|
||||
self.assertEqual(str(Version("dummy", 1, 0, 0,
|
||||
release_candidate=1, dev=2)),
|
||||
"[dummy, version 1.0.0rc1dev2]")
|
||||
|
||||
def test_strWithDev(self):
|
||||
"""
|
||||
Calling C{str} on a version with a dev release includes the dev
|
||||
release.
|
||||
"""
|
||||
self.assertEqual(str(Version("dummy", 1, 0, 0, dev=1)),
|
||||
"[dummy, version 1.0.0dev1]")
|
||||
|
||||
def testShort(self):
|
||||
self.assertEqual(Version('dummy', 1, 2, 3).short(), '1.2.3')
|
||||
|
||||
def test_getVersionString(self):
|
||||
"""
|
||||
L{getVersionString} returns a string with the package name and the
|
||||
short version number.
|
||||
"""
|
||||
self.assertEqual(
|
||||
'Twisted 8.0.0', getVersionString(Version('Twisted', 8, 0, 0)))
|
||||
|
||||
def test_getVersionStringWithPrerelease(self):
|
||||
"""
|
||||
L{getVersionString} includes the prerelease as a release candidate, if
|
||||
any.
|
||||
"""
|
||||
self.assertEqual(
|
||||
getVersionString(Version("whatever", 8, 0, 0, prerelease=1)),
|
||||
"whatever 8.0.0rc1")
|
||||
|
||||
def test_getVersionStringWithReleaseCandidate(self):
|
||||
"""
|
||||
L{getVersionString} includes the release candidate, if any.
|
||||
"""
|
||||
self.assertEqual(
|
||||
getVersionString(Version("whatever", 8, 0, 0,
|
||||
release_candidate=1)),
|
||||
"whatever 8.0.0rc1")
|
||||
|
||||
def test_getVersionStringWithDev(self):
|
||||
"""
|
||||
L{getVersionString} includes the dev release, if any.
|
||||
"""
|
||||
self.assertEqual(
|
||||
getVersionString(Version("whatever", 8, 0, 0,
|
||||
dev=1)),
|
||||
"whatever 8.0.0dev1")
|
||||
|
||||
def test_getVersionStringWithDevAndRC(self):
|
||||
"""
|
||||
L{getVersionString} includes the dev release and release candidate, if
|
||||
any.
|
||||
"""
|
||||
self.assertEqual(
|
||||
getVersionString(Version("whatever", 8, 0, 0,
|
||||
release_candidate=2, dev=1)),
|
||||
"whatever 8.0.0rc2dev1")
|
||||
|
||||
def test_baseWithNEXT(self):
|
||||
"""
|
||||
The C{base} method returns just "NEXT" when NEXT is the major version.
|
||||
"""
|
||||
self.assertEqual(Version("foo", "NEXT", 0, 0).base(), "NEXT")
|
||||
|
||||
def test_base(self):
|
||||
"""
|
||||
The C{base} method returns a very simple representation of the version.
|
||||
"""
|
||||
self.assertEqual(Version("foo", 1, 0, 0).base(), "1.0.0")
|
||||
|
||||
def test_baseWithPrerelease(self):
|
||||
"""
|
||||
The base version includes 'rcX' for versions with prereleases.
|
||||
"""
|
||||
self.assertEqual(Version("foo", 1, 0, 0, prerelease=8).base(),
|
||||
"1.0.0rc8")
|
||||
|
||||
def test_baseWithDev(self):
|
||||
"""
|
||||
The base version includes 'devX' for versions with dev releases.
|
||||
"""
|
||||
self.assertEqual(Version("foo", 1, 0, 0, dev=8).base(),
|
||||
"1.0.0dev8")
|
||||
|
||||
def test_baseWithReleaseCandidate(self):
|
||||
"""
|
||||
The base version includes 'rcX' for versions with prereleases.
|
||||
"""
|
||||
self.assertEqual(Version("foo", 1, 0, 0, release_candidate=8).base(),
|
||||
"1.0.0rc8")
|
||||
|
||||
def test_baseWithDevAndRC(self):
|
||||
"""
|
||||
The base version includes 'rcXdevX' for versions with dev releases and
|
||||
a release candidate.
|
||||
"""
|
||||
self.assertEqual(Version("foo", 1, 0, 0,
|
||||
release_candidate=2, dev=8).base(),
|
||||
"1.0.0rc2dev8")
|
||||
Loading…
Add table
Add a link
Reference in a new issue