git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] cvsimport: rewrite to use cvsps 3.x to fix major bugs

From
Eric S. Raymond <esr@thyrsus.com>
Date
Jan 12, 2013, 15:47 UTC
Message-ID
<20130112154719.GA3270@thyrsus.com>
In-Reply-To
<7v62339du4.fsf@alter.siamese.dyndns.org>
Junio C Hamano <gitster@pobox.com>:
> And here is what I got:

Hm. In my version of these tests, I only have one regression from the old combo (in the pathological tags test, t9602). You're seeing more breakage than that, obviously.

> A funny thing was that without cvsps-3.7 on $PATH (which means I am
> getting distro packaged cvsps 2.1), I got identical errors.

That suggests that something in your test setup has gone bad and is introducing spurious errors. Which would be consistent with the above.

>                                                     Looking
> at the log message, it seems that you meant to remove t960[123], so
> perhaps the patch simply forgot to remove 9601 and 9602?
Yes.
 
Show 6 quoted lines
> As neither test runs "git cvsimport" with -o/-m/-M options, ideally
> we should be able to pass them with and without having cvsps-3.x.
> Not passing them without cvsps-3.x would mean that the fallback mode
> of rewritten cvsimport is not working as expected. Not passing them
> with cvsps-3.x may mean the tests were expecting a wrong conversion
> result, or they uncover bugs in the replacement cvsimport.

That's possible, but seems unlikely. Because the new cvsimport is such a thin wrapper around the conversion engine, bugs in it should lead to obvious crashes or failure to run the engine rather than the sort of conversion error the t960* tests are designed to check. Really all it does is assemble options to pass to the conversion engines.

My test strategy is aimed at the engine, not the wrapper. I took the repos from t960* and wrote a small Python framework to check the same assertions as the git-tree tests do, but using the engine. For example, here's how my t9602 looks:

import os, cvspstest
cc = cvspstest.ConvertComparison("t9602", "module")
cc.cmp_branch_tree("test of branch", "master", True)
cc.cmp_branch_tree("test of branch", "vendorbranch", True)
cc.cmp_branch_tree("test of branch", "B_FROM_INITIALS", False)
cc.cmp_branch_tree("test of branch", "B_FROM_INITIALS_BUT_ONE", False)
cc.cmp_branch_tree("test of branch", "B_MIXED", False)
cc.cmp_branch_tree("test of branch", "B_SPLIT", True)
cc.cmp_branch_tree("test of tag", "vendortag", False)
# This is the only test new cvsps fails that old git-cvsimport passed.
cc.cmp_branch_tree("test of tag", "T_ALL_INITIAL_FILES", True)
cc.cmp_branch_tree("test of tag", "T_ALL_INITIAL_FILES_BUT_ONE", False)
cc.cmp_branch_tree("test of tag", "T_MIXED", False)
cc.cleanup()
 
> t9600 fails with "-a is no longer supported", even without having
> cvsps-3.x on the $PATH (i.e. attempting to use the fallback).  I
> wonder if this is an option the updated cvsimport would want to
> simply ignore?

Probably. But I don't think you should keep these tests in the git tree. That wasn't a great idea even when you were supporting just one engine; with two (and soon three) it's going to be just silly. Let sanity-checking the engines be *my* problem, since I have to do it anyway.

(I'm working towards the generalized test suite as fast as I can. First results probably in four days or so.)

Show 6 quoted lines
> It is a way to tell the old cvsps/cvsimport to disable its
> heuristics to ignore commits made within the last 10 minutes (this
> is done in the hope of waiting for the per-file nature of CVS
> commits to stabilize, IIUC); the user tells the command that he
> knows that the CVS repository is now quiescent and it is safe to
> import the whole thing.

Yes, that's just what -a is supposed to do. But is should be irrelevant for testing - in the test framework CVS is running locally, so there's no network lag.

> So... does this mean that we now set the minimum required version of
> Python to 2.7?  I dunno.
That would be bad, IMO.  I'll put backporting to 2.6 high on my to-do list.
-- 
		<a href="http://www.catb.org/~esr/">Eric S. Raymond</a>
Previous: John KeepingNext: Michael Haggerty
Message 13 of 37 in “cvsimport: rewrite to use cvsps 3.x to fix major bugs”
  1. cvsimport: rewrite to use cvsps 3.x to fix major bugsJunio C Hamano, Jan 11, 2013
  2. Junio C HamanoJan 11, 2013
  3. Eric S. RaymondJan 11, 2013
  4. Junio C HamanoJan 11, 2013
  5. Junio C HamanoJan 11, 2013
  6. Eric S. RaymondJan 12, 2013
  7. Junio C HamanoJan 12, 2013
  8. t/t960[123]: remove leftover scriptsJunio C Hamano, Jan 12, 2013
  9. Chris RorvickJan 12, 2013
  10. t/lib-cvs: cvsimport no longer works without Python >= 2.7Junio C Hamano, Jan 12, 2013
  11. Michael HaggertyJan 12, 2013
  12. John KeepingJan 13, 2013
  13. Eric S. RaymondJan 12, 2013
  14. Michael HaggertyJan 12, 2013
  15. Eric S. RaymondJan 12, 2013
  16. Jonathan NiederJan 12, 2013
  17. Jonathan NiederJan 12, 2013
  18. Junio C HamanoJan 13, 2013
  19. Junio C HamanoJan 13, 2013
  20. 0/3 A smoother transition plan for cvsimportJunio C Hamano, Jan 14, 2013
  21. 1/3 cvsimport: allow setting a custom cvsps (2.x) program nameJunio C Hamano, Jan 14, 2013
  22. 2/3 cvsimport: introduce a version-switch wrapperJunio C Hamano, Jan 14, 2013
  23. Junio C HamanoJan 14, 2013
  24. 3/3 cvsimport: start adding cvsps 3.x supportJunio C Hamano, Jan 14, 2013
  25. Chris RorvickJan 15, 2013
  26. Junio C HamanoJan 15, 2013
  27. Michael HaggertyJan 14, 2013
  28. 0/6 A smoother transition plan for cvsimportJunio C Hamano, Jan 14, 2013
  29. 1/6 Makefile: add description on PERL/PYTHON_PATHJunio C Hamano, Jan 14, 2013
  30. 2/6 cvsimport: allow setting a custom cvsps (2.x) program nameJunio C Hamano, Jan 14, 2013
  31. 3/6 cvsimport: introduce a version-switch wrapperJunio C Hamano, Jan 14, 2013
  32. 4/6 cvsimport: start adding cvsps 3.x supportJunio C Hamano, Jan 14, 2013
  33. 5/6 cvsimport: make tests reusable for cvsimport-3Junio C Hamano, Jan 14, 2013
  34. 6/6 cvsimport-3: add a sample testJunio C Hamano, Jan 14, 2013
  35. Jonathan NiederJan 14, 2013
  36. 7/6 t9600: further prepare for sharingJunio C Hamano, Jan 14, 2013
  37. 8/6 t9600: adjust for new cvsimportJunio C Hamano, Jan 14, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.