sapling/eden/hg-server/tests/test-fb-hgext-scm-prompt-hg.t
Durham Goode 98d9269874 server: copy hg to a new hg-server directory
Summary:
Create a fork of the Mercurial code that we can use to build server
rpms. The hg servers will continue to exist for a few more months while we move
the darkstorm and ediscovery use cases off them. In the mean time, we want to
start making breaking changes to the client, so let's create a stable copy of
the hg code to produce rpms for the hg servers.

The fork is based off c7770c78d, the latest hg release.

This copies the files as is, then adds some minor tweaks to get it to build:
- Disables some lint checks that appear to be bypassed by path
- sed replace eden/scm with eden/hg-server
- Removed a dependency on scm/telemetry from the edenfs-client tests since
  scm/telemetry pulls in the original eden/scm/lib/configparser which conflicts
  with the hg-server conflict parser.

allow-large-files

Reviewed By: quark-zju

Differential Revision: D27632557

fbshipit-source-id: b2f442f4ec000ea08e4d62de068750832198e1f4
2021-04-09 10:09:06 -07:00

234 lines
6.1 KiB
Perl

#chg-compatible
To run this test against other shells, use the shell argument, eg:
run-tests.py --shell=zsh test-scm-prompt*
$ configure mutation-norecord
Initialize scm prompt
$ . $TESTDIR/../contrib/scm-prompt.sh
$ cmd() {
> "$@"
> _scm_prompt "(%s)\n"
> }
Throw some ridiculous functions at it
$ grep() {
> grep -V
> }
$ cat() {
> true
> }
Outside of a repo, should have no output
$ _scm_prompt
Test basic repo behaviors
$ hg init repo
$ cmd cd repo
(empty)
$ echo a > a
$ cmd hg add a
(000000000)
$ cmd hg commit -m 'c1'
(5cad84d17)
$ cmd hg book active
(active)
$ cmd hg book -i
(5cad84d17)
$ echo b > b
$ cmd hg add b
(5cad84d17)
$ cmd hg commit -m 'c2'
(775bfdddc)
$ cmd hg up -q active
(active)
$ echo bb > b
$ hg add b
$ cmd hg commit -m 'c3'
(active)
$ hg log -T '{node|short} {desc}\n' -G
@ 4b6cc7d5194b c3
o 775bfdddc842 c2
o 5cad84d1726f c1
Test rebase
$ cmd hg rebase -d 775bfdd --config "extensions.rebase="
rebasing 4b6cc7d5194b "c3" (active)
merging b
warning: 1 conflicts while merging b! (edit, then use 'hg resolve --mark')
unresolved conflicts (see hg resolve, then hg rebase --continue)
(775bfdddc|REBASE)
$ cmd hg book rebase
(rebase|REBASE)
$ cmd hg rebase --abort --config "extensions.rebase="
rebase aborted
(active)
$ cmd hg book -i
(4b6cc7d51)
Test histedit
$ command cat > commands <<EOF
> edit 4b6cc7d5194b
> EOF
$ cmd hg histedit --config "extensions.histedit=" --commands commands
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
adding b
Editing (4b6cc7d5194b), you may commit or record as needed now.
(hg histedit --continue to resume)
(5cad84d17|HISTEDIT)
$ cmd hg histedit --config "extensions.histedit=" --abort
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(4b6cc7d51)
Test graft
$ cmd hg graft 775bfdddc842
grafting 775bfdddc842 "c2" (rebase)
merging b
warning: 1 conflicts while merging b! (edit, then use 'hg resolve --mark')
abort: unresolved conflicts, can't continue
(use 'hg resolve' and 'hg graft --continue')
(4b6cc7d51|GRAFT)
$ cmd hg revert -r 775bfdddc842 b
(4b6cc7d51|GRAFT)
$ cmd hg resolve --mark b
(no more unresolved files)
continue: hg graft --continue
(4b6cc7d51|GRAFT)
$ cmd hg graft --continue
grafting 775bfdddc842 "c2" (rebase)
(42eaf5ca8)
Test bisect
$ cmd hg bisect -b .
(42eaf5ca8|BISECT)
$ cmd hg bisect -g ".^^"
Testing changeset 4b6cc7d5194b (2 changesets remaining, ~1 tests)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(4b6cc7d51|BISECT)
$ cmd hg bisect -r
(4b6cc7d51)
Test unshelve
$ echo b >> b
$ cmd hg shelve --config "extensions.shelve="
shelved as default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(4b6cc7d51)
$ cmd hg up -q ".^"
(5cad84d17)
$ cmd hg unshelve --config "extensions.shelve="
unshelving change 'default'
rebasing shelved changes
rebasing 19f7fec7f80b "shelve changes to: c3"
other [source] changed b which local [dest] deleted
use (c)hanged version, leave (d)eleted, leave (u)nresolved, or input (r)enamed path? u
unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')
(5cad84d17|UNSHELVE)
$ cmd hg unshelve --config "extensions.shelve=" --abort
rebase aborted
unshelve of 'default' aborted
(5cad84d17)
Test merge
$ cmd hg up -q 4b6cc7d5194b
(4b6cc7d51)
$ cmd hg merge 775bfdddc842
merging b
warning: 1 conflicts while merging b! (edit, then use 'hg resolve --mark')
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
(4b6cc7d51|MERGE)
$ cmd hg up -q -C .
(4b6cc7d51)
Test out-of-date bookmark
$ echo rebase > .hg/bookmarks.current
$ cmd hg book
active 4b6cc7d5194b
rebase 775bfdddc842
(rebase|UPDATE_NEEDED)
$ hg up -q .
Test remotenames
$ hg log -r . -T '{node}\n'
4b6cc7d5194bd5dbf63970015ec75f8fd1de6dba
$ echo 4b6cc7d5194bd5dbf63970015ec75f8fd1de6dba bookmarks remote/@ > .hg/store/remotenames
$ cmd
(4b6cc7d51|remote/@)
Test shared bookmarks
$ cmd cd ..
$ cmd hg share -B repo share --config "extensions.share="
updating working directory
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cmd cd share
(42eaf5ca8)
$ echo rebase > .hg/bookmarks.current
$ cmd
(rebase|UPDATE_NEEDED)
$ cd ../repo
Test unshared bookmarks
$ cmd cd ..
$ cmd hg share repo share2 --config "extensions.share="
updating working directory
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cmd cd share2
(42eaf5ca8)
$ cmd hg book unshared
(unshared)
$ cmd hg up -q ".^"
(4b6cc7d51|remote/@)
$ echo unshared > .hg/bookmarks.current
$ cmd
(unshared|remote/@|UPDATE_NEEDED)
$ cd ../repo
Test with symlinks to inside of subdir of repo
$ mkdir subdir
$ echo contents > subdir/file
$ hg add subdir/file
$ cmd hg commit -m subdir
(ced0c431a)
$ cd ..
$ cmd ln -s repo/subdir
$ cmd cd subdir
(ced0c431a)
$ cd ../repo
Test formatting options
$ _scm_prompt ' %s \n'
ced0c431a
$ _scm_prompt ':%s:'
:ced0c431a: (no-eol)
Test locked repo states (generally due to concurrency so tests are kinda fake)
$ cmd ln -s "${HOSTNAME}:12345" .hg/wlock
(ced0c431a|WDIR-LOCKED)
$ cmd ln -s "${HOSTNAME}:12345" .hg/store/lock
(ced0c431a|STORE-LOCKED)
$ cmd rm .hg/wlock
(ced0c431a|STORE-LOCKED)
$ cmd rm .hg/store/lock
(ced0c431a)
Test many remotenames
$ hg log -r . -T '{node}\n'
ced0c431a4731a9d5048efdb60a3535f5450167e
$ for i in `$PYTHON $TESTDIR/seq.py 1 10`; do
> echo ced0c431a4731a9d5048efdb60a3535f5450167e bookmarks remote/remote$i >> .hg/store/remotenames
> done
$ cmd
(ced0c431a|remote/remote9...)
$ echo 97af35b3648c0098cbd8114ae1b1bafab997ac20 bookmarks remote/abc/master >> .hg/store/remotenames
$ cmd
(ced0c431a|remote/remote9...)
$ echo 97af35b3648c0098cbd8114ae1b1bafab997ac20 bookmarks remote/@ >> .hg/store/remotenames
$ cmd
(ced0c431a|remote/remote9...)