# HG changeset patch # User Peter Arrenbrecht # Date 1257593311 -3600 # Node ID 7d2e9121ef4f86cb7d1a26eb44ba1780d2941699 # Parent 0b999aec64e828186e83c6ba8261354b24872922 bundle: add test for Issue1704 Original version by Greg Ward. diff -r 0b999aec64e8 -r 7d2e9121ef4f tests/test-bundle-vs-outgoing --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-bundle-vs-outgoing Sat Nov 07 12:28:31 2009 +0100 @@ -0,0 +1,84 @@ +#!/bin/sh + +# this structure seems to tickle a bug in bundle's search for +# changesets, so first we have to recreate it +# +# o 8 +# | +# | o 7 +# | | +# | o 6 +# |/| +# o | 5 +# | | +# o | 4 +# | | +# | o 3 +# | | +# | o 2 +# |/ +# o 1 +# | +# o 0 + +mkrev() +{ + revno=$1 + echo "rev $revno" + echo "rev $revno" > foo.txt + hg -q ci -m"rev $revno" +} + +set -e +echo "% setup test repo1" +hg init repo1 +cd repo1 +echo "rev 0" > foo.txt +hg ci -Am"rev 0" +mkrev 1 + +# first branch +mkrev 2 +mkrev 3 + +# back to rev 1 to create second branch +hg up -r1 +mkrev 4 +mkrev 5 + +# merge first branch to second branch +hg up -C -r5 +HGMERGE=internal:local hg merge +echo "merge rev 5, rev 3" > foo.txt +hg ci -m"merge first branch to second branch" + +# one more commit following the merge +mkrev 7 + +# back to "second branch" to make another head +hg up -r5 +mkrev 8 + +echo "[extensions]" >> $HGRCPATH +echo "graphlog=" >> $HGRCPATH + +echo "% the story so far" +hg glog --template "{rev}\n" + +# check that "hg outgoing" really does the right thing +echo "% sanity check of outgoing: expect revs 4 5 6 7 8" +hg clone -r3 . ../repo2 +# this should (and does) report 5 outgoing revisions: 4 5 6 7 8 +hg outgoing --template "{rev}\n" ../repo2 + +echo "% test bundle (destination repo): expect 5 revisions" +# this should bundle the same 5 revisions that outgoing reported, but it +# actually bundles 7 +hg bundle foo.bundle ../repo2 + +echo "% test bundle (base revision): expect 5 revisions" +# this should (and does) give exactly the same result as bundle +# with a destination repo... i.e. it's wrong too +hg bundle --base 3 foo.bundle + + diff -r 0b999aec64e8 -r 7d2e9121ef4f tests/test-bundle-vs-outgoing.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-bundle-vs-outgoing.out Sat Nov 07 12:28:31 2009 +0100 @@ -0,0 +1,53 @@ +% setup test repo1 +adding foo.txt +rev 1 +rev 2 +rev 3 +1 files updated, 0 files merged, 0 files removed, 0 files unresolved +rev 4 +rev 5 +0 files updated, 0 files merged, 0 files removed, 0 files unresolved +0 files updated, 1 files merged, 0 files removed, 0 files unresolved +(branch merge, don't forget to commit) +rev 7 +1 files updated, 0 files merged, 0 files removed, 0 files unresolved +rev 8 +% the story so far +@ 8 +| +| o 7 +| | +| o 6 +|/| +o | 5 +| | +o | 4 +| | +| o 3 +| | +| o 2 +|/ +o 1 +| +o 0 + +% sanity check of outgoing: expect revs 4 5 6 7 8 +requesting all changes +adding changesets +adding manifests +adding file changes +added 4 changesets with 4 changes to 1 files +updating to branch default +1 files updated, 0 files merged, 0 files removed, 0 files unresolved +comparing with ../repo2 +searching for changes +4 +5 +6 +7 +8 +% test bundle (destination repo): expect 5 revisions +searching for changes +5 changesets found +% test bundle (base revision): expect 5 revisions +5 changesets found