mirror of
https://github.com/facebook/sapling.git
synced 2024-10-08 07:49:11 +03:00
04ea4eb32d
In d87f1c1d18fa, be4d37a43992, 394118f2cf71, and 7594c2ea371e, new tests were added that used TESTDIR instead of TESTTMP thereby leading to polluting the working directory with these temporary files. Now, we use TESTTMP so that they will be cleaned up properly.
272 lines
6.8 KiB
Turing
272 lines
6.8 KiB
Turing
|
|
$ catpatch() {
|
|
> cat $1 | sed -e "s/^\(# Parent \).*/\1/"
|
|
> }
|
|
$ echo "[extensions]" >> $HGRCPATH
|
|
$ echo "mq=" >> $HGRCPATH
|
|
$ runtest() {
|
|
> hg init mq
|
|
> cd mq
|
|
>
|
|
> echo a > a
|
|
> hg ci -Ama
|
|
>
|
|
> echo '% qnew should refuse bad patch names'
|
|
> hg qnew series
|
|
> hg qnew status
|
|
> hg qnew guards
|
|
> hg qnew .
|
|
> hg qnew ..
|
|
> hg qnew .hgignore
|
|
> hg qnew .mqfoo
|
|
> hg qnew 'foo#bar'
|
|
> hg qnew 'foo:bar'
|
|
>
|
|
> hg qinit -c
|
|
>
|
|
> echo '% qnew with name containing slash'
|
|
> hg qnew foo/
|
|
> hg qnew foo/bar.patch
|
|
> hg qnew foo
|
|
> hg qseries
|
|
> hg qpop
|
|
> hg qdelete foo/bar.patch
|
|
>
|
|
> echo '% qnew with uncommitted changes'
|
|
> echo a > somefile
|
|
> hg add somefile
|
|
> hg qnew uncommitted.patch
|
|
> hg st
|
|
> hg qseries
|
|
>
|
|
> echo '% qnew implies add'
|
|
> hg -R .hg/patches st
|
|
>
|
|
> echo '% qnew missing'
|
|
> hg qnew missing.patch missing
|
|
>
|
|
> echo '% qnew -m'
|
|
> hg qnew -m 'foo bar' mtest.patch
|
|
> catpatch .hg/patches/mtest.patch
|
|
>
|
|
> echo '% qnew twice'
|
|
> hg qnew first.patch
|
|
> hg qnew first.patch
|
|
>
|
|
> touch ../first.patch
|
|
> hg qimport ../first.patch
|
|
>
|
|
> echo '% qnew -f from a subdirectory'
|
|
> hg qpop -a
|
|
> mkdir d
|
|
> cd d
|
|
> echo b > b
|
|
> hg ci -Am t
|
|
> echo b >> b
|
|
> hg st
|
|
> hg qnew -g -f p
|
|
> catpatch ../.hg/patches/p
|
|
>
|
|
> echo '% qnew -u with no username configured'
|
|
> HGUSER= hg qnew -u blue red
|
|
> catpatch ../.hg/patches/red
|
|
>
|
|
> echo '% qnew -e -u with no username configured'
|
|
> HGUSER= hg qnew -e -u chartreuse fucsia
|
|
> catpatch ../.hg/patches/fucsia
|
|
>
|
|
> echo '% fail when trying to import a merge'
|
|
> hg init merge
|
|
> cd merge
|
|
> touch a
|
|
> hg ci -Am null
|
|
> echo a >> a
|
|
> hg ci -m a
|
|
> hg up -r 0
|
|
> echo b >> a
|
|
> hg ci -m b
|
|
> hg merge -f 1
|
|
> hg resolve --mark a
|
|
> hg qnew -f merge
|
|
>
|
|
> cd ../../..
|
|
> rm -r mq
|
|
> }
|
|
|
|
plain headers
|
|
|
|
$ echo "[mq]" >> $HGRCPATH
|
|
$ echo "plain=true" >> $HGRCPATH
|
|
$ mkdir sandbox
|
|
$ (cd sandbox ; runtest)
|
|
adding a
|
|
% qnew should refuse bad patch names
|
|
abort: "series" cannot be used as the name of a patch
|
|
abort: "status" cannot be used as the name of a patch
|
|
abort: "guards" cannot be used as the name of a patch
|
|
abort: "." cannot be used as the name of a patch
|
|
abort: ".." cannot be used as the name of a patch
|
|
abort: patch name cannot begin with ".hg"
|
|
abort: patch name cannot begin with ".mq"
|
|
abort: "#" cannot be used in the name of a patch
|
|
abort: ":" cannot be used in the name of a patch
|
|
% qnew with name containing slash
|
|
abort: path ends in directory separator: foo/ (glob)
|
|
abort: "foo" already exists as a directory
|
|
foo/bar.patch
|
|
popping foo/bar.patch
|
|
patch queue now empty
|
|
% qnew with uncommitted changes
|
|
uncommitted.patch
|
|
% qnew implies add
|
|
A .hgignore
|
|
A series
|
|
A uncommitted.patch
|
|
% qnew missing
|
|
abort: missing: * (glob)
|
|
% qnew -m
|
|
foo bar
|
|
|
|
% qnew twice
|
|
abort: patch "first.patch" already exists
|
|
abort: patch "first.patch" already exists
|
|
% qnew -f from a subdirectory
|
|
popping first.patch
|
|
popping mtest.patch
|
|
popping uncommitted.patch
|
|
patch queue now empty
|
|
adding d/b
|
|
M d/b
|
|
diff --git a/d/b b/d/b
|
|
--- a/d/b
|
|
+++ b/d/b
|
|
@@ -1,1 +1,2 @@
|
|
b
|
|
+b
|
|
% qnew -u with no username configured
|
|
From: blue
|
|
|
|
% qnew -e -u with no username configured
|
|
From: chartreuse
|
|
|
|
% fail when trying to import a merge
|
|
adding a
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
created new head
|
|
merging a
|
|
warning: conflicts during merge.
|
|
merging a incomplete! (edit conflicts, 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
|
|
abort: cannot manage merge changesets
|
|
$ rm -r sandbox
|
|
|
|
hg headers
|
|
|
|
$ echo "plain=false" >> $HGRCPATH
|
|
$ mkdir sandbox
|
|
$ (cd sandbox ; runtest)
|
|
adding a
|
|
% qnew should refuse bad patch names
|
|
abort: "series" cannot be used as the name of a patch
|
|
abort: "status" cannot be used as the name of a patch
|
|
abort: "guards" cannot be used as the name of a patch
|
|
abort: "." cannot be used as the name of a patch
|
|
abort: ".." cannot be used as the name of a patch
|
|
abort: patch name cannot begin with ".hg"
|
|
abort: patch name cannot begin with ".mq"
|
|
abort: "#" cannot be used in the name of a patch
|
|
abort: ":" cannot be used in the name of a patch
|
|
% qnew with name containing slash
|
|
abort: path ends in directory separator: foo/ (glob)
|
|
abort: "foo" already exists as a directory
|
|
foo/bar.patch
|
|
popping foo/bar.patch
|
|
patch queue now empty
|
|
% qnew with uncommitted changes
|
|
uncommitted.patch
|
|
% qnew implies add
|
|
A .hgignore
|
|
A series
|
|
A uncommitted.patch
|
|
% qnew missing
|
|
abort: missing: * (glob)
|
|
% qnew -m
|
|
# HG changeset patch
|
|
# Parent
|
|
foo bar
|
|
|
|
% qnew twice
|
|
abort: patch "first.patch" already exists
|
|
abort: patch "first.patch" already exists
|
|
% qnew -f from a subdirectory
|
|
popping first.patch
|
|
popping mtest.patch
|
|
popping uncommitted.patch
|
|
patch queue now empty
|
|
adding d/b
|
|
M d/b
|
|
# HG changeset patch
|
|
# Parent
|
|
diff --git a/d/b b/d/b
|
|
--- a/d/b
|
|
+++ b/d/b
|
|
@@ -1,1 +1,2 @@
|
|
b
|
|
+b
|
|
% qnew -u with no username configured
|
|
# HG changeset patch
|
|
# Parent
|
|
# User blue
|
|
% qnew -e -u with no username configured
|
|
# HG changeset patch
|
|
# Parent
|
|
# User chartreuse
|
|
% fail when trying to import a merge
|
|
adding a
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
created new head
|
|
merging a
|
|
warning: conflicts during merge.
|
|
merging a incomplete! (edit conflicts, 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
|
|
abort: cannot manage merge changesets
|
|
$ rm -r sandbox
|
|
|
|
Test saving last-message.txt
|
|
|
|
$ hg init repo
|
|
$ cd repo
|
|
|
|
$ cat > $TESTTMP/commitfailure.py <<EOF
|
|
> from mercurial import util
|
|
> def reposetup(ui, repo):
|
|
> class commitfailure(repo.__class__):
|
|
> def commit(self, *args, **kwargs):
|
|
> raise util.Abort('emulating unexpected abort')
|
|
> repo.__class__ = commitfailure
|
|
> EOF
|
|
$ cat > .hg/hgrc <<EOF
|
|
> [extensions]
|
|
> commitfailure = $TESTTMP/commitfailure.py
|
|
> EOF
|
|
|
|
$ cat > $TESTTMP/editor.sh << EOF
|
|
> echo "==== before editing"
|
|
> cat \$1
|
|
> echo "===="
|
|
> echo "test saving last-message.txt" >> \$1
|
|
> EOF
|
|
|
|
$ rm -f .hg/last-message.txt
|
|
$ HGEDITOR="sh $TESTTMP/editor.sh" hg qnew -e patch
|
|
==== before editing
|
|
====
|
|
abort: emulating unexpected abort
|
|
[255]
|
|
$ cat .hg/last-message.txt
|
|
test saving last-message.txt
|
|
|
|
$ cd ..
|