[PATCH stable-v2] convert: fix a test failure due to git change (issue3428)
Mads Kiilerich
mads at kiilerich.com
Thu Aug 2 17:54:57 CDT 2012
Ross Lagerwall wrote, On 08/01/2012 06:44 PM:
> # HG changeset patch
> # User Ross Lagerwall <rosslagerwall at gmail.com>
> # Date 1343838158 -7200
> # Branch stable
> # Node ID 8df5a0dfab4cde5e936b63d631842becb989ce1f
> # Parent 3ccb49ed1cc13cf71cd780e998f200ed974ec271
> convert: fix a test failure due to git change (issue3428)
If I understand it correctly this could be seen as doing 3 things:
1: make the test deterministic, avoid randomly hitting the case that fails:
> --- a/tests/test-convert-git.t
> +++ b/tests/test-convert-git.t
> @@ -281,20 +281,32 @@
> abort: --sourcesort is not supported by this data source
> [255]
>
> -damage git repository and convert again
> +damaged git repository tests:
> +In case the hard-coded hashes change, the following commands can be used to
> +list the hashes and their corresponding types in the repository:
> +cd git-repo4/.git/objects
> +find . -type f | cut -c 3- | sed 's_/__' | xargs -n 1 -t git cat-file -t
> +cd ../../..
>
> - $ cat > damage.py <<EOF
> - > import os
> - > import stat
> - > for root, dirs, files in os.walk('git-repo4/.git/objects'):
> - > if files:
> - > path = os.path.join(root, files[0])
> - > if os.name == 'nt':
> - > os.chmod(path, stat.S_IWUSR)
> - > os.remove(path)
> - > break
> - > EOF
> - $ python damage.py
> - $ hg convert git-repo4 git-repo4-broken-hg 2>&1 | \
> - > grep 'abort:' | sed 's/abort:.*/abort:/g'
> - abort:
> +damage git repository by renaming a blob object
> +
> + $ BLOB_OBJ=8b/137891791fe96927ad78e64b0aad7bded08bdc
> + $ mv git-repo4/.git/objects/$BLOB_OBJ git-repo4/.git/objects/$BLOB_OBJ.tmp
> + $ hg convert git-repo4 git-repo4-broken-hg 2>&1 | grep 'abort:'
> + abort: cannot read 'blob' object at 8b137891791fe96927ad78e64b0aad7bded08bdc
> + $ mv git-repo4/.git/objects/$BLOB_OBJ.tmp git-repo4/.git/objects/$BLOB_OBJ
> +
> +damage git repository by renaming a tree object
> +
> + $ TREE_OBJ=72/49f083d2a63a41cc737764a86981eb5f3e4635
> + $ mv git-repo4/.git/objects/$TREE_OBJ git-repo4/.git/objects/$TREE_OBJ.tmp
> + $ hg convert git-repo4 git-repo4-broken-hg 2>&1 | grep 'abort:'
> + abort: cannot read changes in 1c0ce3c5886f83a1d78a7b517cdff5cf9ca17bdd
2: reintroduce the test case that was hit randomly and would fail with
some git versions ... but fix the failure ... at least on linux:
> # Build complete list of tags, both annotated and bare ones
> for line in fh:
> line = line.strip()
> + if line.startswith("error:"):
> + raise util.Abort(_('cannot read tags from %s') % self.path)
> node, tag = line.split(None, 1)
> if not tag.startswith(prefix):
> continue
> +damage git repository by renaming a commit object
> +
> + $ COMMIT_OBJ=1c/0ce3c5886f83a1d78a7b517cdff5cf9ca17bdd
> + $ mv git-repo4/.git/objects/$COMMIT_OBJ git-repo4/.git/objects/$COMMIT_OBJ.tmp
> + $ hg convert git-repo4 git-repo4-broken-hg 2>&1 | grep 'abort:'
> + abort: cannot read tags from git-repo4/.git
> + $ mv git-repo4/.git/objects/$COMMIT_OBJ.tmp git-repo4/.git/objects/$COMMIT_OBJ
> +
3: the rest ;-)
I guess 1 and 2 would have been included in 2.3 if split up that way ...
and now they are obvious candidates for 2.3.1 . The remaining subprocess
changes might need some further discussion and perhaps should wait for 2.4.
My comment:
1: we have some subprocess / popen abstractions in util
2: we regularly have issues with the places that don't use these
abstractions
3: ...
/Mads
More information about the Mercurial-devel
mailing list