sapling/tests/test-fb-hgext-fbamend-hiddenoverride.t
Jun Wu 320fc31e4c tinit: add drawdag and setconfig functions
Summary: They help making tests easier to write.

Reviewed By: phillco

Differential Revision: D7121645

fbshipit-source-id: 9c7181d45c4e28155eb68f355cf1c4cfc077d191
2018-04-13 21:51:20 -07:00

220 lines
4.6 KiB
Perl

$ cat >> $HGRCPATH << EOF
> [extensions]
> blackbox=
> fbamend=
> [experimental]
> evolution = all
> [blackbox]
> track = command, commandfinish, commandexception,
> pinnednodes
> EOF
$ hg init
$ hg debugdrawdag <<'EOS'
> B C # amend: B -> C
> |/
> A
> EOS
$ rm .hg/localtags
$ hg log -G -T '{rev} {desc}\n'
o 2 C
|
o 0 A
$ hg log -G -T '{rev} {desc}\n' --hidden
o 2 C
|
| x 1 B
|/
o 0 A
Changing working copy parent pins a node
$ hg update 1 --hidden -q
$ hg update 0 -q
$ hg log -G -T '{rev} {desc}\n'
o 2 C
|
| x 1 B
|/
@ 0 A
Strip/prune unpins a node
$ hg prune 1 -q
advice: 'hg hide' provides a better UI for hiding commits
$ hg log -G -T '{rev} {desc}\n'
o 2 C
|
@ 0 A
Bookmark pins nodes even after removed
$ hg bookmark -ir 1 BOOK --hidden -q
$ hg bookmark -d BOOK -q
$ hg log -G -T '{rev} {desc}\n'
o 2 C
|
| x 1 B
|/
@ 0 A
Check blackbox logs
$ hg blackbox -l 10000
*> init exited 0 after * seconds (glob)
*> debugdrawdag (glob)
*> pinnednodes: ['debugdrawdag'] newpin=[] newunpin=['112478962961'] before=[] after=[] (glob)
*> debugdrawdag exited 0 after * (glob)
*> log -G -T '{rev} {desc}\n' (glob)
*> log -G -T '{rev} {desc}\n' exited 0 after * (glob)
*> log -G -T '{rev} {desc}\n' --hidden (glob)
*> log -G -T '{rev} {desc}\n' --hidden exited 0 after * (glob)
*> update 1 --hidden -q (glob)
*> pinnednodes: ['update', '1', '--hidden', '-q'] newpin=['112478962961'] newunpin=[] before=[] after=['112478962961'] (glob)
*> update 1 --hidden -q exited 0 after * (glob)
*> update 0 -q (glob)
*> update 0 -q exited 0 after * (glob)
*> log -G -T '{rev} {desc}\n' (glob)
*> log -G -T '{rev} {desc}\n' exited 0 after * (glob)
*> prune 1 -q (glob)
*> pinnednodes: ['prune', '1', '-q'] newpin=[] newunpin=['112478962961'] before=['112478962961'] after=[] (glob)
*> prune 1 -q exited 0 after * (glob)
*> log -G -T '{rev} {desc}\n' (glob)
*> log -G -T '{rev} {desc}\n' exited 0 after * (glob)
*> bookmark -ir 1 BOOK --hidden -q (glob)
*> pinnednodes: ['bookmark', '-ir', '1', 'BOOK', '--hidden', '-q'] newpin=['112478962961'] newunpin=[] before=[] after=['112478962961'] (glob)
*> bookmark -ir 1 BOOK --hidden -q exited 0 after * (glob)
*> bookmark -d BOOK -q (glob)
*> bookmark -d BOOK -q exited 0 after * (glob)
*> log -G -T '{rev} {desc}\n' (glob)
*> log -G -T '{rev} {desc}\n' exited 0 after * (glob)
*> blackbox -l 10000 (glob)
The order matters - putting bookmarks or moving working copy on non-obsoleted
commits do not pin them. Test this using "debugobsolete" which will not call
"createmarkers".
Obsolete working copy, and move working copy away should make things disappear
$ rm -rf .hg && hg init && hg debugdrawdag <<'EOS'
> C E
> | |
> B D
> |/
> A
> EOS
$ hg up -q E
$ hg debugobsolete `HGPLAIN=1 hg log -r E -T '{node}'`
obsoleted 1 changesets
$ hg tag --local --remove E
$ hg log -G -T '{rev} {desc}\n'
@ 4 E
|
| o 3 C
| |
o | 2 D
| |
| o 1 B
|/
o 0 A
$ hg debugobsolete `HGPLAIN=1 hg log -r D -T '{node}'`
obsoleted 1 changesets
$ hg tag --local --remove D
$ hg log -G -T '{rev} {desc}\n'
@ 4 E
|
| o 3 C
| |
x | 2 D
| |
| o 1 B
|/
o 0 A
$ hg update -q C
$ hg log -G -T '{rev} {desc}\n'
@ 3 C
|
o 1 B
|
o 0 A
Having a bookmark on a commit, obsolete the commit, remove the bookmark
$ rm -rf .hg && hg init && hg debugdrawdag <<'EOS'
> C E
> | |
> B D
> |/
> A
> EOS
$ hg bookmark -i book-e -r E
$ hg debugobsolete `HGPLAIN=1 hg log -r D -T '{node}'`
obsoleted 1 changesets
$ hg debugobsolete `HGPLAIN=1 hg log -r E -T '{node}'`
obsoleted 1 changesets
$ rm .hg/localtags
$ hg log -G -T '{rev} {desc} {bookmarks}\n'
x 4 E book-e
|
| o 3 C
| |
x | 2 D
| |
| o 1 B
|/
o 0 A
$ hg bookmark -d book-e
$ hg log -G -T '{rev} {desc} {bookmarks}\n'
o 3 C
|
o 1 B
|
o 0 A
Uncommit and hiddenoverride. This is uncommon but the last uncommit should make
"A" invisible:
$ enable uncommit
$ newrepo
$ drawdag <<'EOS'
> B
> |
> A
> |
> Z
> EOS
$ hg up $A
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg uncommit
$ hg log -T '{desc}' -G
o B
|
x A
|
@ Z
$ hg up -C $B
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg uncommit
$ hg log -T '{desc}' -G
@ A
|
o Z
$ hg up -C .
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg uncommit
$ hg log -T '{desc}' -G
@ Z