[Svnmerge] Test suite functional?

Michael Haggerty mhagger at alum.mit.edu
Wed Jul 13 01:29:17 PDT 2011


Hello,

I am trying to use svnmerge.py as a library to help with a conversion of
a Subversion project to git.  (git-svn understands svn:mergeinfo, but it
does not understand svnmerge.py metadata, so it needs some help.)

I would like to submit some patches to svnmerge.py that fix a problem
that I found and also help make it usable as a library.  Before I
submitted the patches, I thought I should run the test suite.  But...

Even with the unpatched version of svnmerge.py (from Subversion trunk
[1]), the test suite has some failures:

$ ./svnmerge_test.py
..............................................F.EE..E........
[see below for the full output]

Quite likely I'm not running the test suite correctly.  For example, I
haven't compiled Subversion in the checked-out source tree; is that
necessary?  (I'm running the test using the installed Subversion 1.6.17.)

Is the test suite known to be broken?

Am I doing something stupid?  (Are there instructions somewhere for the
correct way to run the test suite?)

Thanks,
Michael

[1]
http://svn.apache.org/repos/asf/subversion/trunk/contrib/client-side/svnmerge

-- 
Michael Haggerty
mhagger at alum.mit.edu
http://softwareswirl.blogspot.com/

> $ ./svnmerge_test.py 
> ..............................................F.EE..E........
> ======================================================================
> ERROR: Test that uninit works, for both merged and blocked revisions.
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File "./svnmerge_test.py", line 751, in testUninit
>     self.svnmerge2(["init", self.test_repo_url + "/branches/testYYY-branch"])
>   File "./svnmerge_test.py", line 256, in svnmerge2
>     ret = svnmerge.main(args)
>   File "/home/mhagger/self/proj/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py", line 2361, in main
>     cmd(branch_dir, branch_props)
>   File "/home/mhagger/self/proj/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py", line 1813, in __call__
>     return self.func(*args, **kwargs)
>   File "/home/mhagger/self/proj/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py", line 1354, in action_init
>     if is_url(cf_url) and check_url(cf_url):
>   File "/home/mhagger/self/proj/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py", line 942, in check_url
>     return get_svninfo(url) != {}
>   File "/home/mhagger/self/proj/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py", line 960, in get_svninfo
>     for L in launchsvn('info "%s"' % target):
>   File "/home/mhagger/self/proj/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py", line 325, in launchsvn
>     return launch(cmd, **kwargs)
>   File "/home/mhagger/self/proj/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py", line 280, in launch
>     raise LaunchError(p.returncode, cmd, stdout + stderr)
> LaunchError: (1, u'svn --non-interactive info "file:///tmp/__svnmerge_test/repo/branches/testXXX-branch"', 'file:///tmp/__svnmerge_test/repo/branches/testXXX-branch:  (Not a valid URL)\n\nsvn: A problem occurred; see other errors for details\n')
> 
> ======================================================================
> ERROR: testUninitForce (__main__.TestCase_TestRepo)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File "./svnmerge_test.py", line 821, in testUninitForce
>     self.svnmerge2(["init", self.test_repo_url + "/branches/testYYY-branch"])
>   File "./svnmerge_test.py", line 256, in svnmerge2
>     ret = svnmerge.main(args)
>   File "/home/mhagger/self/proj/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py", line 2361, in main
>     cmd(branch_dir, branch_props)
>   File "/home/mhagger/self/proj/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py", line 1813, in __call__
>     return self.func(*args, **kwargs)
>   File "/home/mhagger/self/proj/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py", line 1354, in action_init
>     if is_url(cf_url) and check_url(cf_url):
>   File "/home/mhagger/self/proj/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py", line 942, in check_url
>     return get_svninfo(url) != {}
>   File "/home/mhagger/self/proj/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py", line 960, in get_svninfo
>     for L in launchsvn('info "%s"' % target):
>   File "/home/mhagger/self/proj/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py", line 325, in launchsvn
>     return launch(cmd, **kwargs)
>   File "/home/mhagger/self/proj/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py", line 280, in launch
>     raise LaunchError(p.returncode, cmd, stdout + stderr)
> LaunchError: (1, u'svn --non-interactive info "file:///tmp/__svnmerge_test/repo/branches/testXXX-branch"', 'file:///tmp/__svnmerge_test/repo/branches/testXXX-branch:  (Not a valid URL)\n\nsvn: A problem occurred; see other errors for details\n')
> 
> ======================================================================
> ERROR: test_invalid_url (__main__.TestCase_TestRepo)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File "./svnmerge_test.py", line 1347, in test_invalid_url
>     self.assertEqual(svnmerge.get_svninfo("file://foo/bar"), {})
>   File "/home/mhagger/self/proj/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py", line 960, in get_svninfo
>     for L in launchsvn('info "%s"' % target):
>   File "/home/mhagger/self/proj/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py", line 325, in launchsvn
>     return launch(cmd, **kwargs)
>   File "/home/mhagger/self/proj/subversion/trunk/contrib/client-side/svnmerge/svnmerge.py", line 280, in launch
>     raise LaunchError(p.returncode, cmd, stdout + stderr)
> LaunchError: (1, 'svn --non-interactive info "file://foo/bar"', 'file://foo/bar:  (Not a valid URL)\n\nsvn: A problem occurred; see other errors for details\n')
> 
> ======================================================================
> FAIL: testTransitiveMergeWithBlock (__main__.TestCase_TestRepo)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File "./svnmerge_test.py", line 698, in testTransitiveMergeWithBlock
>     match=r"Committed revision 20")
>   File "./svnmerge_test.py", line 496, in launch
>     return TestCase_SvnMerge.launch(self, cmd, *args, **kwargs)
>   File "./svnmerge_test.py", line 306, in launch
>     return self._parseoutput(ret, out, **kwargs)
>   File "./svnmerge_test.py", line 290, in _parseoutput
>     "svnmerge failed, with this output:\n%s" % out)
> AssertionError: svnmerge failed, with this output:
> svn: Commit failed (details follow):
> svn: Aborting commit: '/tmp/__svnmerge_test/trunk' remains in conflict
> 
> 
> ----------------------------------------------------------------------
> Ran 61 tests in 53.759s
> 
> FAILED (failures=1, errors=3)


More information about the Svnmerge mailing list