Mercurial > evolve
annotate tests/_exc-util.sh @ 1467:5c385b812500 stable
evolve: dedupe divergents when running evolve --all --any or evolve --rev
Before this patch, when running evolve --all --any or evolve --rev with the
--divergent flag, we were selecting all of the divergents. After solving the
first one, its counterparts would get pruned and potentially hidden which would
crash when trying to resolve them. This patch introduces logic to dedupe the
divergents to be resolved by keeping only one per group of divergent with the
lower revision number.
author | Laurent Charignon <lcharignon@fb.com> |
---|---|
date | Wed, 24 Jun 2015 16:54:23 -0700 |
parents | 8aa9a21156fe |
children | 9f42f819267b |
rev | line source |
---|---|
829
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
1 #!/bin/sh |
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
2 |
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
3 cat >> $HGRCPATH <<EOF |
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
4 [web] |
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
5 push_ssl = false |
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
6 allow_push = * |
1060
f6e0cfca1bf0
test: work around a bug in debugobsolete
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1035
diff
changeset
|
7 |
829
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
8 [ui] |
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
9 logtemplate ="{node|short} ({phase}): {desc}\n" |
1060
f6e0cfca1bf0
test: work around a bug in debugobsolete
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1035
diff
changeset
|
10 |
829
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
11 [phases] |
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
12 publish=False |
1060
f6e0cfca1bf0
test: work around a bug in debugobsolete
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1035
diff
changeset
|
13 |
1035
59bc29c84ce0
evolve: hide the OBSEXC message behind a config option
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1001
diff
changeset
|
14 [experimental] |
1088
528c066cd51c
drop the debug output
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1060
diff
changeset
|
15 verbose-obsolescence-exchange=false |
1089
cdd22a5e5ef1
enable bundle2
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1088
diff
changeset
|
16 bundle2-exp=true |
1290
8aa9a21156fe
tests: ensure we keep capturing output
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1185
diff
changeset
|
17 bundle2-output-capture=True |
1060
f6e0cfca1bf0
test: work around a bug in debugobsolete
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1035
diff
changeset
|
18 |
f6e0cfca1bf0
test: work around a bug in debugobsolete
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1035
diff
changeset
|
19 [alias] |
f6e0cfca1bf0
test: work around a bug in debugobsolete
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1035
diff
changeset
|
20 debugobsolete=debugobsolete -d '0 0' |
f6e0cfca1bf0
test: work around a bug in debugobsolete
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1035
diff
changeset
|
21 |
829
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
22 [extensions] |
848
001f8508910a
exchange: add test case for D.1
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
832
diff
changeset
|
23 hgext.strip= |
829
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
24 EOF |
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
25 echo "evolve=$(echo $(dirname $TESTDIR))/hgext/evolve.py" >> $HGRCPATH |
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
26 |
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
27 mkcommit() { |
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
28 echo "$1" > "$1" |
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
29 hg add "$1" |
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
30 hg ci -m "$1" |
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
31 } |
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
32 getid() { |
1001
f7f4a1fac6c0
test: use `hg log` in the `getid` function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
905
diff
changeset
|
33 hg log --hidden --template '{node}\n' --rev "$1" |
829
0943f327e2fb
exchance: add a common setup script for all test
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
34 } |
830
f3b3a09ba312
exchange: have a function doing all the common initial setup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
829
diff
changeset
|
35 |
f3b3a09ba312
exchange: have a function doing all the common initial setup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
829
diff
changeset
|
36 setuprepos() { |
f3b3a09ba312
exchange: have a function doing all the common initial setup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
829
diff
changeset
|
37 echo creating test repo for test case $1 |
f3b3a09ba312
exchange: have a function doing all the common initial setup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
829
diff
changeset
|
38 mkdir $1 |
f3b3a09ba312
exchange: have a function doing all the common initial setup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
829
diff
changeset
|
39 cd $1 |
f3b3a09ba312
exchange: have a function doing all the common initial setup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
829
diff
changeset
|
40 echo - pulldest |
f3b3a09ba312
exchange: have a function doing all the common initial setup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
829
diff
changeset
|
41 hg init pushdest |
f3b3a09ba312
exchange: have a function doing all the common initial setup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
829
diff
changeset
|
42 cd pushdest |
f3b3a09ba312
exchange: have a function doing all the common initial setup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
829
diff
changeset
|
43 mkcommit O |
f3b3a09ba312
exchange: have a function doing all the common initial setup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
829
diff
changeset
|
44 hg phase --public . |
f3b3a09ba312
exchange: have a function doing all the common initial setup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
829
diff
changeset
|
45 cd .. |
f3b3a09ba312
exchange: have a function doing all the common initial setup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
829
diff
changeset
|
46 echo - main |
f3b3a09ba312
exchange: have a function doing all the common initial setup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
829
diff
changeset
|
47 hg clone -q pushdest main |
f3b3a09ba312
exchange: have a function doing all the common initial setup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
829
diff
changeset
|
48 echo - pushdest |
f3b3a09ba312
exchange: have a function doing all the common initial setup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
829
diff
changeset
|
49 hg clone -q main pulldest |
f3b3a09ba312
exchange: have a function doing all the common initial setup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
829
diff
changeset
|
50 echo 'cd into `main` and proceed with env setup' |
f3b3a09ba312
exchange: have a function doing all the common initial setup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
829
diff
changeset
|
51 } |
831
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
52 |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
53 dotest() { |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
54 # dotest TESTNAME [TARGETNODE] |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
55 |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
56 testcase=$1 |
832
46e81a5d2d94
exchange: add test case for A.3
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
831
diff
changeset
|
57 shift |
46e81a5d2d94
exchange: add test case for A.3
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
831
diff
changeset
|
58 target="$1" |
46e81a5d2d94
exchange: add test case for A.3
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
831
diff
changeset
|
59 if [ $# -gt 0 ]; then |
46e81a5d2d94
exchange: add test case for A.3
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
831
diff
changeset
|
60 shift |
46e81a5d2d94
exchange: add test case for A.3
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
831
diff
changeset
|
61 fi |
831
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
62 targetnode="" |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
63 desccall="" |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
64 cd $testcase |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
65 echo "## Running testcase $testcase" |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
66 if [ -n "$target" ]; then |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
67 desccall="desc("\'"$target"\'")" |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
68 targetnode="`hg -R main id -qr \"$desccall\"`" |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
69 echo "# testing echange of \"$target\" ($targetnode)" |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
70 fi |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
71 echo "## initial state" |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
72 echo "# obstore: main" |
905
b177fde040dd
exchange: use fixed order for obstore content
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
848
diff
changeset
|
73 hg -R main debugobsolete | sort |
831
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
74 echo "# obstore: pushdest" |
905
b177fde040dd
exchange: use fixed order for obstore content
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
848
diff
changeset
|
75 hg -R pushdest debugobsolete | sort |
831
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
76 echo "# obstore: pulldest" |
905
b177fde040dd
exchange: use fixed order for obstore content
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
848
diff
changeset
|
77 hg -R pulldest debugobsolete | sort |
831
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
78 |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
79 if [ -n "$target" ]; then |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
80 echo "## pushing \"$target\"" from main to pushdest |
832
46e81a5d2d94
exchange: add test case for A.3
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
831
diff
changeset
|
81 hg -R main push -r "$desccall" $@ pushdest |
831
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
82 else |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
83 echo "## pushing from main to pushdest" |
832
46e81a5d2d94
exchange: add test case for A.3
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
831
diff
changeset
|
84 hg -R main push pushdest $@ |
831
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
85 fi |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
86 echo "## post push state" |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
87 echo "# obstore: main" |
905
b177fde040dd
exchange: use fixed order for obstore content
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
848
diff
changeset
|
88 hg -R main debugobsolete | sort |
831
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
89 echo "# obstore: pushdest" |
905
b177fde040dd
exchange: use fixed order for obstore content
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
848
diff
changeset
|
90 hg -R pushdest debugobsolete | sort |
831
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
91 echo "# obstore: pulldest" |
905
b177fde040dd
exchange: use fixed order for obstore content
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
848
diff
changeset
|
92 hg -R pulldest debugobsolete | sort |
831
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
93 if [ -n "$target" ]; then |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
94 echo "## pulling \"$targetnode\"" from main into pulldest |
832
46e81a5d2d94
exchange: add test case for A.3
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
831
diff
changeset
|
95 hg -R pulldest pull -r $targetnode $@ main |
831
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
96 else |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
97 echo "## pulling from main into pulldest" |
832
46e81a5d2d94
exchange: add test case for A.3
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
831
diff
changeset
|
98 hg -R pulldest pull main $@ |
831
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
99 fi |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
100 echo "## post pull state" |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
101 echo "# obstore: main" |
905
b177fde040dd
exchange: use fixed order for obstore content
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
848
diff
changeset
|
102 hg -R main debugobsolete | sort |
831
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
103 echo "# obstore: pushdest" |
905
b177fde040dd
exchange: use fixed order for obstore content
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
848
diff
changeset
|
104 hg -R pushdest debugobsolete | sort |
831
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
105 echo "# obstore: pulldest" |
905
b177fde040dd
exchange: use fixed order for obstore content
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
848
diff
changeset
|
106 hg -R pulldest debugobsolete | sort |
831
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
107 |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
108 cd .. |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
109 |
a6af6919888d
exchange: automate the testing process too
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
830
diff
changeset
|
110 } |