Hello community,
here is the log from the commit of package python3-setuptools_scm for
openSUSE:Factory checked in at 2015-12-14 10:14:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-setuptools_scm (Old)
and /work/SRC/openSUSE:Factory/.python3-setuptools_scm.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-setuptools_scm"
Changes:
--------
---
/work/SRC/openSUSE:Factory/python3-setuptools_scm/python3-setuptools_scm.changes
2015-11-17 14:23:02.000000000 +0100
+++
/work/SRC/openSUSE:Factory/.python3-setuptools_scm.new/python3-setuptools_scm.changes
2015-12-14 10:15:28.000000000 +0100
@@ -1,0 +2,21 @@
+Sun Dec 13 20:23:13 UTC 2015 - [email protected]
+
+- specfile:
+ * moved from tar.gz to tar.bz2 on pypi (at least no tar.gz available)
+
+- update to version 1.10.1:
+ * fix issue #73 - in hg pre commit merge, consider parent1 instead
+ of failing
+
+- changes from version 1.10.0:
+ * add support for overriding the version number via the environment
+ variable SETUPTOOLS_SCM_PRETEND_VERSION
+ * fix isssue #63 by adding the --match parameter to the git describe
+ call and prepare the possibility of passing more options to scm
+ backends
+ * fix issue #70 and #71 by introducing the parse keyword to specify
+ custom scm parsing, its an expert feature, use with caution
+ * this change also introduces the setuptools_scm.parse_scm_fallback
+ entrypoint which can be used to register custom archive fallbacks
+
+-------------------------------------------------------------------
Old:
----
setuptools_scm-1.9.0.tar.gz
New:
----
setuptools_scm-1.10.1.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-setuptools_scm.spec ++++++
--- /var/tmp/diff_new_pack.HwJSWr/_old 2015-12-14 10:15:29.000000000 +0100
+++ /var/tmp/diff_new_pack.HwJSWr/_new 2015-12-14 10:15:29.000000000 +0100
@@ -17,13 +17,13 @@
Name: python3-setuptools_scm
-Version: 1.9.0
+Version: 1.10.1
Release: 0
Summary: the blessed package to manage your versions by scm tags
License: MIT
Group: Development/Languages/Python
Url: https://github.com/pypa/setuptools_scm
-Source0:
https://pypi.python.org/packages/source/s/setuptools_scm/setuptools_scm-%{version}.tar.gz
+Source0:
https://pypi.python.org/packages/source/s/setuptools_scm/setuptools_scm-%{version}.tar.bz2
BuildRequires: python3-devel
BuildRequires: python3-setuptools
# Testing requirements
++++++ setuptools_scm-1.9.0.tar.gz -> setuptools_scm-1.10.1.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.9.0/CHANGELOG.rst
new/setuptools_scm-1.10.1/CHANGELOG.rst
--- old/setuptools_scm-1.9.0/CHANGELOG.rst 2015-11-12 14:35:39.000000000
+0100
+++ new/setuptools_scm-1.10.1/CHANGELOG.rst 2015-12-10 21:58:57.000000000
+0100
@@ -1,3 +1,25 @@
+v1.10.1
+=======
+
+* fix issue #73 - in hg pre commit merge, consider parent1 instead of failing
+
+v1.10.0
+=======
+
+* add support for overriding the version number via the
+ environment variable SETUPTOOLS_SCM_PRETEND_VERSION
+
+* fix isssue #63 by adding the --match parameter to the git describe call
+ and prepare the possibility of passing more options to scm backends
+
+* fix issue #70 and #71 by introducing the parse keyword
+ to specify custom scm parsing, its an expert feature,
+ use with caution
+
+ this change also introduces the setuptools_scm.parse_scm_fallback
+ entrypoint which can be used to register custom archive fallbacks
+
+
v1.9.0
======
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.9.0/PKG-INFO
new/setuptools_scm-1.10.1/PKG-INFO
--- old/setuptools_scm-1.9.0/PKG-INFO 2015-11-12 16:50:10.000000000 +0100
+++ new/setuptools_scm-1.10.1/PKG-INFO 2015-12-10 22:04:05.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: setuptools_scm
-Version: 1.9.0
+Version: 1.10.1
Summary: the blessed package to manage your versions by scm tags
Home-page: https://github.com/pypa/setuptools_scm/
Author: Ronny Pfannschmidt
@@ -51,6 +51,17 @@
version = get_version()
+ Notable Plugins
+ ----------------
+
+ `setuptools_scm_git_archive
<https://pypi.python.org/pypi/setuptools_scm_git_archive>`_
+ provides partial support for obtaining versions from git archvies
+ that belong to tagged versions. The only reason for not including
+ it in setuptools-scm itself is git/github not supporting
+ sufficient metadata for untagged/followup commits,
+ which is preventing a consistent UX.
+
+
Default versioning scheme
--------------------------
@@ -134,6 +145,18 @@
a newstyle format string thats given the current version as
the :code:`version` keyword argument for formatting
+ :relative_to:
+ a file from which root may be resolved. typically called by a
+ script or module that is not
+ in the root of the repository to direct setuptools_scm to the
+ root of the repository by supplying ``__file__``.
+
+ :parse:
+ a function that will be used instead of the discovered scm for
parsing the version,
+ use with caution, this is a expert function and you should be
closely familiar
+ with the setuptools_scm internals to use it
+
+
To use setuptools_scm in other Python code you can use the
``get_version`` function:
@@ -146,6 +169,15 @@
keyword arguments.
+ Environment Variables
+ ---------------------
+
+ :SETUPTOOLS_SCM_PRETEND_VERSION:
+ when defined and not empty,
+ its used as the primary source for the version number
+ in which case it will be a unparsed string
+
+
Extending setuptools_scm
------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.9.0/README.rst
new/setuptools_scm-1.10.1/README.rst
--- old/setuptools_scm-1.9.0/README.rst 2015-11-12 14:33:36.000000000 +0100
+++ new/setuptools_scm-1.10.1/README.rst 2015-12-07 21:45:49.000000000
+0100
@@ -43,6 +43,17 @@
version = get_version()
+Notable Plugins
+----------------
+
+`setuptools_scm_git_archive
<https://pypi.python.org/pypi/setuptools_scm_git_archive>`_
+provides partial support for obtaining versions from git archvies
+that belong to tagged versions. The only reason for not including
+it in setuptools-scm itself is git/github not supporting
+sufficient metadata for untagged/followup commits,
+which is preventing a consistent UX.
+
+
Default versioning scheme
--------------------------
@@ -126,6 +137,18 @@
a newstyle format string thats given the current version as
the :code:`version` keyword argument for formatting
+:relative_to:
+ a file from which root may be resolved. typically called by a
+ script or module that is not
+ in the root of the repository to direct setuptools_scm to the
+ root of the repository by supplying ``__file__``.
+
+:parse:
+ a function that will be used instead of the discovered scm for parsing the
version,
+ use with caution, this is a expert function and you should be closely
familiar
+ with the setuptools_scm internals to use it
+
+
To use setuptools_scm in other Python code you can use the
``get_version`` function:
@@ -138,6 +161,15 @@
keyword arguments.
+Environment Variables
+---------------------
+
+:SETUPTOOLS_SCM_PRETEND_VERSION:
+ when defined and not empty,
+ its used as the primary source for the version number
+ in which case it will be a unparsed string
+
+
Extending setuptools_scm
------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.9.0/setup.cfg
new/setuptools_scm-1.10.1/setup.cfg
--- old/setuptools_scm-1.9.0/setup.cfg 2015-11-12 16:50:10.000000000 +0100
+++ new/setuptools_scm-1.10.1/setup.cfg 2015-12-10 22:04:05.000000000 +0100
@@ -9,6 +9,6 @@
[egg_info]
tag_build =
-tag_svn_revision = 0
tag_date = 0
+tag_svn_revision = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.9.0/setup.py
new/setuptools_scm-1.10.1/setup.py
--- old/setuptools_scm-1.9.0/setup.py 2015-11-12 16:50:11.000000000 +0100
+++ new/setuptools_scm-1.10.1/setup.py 2015-12-10 22:04:05.000000000 +0100
@@ -63,7 +63,7 @@
url='https://github.com/pypa/setuptools_scm/',
zip_safe=True,
# pass here since entrypints are not yet registred
- version="1.9.0",
+ version="1.10.1",
author='Ronny Pfannschmidt',
author_email='[email protected]',
description=('the blessed package to manage your versions by scm tags'),
@@ -82,6 +82,12 @@
[setuptools_scm.parse_scm]
.hg = setuptools_scm.hg:parse
.git = setuptools_scm.git:parse
+
+ # those are left here for backward compatibility in the 1.x series
+ .hg_archival.txt = setuptools_scm.hg:parse_archival
+ PKG-INFO = setuptools_scm.hacks:parse_pkginfo
+
+ [setuptools_scm.parse_scm_fallback]
.hg_archival.txt = setuptools_scm.hg:parse_archival
PKG-INFO = setuptools_scm.hacks:parse_pkginfo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.9.0/setuptools_scm/__init__.py
new/setuptools_scm-1.10.1/setuptools_scm/__init__.py
--- old/setuptools_scm-1.9.0/setuptools_scm/__init__.py 2015-11-12
14:32:31.000000000 +0100
+++ new/setuptools_scm-1.10.1/setuptools_scm/__init__.py 2015-12-07
21:24:21.000000000 +0100
@@ -9,6 +9,9 @@
from .version import format_version
from .discover import find_matching_entrypoint
+PRETEND_KEY = 'SETUPTOOLS_SCM_PRETEND_VERSION'
+
+
TEMPLATES = {
'.py': """\
# coding: utf-8
@@ -24,16 +27,13 @@
def version_from_scm(root):
- ep = find_matching_entrypoint(root, 'setuptools_scm.parse_scm')
+ return _version_from_entrypoint(root, 'setuptools_scm.parse_scm')
+
+
+def _version_from_entrypoint(root, entrypoint):
+ ep = find_matching_entrypoint(root, entrypoint)
if ep:
return ep.load()(root)
- raise LookupError(
- "setuptools-scm was unable to detect version for %r.\n\n"
- "Make sure you're not using GitHub's tarballs (or similar ones), as "
- "those don't contain the necessary metadata. Use PyPI's tarballs "
- "instead.\n\nFor example, if you're using pip, instead of "
- "https://github.com/user/proj/archive/master.zip "
- "use git+https://github.com/user/proj.git#egg=proj" % root)
def dump_version(root, version, write_to, template=None):
@@ -56,25 +56,50 @@
fp.write(dump)
+def _do_parse(root, parse):
+ pretended = os.environ.get(PRETEND_KEY)
+ if pretended:
+ return pretended
+
+ if parse:
+ version = parse(root) or _version_from_entrypoint(
+ root, 'setuptools_scm.parse_scm_fallback')
+ else:
+ # include fallbacks after dropping them from the main entrypoint
+ version = version_from_scm(root)
+
+ if version:
+ return version
+
+ raise LookupError(
+ "setuptools-scm was unable to detect version for %r.\n\n"
+ "Make sure you're not using GitHub's tarballs (or similar ones), as "
+ "those don't contain the necessary metadata. Use PyPI's tarballs "
+ "instead.\n\nFor example, if you're using pip, instead of "
+ "https://github.com/user/proj/archive/master.zip "
+ "use git+https://github.com/user/proj.git#egg=proj" % root)
+
+
def get_version(root='.',
version_scheme='guess-next-dev',
local_scheme='node-and-date',
write_to=None,
write_to_template=None,
relative_to=None,
+ parse=None,
):
"""
If supplied, relative_to should be a file from which root may
be resolved. Typically called by a script or module that is not
in the root of the repository to direct setuptools_scm to the
- root of the repository by passing ``__file__``.
+ root of the repository by supplying ``__file__``.
"""
if relative_to:
root = os.path.join(os.path.dirname(relative_to), root)
root = os.path.abspath(root)
trace('root', repr(root))
- version = version_from_scm(root)
+ version = _do_parse(root, parse)
if version:
if isinstance(version, string_types):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.9.0/setuptools_scm/git.py
new/setuptools_scm-1.10.1/setuptools_scm/git.py
--- old/setuptools_scm-1.9.0/setuptools_scm/git.py 2015-11-02
01:25:24.000000000 +0100
+++ new/setuptools_scm-1.10.1/setuptools_scm/git.py 2015-12-07
18:44:51.000000000 +0100
@@ -4,10 +4,13 @@
FILES_COMMAND = 'git ls-files'
+DEFAULT_DESCRIBE = 'git describe --dirty --tags --long --match *.*'
-def parse(root):
+def parse(root, describe_command=DEFAULT_DESCRIBE):
real_root, _, ret = do_ex('git rev-parse --show-toplevel', root)
+ if ret:
+ return
trace('real root', real_root)
if abspath(realpath(real_root)) != abspath(realpath(root)):
return
@@ -15,7 +18,7 @@
if ret:
return meta('0.0')
rev_node = rev_node[:7]
- out, err, ret = do_ex('git describe --dirty --tags --long', root)
+ out, err, ret = do_ex(describe_command, root)
if '-' not in out and '.' not in out:
revs = do('git rev-list HEAD', root)
count = revs.count('\n')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.9.0/setuptools_scm/hg.py
new/setuptools_scm-1.10.1/setuptools_scm/hg.py
--- old/setuptools_scm-1.9.0/setuptools_scm/hg.py 2015-11-02
01:25:24.000000000 +0100
+++ new/setuptools_scm-1.10.1/setuptools_scm/hg.py 2015-12-10
21:57:24.000000000 +0100
@@ -31,10 +31,12 @@
trace('initial node', root)
return meta('0.0', dirty=dirty)
- cmd = 'hg parents --template "{latesttag} {latesttagdistance}"'
+ # the newline is needed for merge stae, see issue 72
+ cmd = 'hg parents --template "{latesttag} {latesttagdistance}\n"'
out = do(cmd, root)
try:
- tag, dist = out.split()
+ # in merge state we assume parent 1 is fine
+ tag, dist = out.splitlines()[0].split()
if tag == 'null':
tag = '0.0'
dist = int(dist) + 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.9.0/setuptools_scm/version.py
new/setuptools_scm-1.10.1/setuptools_scm/version.py
--- old/setuptools_scm-1.9.0/setuptools_scm/version.py 2015-11-02
01:25:24.000000000 +0100
+++ new/setuptools_scm-1.10.1/setuptools_scm/version.py 2015-11-28
20:33:43.000000000 +0100
@@ -22,8 +22,8 @@
def callable_or_entrypoint(group, callable_or_name):
trace('ep', (group, callable_or_name))
if isinstance(callable_or_name, str):
- ep = next(iter_entry_points(group, callable_or_name))
- return ep.load()
+ for ep in iter_entry_points(group, callable_or_name):
+ return ep.load()
else:
return callable_or_name
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/setuptools_scm-1.9.0/setuptools_scm.egg-info/PKG-INFO
new/setuptools_scm-1.10.1/setuptools_scm.egg-info/PKG-INFO
--- old/setuptools_scm-1.9.0/setuptools_scm.egg-info/PKG-INFO 2015-11-12
16:50:10.000000000 +0100
+++ new/setuptools_scm-1.10.1/setuptools_scm.egg-info/PKG-INFO 2015-12-10
22:04:05.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: setuptools-scm
-Version: 1.9.0
+Version: 1.10.1
Summary: the blessed package to manage your versions by scm tags
Home-page: https://github.com/pypa/setuptools_scm/
Author: Ronny Pfannschmidt
@@ -51,6 +51,17 @@
version = get_version()
+ Notable Plugins
+ ----------------
+
+ `setuptools_scm_git_archive
<https://pypi.python.org/pypi/setuptools_scm_git_archive>`_
+ provides partial support for obtaining versions from git archvies
+ that belong to tagged versions. The only reason for not including
+ it in setuptools-scm itself is git/github not supporting
+ sufficient metadata for untagged/followup commits,
+ which is preventing a consistent UX.
+
+
Default versioning scheme
--------------------------
@@ -134,6 +145,18 @@
a newstyle format string thats given the current version as
the :code:`version` keyword argument for formatting
+ :relative_to:
+ a file from which root may be resolved. typically called by a
+ script or module that is not
+ in the root of the repository to direct setuptools_scm to the
+ root of the repository by supplying ``__file__``.
+
+ :parse:
+ a function that will be used instead of the discovered scm for
parsing the version,
+ use with caution, this is a expert function and you should be
closely familiar
+ with the setuptools_scm internals to use it
+
+
To use setuptools_scm in other Python code you can use the
``get_version`` function:
@@ -146,6 +169,15 @@
keyword arguments.
+ Environment Variables
+ ---------------------
+
+ :SETUPTOOLS_SCM_PRETEND_VERSION:
+ when defined and not empty,
+ its used as the primary source for the version number
+ in which case it will be a unparsed string
+
+
Extending setuptools_scm
------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/setuptools_scm-1.9.0/setuptools_scm.egg-info/SOURCES.txt
new/setuptools_scm-1.10.1/setuptools_scm.egg-info/SOURCES.txt
--- old/setuptools_scm-1.9.0/setuptools_scm.egg-info/SOURCES.txt
2015-11-12 16:50:10.000000000 +0100
+++ new/setuptools_scm-1.10.1/setuptools_scm.egg-info/SOURCES.txt
2015-12-10 22:04:05.000000000 +0100
@@ -26,5 +26,7 @@
testing/conftest.py
testing/test_basic_api.py
testing/test_functions.py
+testing/test_git.py
testing/test_main.py
+testing/test_mercurial.py
testing/test_regressions.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/setuptools_scm-1.9.0/setuptools_scm.egg-info/entry_points.txt
new/setuptools_scm-1.10.1/setuptools_scm.egg-info/entry_points.txt
--- old/setuptools_scm-1.9.0/setuptools_scm.egg-info/entry_points.txt
2015-11-12 16:50:10.000000000 +0100
+++ new/setuptools_scm-1.10.1/setuptools_scm.egg-info/entry_points.txt
2015-12-10 22:04:05.000000000 +0100
@@ -8,6 +8,12 @@
[setuptools_scm.parse_scm]
.hg = setuptools_scm.hg:parse
.git = setuptools_scm.git:parse
+
+ # those are left here for backward compatibility in the 1.x series
+ .hg_archival.txt = setuptools_scm.hg:parse_archival
+ PKG-INFO = setuptools_scm.hacks:parse_pkginfo
+
+ [setuptools_scm.parse_scm_fallback]
.hg_archival.txt = setuptools_scm.hg:parse_archival
PKG-INFO = setuptools_scm.hacks:parse_pkginfo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.9.0/testing/conftest.py
new/setuptools_scm-1.10.1/testing/conftest.py
--- old/setuptools_scm-1.9.0/testing/conftest.py 2015-07-06
21:58:32.000000000 +0200
+++ new/setuptools_scm-1.10.1/testing/conftest.py 2015-11-29
17:37:41.000000000 +0100
@@ -1,4 +1,7 @@
import os
+import itertools
+import pytest
+
os.environ['SETUPTOOLS_SCM_DEBUG'] = '1'
VERSION_PKGS = ['setuptools', 'setuptools_scm']
@@ -10,3 +13,54 @@
version = pkg_resources.get_distribution(pkg).version
res.append('%s version %s' % (pkg, version))
return res
+
+
+class Wd(object):
+ commit_command = None
+ add_command = None
+
+ def __init__(self, cwd):
+ self.cwd = cwd
+ self.__counter = itertools.count()
+
+ def __call__(self, cmd, **kw):
+ if kw:
+ cmd = cmd.format(**kw)
+ from setuptools_scm.utils import do
+ return do(cmd, self.cwd)
+
+ def write(self, name, value, **kw):
+ filename = self.cwd.join(name)
+ if kw:
+ value = value.format(**kw)
+ filename.write(value)
+ return filename
+
+ def _reason(self, given_reason):
+ if given_reason is None:
+ return 'number-{c}'.format(c=next(self.__counter))
+ else:
+ return given_reason
+
+ def commit(self, reason=None):
+ reason = self._reason(reason)
+ self(self.commit_command, reason=reason)
+
+ def commit_testfile(self, reason=None):
+ reason = self._reason(reason)
+ self.write('test.txt', 'test {reason}', reason=reason)
+ self(self.add_command)
+ self.commit(reason=reason)
+
+ @property
+ def version(self):
+ __tracebackhide__ = True
+ from setuptools_scm import get_version
+ version = get_version(root=str(self.cwd))
+ print(version)
+ return version
+
+
[email protected]
+def wd(tmpdir):
+ return Wd(tmpdir)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.9.0/testing/test_basic_api.py
new/setuptools_scm-1.10.1/testing/test_basic_api.py
--- old/setuptools_scm-1.9.0/testing/test_basic_api.py 2015-11-12
14:32:31.000000000 +0100
+++ new/setuptools_scm-1.10.1/testing/test_basic_api.py 2015-12-07
19:00:11.000000000 +0100
@@ -3,22 +3,9 @@
import pytest
import setuptools_scm
-from setuptools_scm import format_version
-from setuptools_scm import integration
from setuptools_scm import dump_version
-
from setuptools_scm.utils import data_from_mime, do
-from setuptools_scm.hg import archival_to_version
-
-
-def get_version(root, method='get_version', __tracebackhide__=False, **kw):
- call = getattr(setuptools_scm, method)
- data = call(root=root.strpath, **kw)
- if isinstance(data, dict):
- return format_version(data)
- else:
- return data
@pytest.mark.parametrize('cmd', ['ls', 'dir'])
@@ -28,35 +15,9 @@
do(cmd, str(tmpdir))
-class Wd(object):
- def __init__(self, cwd):
- self.cwd = cwd
-
- def __call__(self, cmd):
- return do(cmd, self.cwd)
-
- def write(self, name, value):
- filename = self.cwd.join(name)
- filename.write(value)
- return filename
-
- @property
- def version(self):
- __tracebackhide__ = True
- version = get_version(self.cwd, __tracebackhide__=True)
- print(version)
- return version
-
-
[email protected]
-def wd(tmpdir):
- return Wd(tmpdir)
-
-
-def test_data_from_mime(wd):
- tmpfile = wd.write(
- 'test.archival',
- 'name: test\nrevision: 1')
+def test_data_from_mime(tmpdir):
+ tmpfile = tmpdir.join('test.archival')
+ tmpfile.write('name: test\nrevision: 1')
res = data_from_mime(str(tmpfile))
assert res == {
@@ -65,144 +26,40 @@
}
-archival_mapping = {
- '1.0': {'tag': '1.0'},
- '1.1.dev3+n000000000000': {
- 'latesttag': '1.0',
- 'latesttagdistance': '3',
- 'node': '0'*20,
- },
- '0.0': {
- 'node': '0'*20,
- },
- '1.2.2': {'tag': 'release-1.2.2'},
- '1.2.2.dev0': {'tag': 'release-1.2.2.dev'},
-
-}
-
-
[email protected]('expected,data', sorted(archival_mapping.items()))
-def test_archival_to_version(expected, data):
- version = archival_to_version(data)
- assert format_version(
- version,
- version_scheme='guess-next-dev',
- local_scheme='node-and-date') == expected
-
-
-def test_version_from_git(wd):
- wd('git init')
- wd('git config user.email [email protected]')
- wd('git config user.name "a test"')
- assert wd.version == '0.0'
- wd.write('test.txt', 'test')
- wd('git add test.txt')
- wd('git commit -m commit')
-
- assert wd.version.startswith('0.1.dev1+')
- assert not wd.version.endswith('1-')
-
- wd('git tag v0.1')
- assert wd.version == '0.1'
-
- wd.write('test.txt', 'test2')
- assert wd.version.startswith('0.2.dev0+')
- wd('git add test.txt')
- wd('git commit -m commit')
- assert wd.version.startswith('0.2.dev1+')
- wd('git tag version-0.2')
- assert wd.version.startswith('0.2')
-
-
-# XXX: better tests for tag prefixes
-def test_version_from_hg_id(wd):
- wd('hg init')
- assert wd.version == '0.0'
- wd.write('test.txt', 'test')
- wd('hg add test.txt')
- wd('hg commit -m commit -u test -d "0 0"')
-
- assert wd.version.startswith('0.1.dev2+')
-
- # tagging commit is considered the tag
- wd('hg tag v0.1 -u test -d "0 0"')
+def test_version_from_pkginfo(wd):
+ wd.write('PKG-INFO', 'Version: 0.1')
assert wd.version == '0.1'
- wd.write('test.txt', 'test2')
- wd('hg commit -m commit2 -u test -d "0 0"')
- assert wd.version.startswith('0.2.dev2')
-
- wd('hg up v0.1')
- assert wd.version == '0.1'
-
- # commit originating from the taged revision
- # that is not a actual tag
- wd.write('test.txt', 'test2')
- wd('hg commit -m commit3 -u test -d "0 0"')
- assert wd.version.startswith('0.2.dev1+')
-
-
-def test_version_from_archival(tmpdir):
- tmpdir.join('.hg_archival.txt').write(
- 'node: 000000000000\n'
- 'tag: 0.1\n'
- )
- assert get_version(tmpdir) == '0.1'
-
- tmpdir.join('.hg_archival.txt').write(
- 'node: 000000000000\n'
- 'latesttag: 0.1\n'
- 'latesttagdistance: 3\n'
- )
-
- assert get_version(tmpdir) == '0.2.dev3+n000000000000'
-
-
-def test_version_from_pkginfo(tmpdir):
- tmpdir.join('PKG-INFO').write('Version: 0.1')
- assert get_version(tmpdir) == '0.1'
+def assert_root(monkeypatch, expected_root):
+ """
+ Patch version_from_scm to simply assert that root is expected root
+ """
+ def assertion(root, unused_parse):
+ assert root == expected_root
+ monkeypatch.setattr(setuptools_scm, '_do_parse', assertion)
def test_root_parameter_creation(monkeypatch):
- def assert_cwd(root, cache_file=None):
- assert root == os.getcwd()
- monkeypatch.setattr(setuptools_scm, 'version_from_scm', assert_cwd)
+ assert_root(monkeypatch, os.getcwd())
setuptools_scm.get_version()
[email protected]
-def assert_root_tmp(monkeypatch):
- def assert_root_tmp(root):
- assert root == os.path.abspath('/tmp')
- monkeypatch.setattr(setuptools_scm, 'version_from_scm', assert_root_tmp)
-
-
-def test_root_parameter_pass_by(assert_root_tmp):
+def test_root_parameter_pass_by(monkeypatch):
+ assert_root(monkeypatch, '/tmp')
setuptools_scm.get_version(root='/tmp')
-def test_root_relative_to(assert_root_tmp):
- __file__ = '/tmp/module/file.py'
- setuptools_scm.get_version(root='..', relative_to=__file__)
+def test_pretended(monkeypatch):
+ pretense = '2345'
+ monkeypatch.setenv(setuptools_scm.PRETEND_KEY, pretense)
+ assert setuptools_scm.get_version() == pretense
-def test_find_files_stop_at_root_hg(wd):
- wd('hg init')
- wd.write('test.txt', 'test')
- wd('hg add .')
- wd('hg commit -m test -u test')
- wd.cwd.ensure('project/setup.cfg')
- assert integration .find_files(str(wd.cwd/'project')) == []
-
-
-def test_find_files_stop_at_root_git(wd):
- wd('git init')
- wd.write('test.txt', 'test')
- wd('git add .')
- wd('git commit -m test -u test')
- wd.cwd.ensure('project/setup.cfg')
- assert integration.find_files(str(wd.cwd/'project')) == []
+def test_root_relative_to(monkeypatch):
+ assert_root(monkeypatch, '/tmp/alt')
+ __file__ = '/tmp/module/file.py'
+ setuptools_scm.get_version(root='../alt', relative_to=__file__)
def test_dump_version(tmpdir):
@@ -215,3 +72,9 @@
assert repr('1.0') in content
import ast
ast.parse(content)
+
+
+def test_parse_plain():
+ def parse(root):
+ return 'tricked you'
+ assert setuptools_scm.get_version(parse=parse) == 'tricked you'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.9.0/testing/test_git.py
new/setuptools_scm-1.10.1/testing/test_git.py
--- old/setuptools_scm-1.9.0/testing/test_git.py 1970-01-01
01:00:00.000000000 +0100
+++ new/setuptools_scm-1.10.1/testing/test_git.py 2015-11-29
17:38:10.000000000 +0100
@@ -0,0 +1,44 @@
+from setuptools_scm import integration
+import pytest
+
+
[email protected]
+def wd(wd):
+ wd('git init')
+ wd('git config user.email [email protected]')
+ wd('git config user.name "a test"')
+ wd.add_command = 'git add .'
+ wd.commit_command = 'git commit -m test-{reason}'
+ return wd
+
+
+def test_version_from_git(wd):
+ assert wd.version == '0.0'
+
+ wd.commit_testfile()
+ assert wd.version.startswith('0.1.dev1+')
+ assert not wd.version.endswith('1-')
+
+ wd('git tag v0.1')
+ assert wd.version == '0.1'
+
+ wd.write('test.txt', 'test2')
+ assert wd.version.startswith('0.2.dev0+')
+
+ wd.commit_testfile()
+ assert wd.version.startswith('0.2.dev1+')
+
+ wd('git tag version-0.2')
+ assert wd.version.startswith('0.2')
+
+
+def test_find_files_stop_at_root_git(wd):
+ wd.commit_testfile()
+ wd.cwd.ensure('project/setup.cfg')
+ assert integration.find_files(str(wd.cwd/'project')) == []
+
+
+def test_alphanumeric_tags_match(wd):
+ wd.commit_testfile()
+ wd('git tag newstyle-development-started')
+ assert wd.version.startswith('0.1.dev1+')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/setuptools_scm-1.9.0/testing/test_mercurial.py
new/setuptools_scm-1.10.1/testing/test_mercurial.py
--- old/setuptools_scm-1.9.0/testing/test_mercurial.py 1970-01-01
01:00:00.000000000 +0100
+++ new/setuptools_scm-1.10.1/testing/test_mercurial.py 2015-12-10
21:58:05.000000000 +0100
@@ -0,0 +1,97 @@
+from setuptools_scm import format_version
+from setuptools_scm.hg import archival_to_version
+from setuptools_scm import integration
+
+import pytest
+
+
[email protected]
+def wd(wd):
+ wd('hg init')
+ wd.add_command = 'hg add .'
+ wd.commit_command = 'hg commit -m test-{reason} -u test -d "0 0"'
+ return wd
+
+archival_mapping = {
+ '1.0': {'tag': '1.0'},
+ '1.1.dev3+n000000000000': {
+ 'latesttag': '1.0',
+ 'latesttagdistance': '3',
+ 'node': '0'*20,
+ },
+ '0.0': {
+ 'node': '0'*20,
+ },
+ '1.2.2': {'tag': 'release-1.2.2'},
+ '1.2.2.dev0': {'tag': 'release-1.2.2.dev'},
+
+}
+
+
[email protected]('expected,data', sorted(archival_mapping.items()))
+def test_archival_to_version(expected, data):
+ version = archival_to_version(data)
+ assert format_version(
+ version,
+ version_scheme='guess-next-dev',
+ local_scheme='node-and-date') == expected
+
+
+def test_find_files_stop_at_root_hg(wd):
+ wd.commit_testfile()
+ wd.cwd.ensure('project/setup.cfg')
+ assert integration.find_files(str(wd.cwd/'project')) == []
+
+
+# XXX: better tests for tag prefixes
+def test_version_from_hg_id(wd):
+ assert wd.version == '0.0'
+
+ wd.commit_testfile()
+ assert wd.version.startswith('0.1.dev2+')
+
+ # tagging commit is considered the tag
+ wd('hg tag v0.1 -u test -d "0 0"')
+ assert wd.version == '0.1'
+
+ wd.commit_testfile()
+ assert wd.version.startswith('0.2.dev2')
+
+ wd('hg up v0.1')
+ assert wd.version == '0.1'
+
+ # commit originating from the taged revision
+ # that is not a actual tag
+ wd.commit_testfile()
+ assert wd.version.startswith('0.2.dev1+')
+
+
+def test_version_from_archival(wd):
+ # entrypoints are unordered,
+ # cleaning the wd ensure this test wont break randomly
+ wd.cwd.join('.hg').remove()
+ wd.write(
+ '.hg_archival.txt',
+ 'node: 000000000000\n'
+ 'tag: 0.1\n'
+ )
+ assert wd.version == '0.1'
+
+ wd.write(
+ '.hg_archival.txt',
+ 'node: 000000000000\n'
+ 'latesttag: 0.1\n'
+ 'latesttagdistance: 3\n'
+ )
+
+ assert wd.version == '0.2.dev3+n000000000000'
+
+
[email protected]('#72')
+def test_version_in_merge(wd):
+ wd.commit_testfile()
+ wd.commit_testfile()
+ wd('hg up 0')
+ wd.commit_testfile()
+ wd('hg merge')
+ assert wd.version is not None