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


Reply via email to