##// END OF EJS Templates
py3: fix infinitepush extension tests...
py3: fix infinitepush extension tests Differential Revision: https://phab.mercurial-scm.org/D5078

File last commit:

r39743:5abc47d4 default
r40288:090e5f39 default
Show More
test-commit-interactive-curses.t
444 lines | 8.8 KiB | text/troff | Tads3Lexer
/ tests / test-commit-interactive-curses.t
FUJIWARA Katsunori
tests: add test-commit-interactive-curses.t "require tic" for test portability...
r30236 #require tic
Laurent Charignon
record: add tests for the curses recording interface
r24344 Set up a repo
Simon Farnsworth
ui: add new config flag for interface selection...
r28542 $ cp $HGRCPATH $HGRCPATH.pretest
Laurent Charignon
record: add tests for the curses recording interface
r24344 $ cat <<EOF >> $HGRCPATH
> [ui]
> interactive = true
Simon Farnsworth
crecord: use ui.interface to choose curses interface...
r28543 > interface = curses
Laurent Charignon
record: add tests for the curses recording interface
r24344 > [experimental]
> crecordtest = testModeCommands
> EOF
timeless
crecord: properly handle files with No newline at eof (issue5268)...
r29862 Record with noeol at eof (issue5268)
$ hg init noeol
$ cd noeol
$ printf '0' > a
$ printf '0\n' > b
$ hg ci -Aqm initial
$ printf '1\n0' > a
$ printf '1\n0\n' > b
$ cat <<EOF >testModeCommands
> c
> EOF
$ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg commit -i -m "add hunks" -d "0 0"
$ cd ..
Normal repo
Laurent Charignon
record: add tests for the curses recording interface
r24344 $ hg init a
$ cd a
Committing some changes but stopping on the way
$ echo "a" > a
$ hg add a
$ cat <<EOF >testModeCommands
> TOGGLE
> X
> EOF
$ hg commit -i -m "a" -d "0 0"
no changes to record
Philippe Pepiot
commit: return 1 for interactive commit with no changes (issue5397)...
r30157 [1]
Laurent Charignon
record: add tests for the curses recording interface
r24344 $ hg tip
changeset: -1:000000000000
tag: tip
user:
date: Thu Jan 01 00:00:00 1970 +0000
Committing some changes
$ cat <<EOF >testModeCommands
> X
> EOF
$ hg commit -i -m "a" -d "0 0"
$ hg tip
changeset: 0:cb9a9f314b8b
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: a
Laurent Charignon
crecord: add dictionary to default return value of filterpatch...
r27321 Check that commit -i works with no changes
$ hg commit -i
no changes to record
Philippe Pepiot
commit: return 1 for interactive commit with no changes (issue5397)...
r30157 [1]
Laurent Charignon
crecord: add dictionary to default return value of filterpatch...
r27321
Laurent Charignon
record: add tests for the curses recording interface
r24344 Committing only one file
$ echo "a" >> a
Pulkit Goyal
py3: fix .write() calls in few tests...
r38097 >>> open('b', 'wb').write(b"1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n") and None
Laurent Charignon
record: add tests for the curses recording interface
r24344 $ hg add b
$ cat <<EOF >testModeCommands
> TOGGLE
> KEY_DOWN
> X
> EOF
$ hg commit -i -m "one file" -d "0 0"
$ hg tip
changeset: 1:fb2705a663ea
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: one file
$ hg cat -r tip a
a
$ cat a
a
a
Laurent Charignon
crecord: exit edition of hunk with non-zero status does not interrupt session...
r25557 Committing only one hunk while aborting edition of hunk
Laurent Charignon
record: add tests for the curses recording interface
r24344
- Untoggle all the hunks, go down to the second file
- unfold it
- go down to second hunk (1 for the first hunk, 1 for the first hunkline, 1 for the second hunk, 1 for the second hunklike)
- toggle the second hunk
Laurent Charignon
commit: add amend mode for commit -i...
r27156 - toggle on and off the amend mode (to check that it toggles off)
Mads Kiilerich
spelling: trivial spell checking
r26781 - edit the hunk and quit the editor immediately with non-zero status
Laurent Charignon
record: add tests for the curses recording interface
r24344 - commit
Laurent Charignon
crecord: exit edition of hunk with non-zero status does not interrupt session...
r25557 $ printf "printf 'editor ran\n'; exit 1" > editor.sh
Laurent Charignon
record: add tests for the curses recording interface
r24344 $ echo "x" > c
$ cat b >> c
$ echo "y" >> c
$ mv c b
$ cat <<EOF >testModeCommands
> A
> KEY_DOWN
> f
> KEY_DOWN
> KEY_DOWN
> KEY_DOWN
> KEY_DOWN
> TOGGLE
Laurent Charignon
commit: add amend mode for commit -i...
r27156 > a
> a
Laurent Charignon
crecord: exit edition of hunk with non-zero status does not interrupt session...
r25557 > e
Laurent Charignon
record: add tests for the curses recording interface
r24344 > X
> EOF
Laurent Charignon
crecord: exit edition of hunk with non-zero status does not interrupt session...
r25557 $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg commit -i -m "one hunk" -d "0 0"
editor ran
$ rm editor.sh
Laurent Charignon
record: add tests for the curses recording interface
r24344 $ hg tip
changeset: 2:7d10dfe755a8
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: one hunk
$ hg cat -r tip b
1
2
3
4
5
6
7
8
9
10
y
$ cat b
x
1
2
3
4
5
6
7
8
9
10
y
$ hg commit -m "other hunks"
$ hg tip
changeset: 3:a6735021574d
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: other hunks
$ hg cat -r tip b
x
1
2
3
4
5
6
7
8
9
10
y
Laurent Charignon
record_curses: add test for newly added files...
r24469 Newly added files can be selected with the curses interface
Laurent Charignon
record: add tests for the curses recording interface
r24344
Laurent Charignon
record_curses: add test for newly added files...
r24469 $ hg update -C .
Laurent Charignon
record: fix record with change on moved file crashes (issue4619)...
r24837 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
Laurent Charignon
record_curses: add test for newly added files...
r24469 $ echo "hello" > x
$ hg add x
$ cat <<EOF >testModeCommands
> TOGGLE
> TOGGLE
> X
> EOF
$ hg st
A x
? testModeCommands
$ hg commit -i -m "newly added file" -d "0 0"
$ hg st
? testModeCommands
Laurent Charignon
commit: add amend mode for commit -i...
r27156 Amend option works
$ echo "hello world" > x
$ hg diff -c .
diff -r a6735021574d -r 2b0e9be4d336 x
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/x Thu Jan 01 00:00:00 1970 +0000
@@ -0,0 +1,1 @@
+hello
$ cat <<EOF >testModeCommands
> a
> X
> EOF
$ hg commit -i -m "newly added file" -d "0 0"
Matt Harbison
tests: remove (glob) annotations that were only for '\' matches...
r35394 saved backup bundle to $TESTTMP/a/.hg/strip-backup/2b0e9be4d336-3cf0bc8c-amend.hg
Laurent Charignon
commit: add amend mode for commit -i...
r27156 $ hg diff -c .
diff -r a6735021574d -r c1d239d165ae x
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/x Thu Jan 01 00:00:00 1970 +0000
@@ -0,0 +1,1 @@
+hello world
Laurent Charignon
crecord: edit during hg crecord should preserve cursor position (issue5041)...
r27914
Jun Wu
crecord: fix line number in hunk header (issue5917)...
r38330 Make file empty
Augie Fackler
tests: replace `echo -n` with `printf` per check-code...
r38345 $ printf "" > x
Jun Wu
crecord: fix line number in hunk header (issue5917)...
r38330 $ cat <<EOF >testModeCommands
> X
> EOF
$ hg ci -i -m emptify -d "0 0"
$ hg update -C '.^' -q
Laurent Charignon
crecord: edit during hg crecord should preserve cursor position (issue5041)...
r27914 Editing a hunk puts you back on that hunk when done editing (issue5041)
To do that, we change two lines in a file, pretend to edit the second line,
exit, toggle the line selected at the end of the edit and commit.
The first line should be recorded if we were put on the second line at the end
of the edit.
$ hg update -C .
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo "foo" > x
$ echo "hello world" >> x
$ echo "bar" >> x
$ cat <<EOF >testModeCommands
> f
> KEY_DOWN
> KEY_DOWN
> KEY_DOWN
> KEY_DOWN
> e
> TOGGLE
> X
> EOF
$ printf "printf 'editor ran\n'; exit 0" > editor.sh
Jun Wu
crecord: fix line number in hunk header (issue5917)...
r38330 $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg commit -i -m "edit hunk" -d "0 0" -q
Laurent Charignon
crecord: edit during hg crecord should preserve cursor position (issue5041)...
r27914 editor ran
$ hg cat -r . x
foo
hello world
Jordi Gutiérrez Hermoso
crecord: re-enable reviewing a patch before comitting it...
r28638 Testing the review option. The entire final filtered patch should show
up in the editor and be editable. We will unselect the second file and
the first hunk of the third file. During review, we will decide that
"lower" sounds better than "bottom", and the final commit should
reflect this edition.
Laurent Charignon
crecord: edit during hg crecord should preserve cursor position (issue5041)...
r27914
Jordi Gutiérrez Hermoso
crecord: re-enable reviewing a patch before comitting it...
r28638 $ hg update -C .
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo "top" > c
$ cat x >> c
$ echo "bottom" >> c
$ mv c x
$ echo "third a" >> a
$ echo "we will unselect this" >> b
$ cat > editor.sh <<EOF
> cat "\$1"
> cat "\$1" | sed s/bottom/lower/ > tmp
> mv tmp "\$1"
> EOF
$ cat > testModeCommands <<EOF
> KEY_DOWN
> TOGGLE
> KEY_DOWN
> f
> KEY_DOWN
> TOGGLE
> R
> EOF
$ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg commit -i -m "review hunks" -d "0 0"
# To remove '-' lines, make them ' ' lines (context).
# To remove '+' lines, delete them.
# Lines starting with # will be removed from the patch.
#
# If the patch applies cleanly, the edited patch will immediately
# be finalised. If it does not apply cleanly, rejects files will be
# generated. You can use those when you try again.
diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,2 +1,3 @@
a
a
+third a
diff --git a/x b/x
--- a/x
+++ b/x
@@ -1,2 +1,3 @@
foo
hello world
+bottom
$ hg cat -r . a
a
a
third a
$ hg cat -r . b
x
1
2
3
4
5
6
7
8
9
10
y
$ hg cat -r . x
foo
hello world
lower
av6
tests: test experimental.spacemovesdown config for commit -i...
r30831
Check spacemovesdown
$ cat <<EOF >> $HGRCPATH
> [experimental]
> spacemovesdown = true
> EOF
$ cat <<EOF >testModeCommands
> TOGGLE
> TOGGLE
> X
> EOF
$ hg status -q
M b
M x
$ hg commit -i -m "nothing to commit?" -d "0 0"
no changes to record
[1]
Simon Farnsworth
ui: add new config flag for interface selection...
r28542 Check ui.interface logic for the chunkselector
The default interface is text
$ cp $HGRCPATH.pretest $HGRCPATH
$ chunkselectorinterface() {
Matt Harbison
tests: quote PYTHON usage...
r39743 > "$PYTHON" <<EOF
Yuya Nishihara
test-commit-interactive-curses: remove unused import of parsers
r32198 > from mercurial import hg, ui;\
Yuya Nishihara
ui: factor out ui.load() to create a ui without loading configs (API)...
r30559 > repo = hg.repository(ui.ui.load(), ".");\
Augie Fackler
tests: clean up many print statements to be print functions instead...
r33687 > print(repo.ui.interface("chunkselector"))
Simon Farnsworth
ui: add new config flag for interface selection...
r28542 > EOF
> }
$ chunkselectorinterface
text
If only the default is set, we'll use that for the feature, too
$ cp $HGRCPATH.pretest $HGRCPATH
$ cat <<EOF >> $HGRCPATH
> [ui]
> interface = curses
> EOF
$ chunkselectorinterface
curses
Kyle Lippincott
curses: use "text" interface if TERM=dumb...
r38749 If TERM=dumb, we use text, even if the config says curses
$ chunkselectorinterface
curses
$ TERM=dumb chunkselectorinterface
text
(Something is keeping TERM=dumb in the environment unless I do this, it's not
scoped to just that previous command like in many shells)
$ TERM=xterm chunkselectorinterface
curses
Simon Farnsworth
ui: add new config flag for interface selection...
r28542 It is possible to override the default interface with a feature specific
interface
$ cp $HGRCPATH.pretest $HGRCPATH
$ cat <<EOF >> $HGRCPATH
> [ui]
> interface = text
> interface.chunkselector = curses
> EOF
$ chunkselectorinterface
curses
$ cp $HGRCPATH.pretest $HGRCPATH
$ cat <<EOF >> $HGRCPATH
> [ui]
> interface = curses
> interface.chunkselector = text
> EOF
$ chunkselectorinterface
text
If a bad interface name is given, we use the default value (with a nice
error message to suggest that the configuration needs to be fixed)
$ cp $HGRCPATH.pretest $HGRCPATH
$ cat <<EOF >> $HGRCPATH
> [ui]
> interface = blah
> EOF
$ chunkselectorinterface
invalid value for ui.interface: blah (using text)
text
$ cp $HGRCPATH.pretest $HGRCPATH
$ cat <<EOF >> $HGRCPATH
> [ui]
> interface = curses
> interface.chunkselector = blah
> EOF
$ chunkselectorinterface
invalid value for ui.interface.chunkselector: blah (using curses)
curses
$ cp $HGRCPATH.pretest $HGRCPATH
$ cat <<EOF >> $HGRCPATH
> [ui]
> interface = blah
> interface.chunkselector = curses
> EOF
$ chunkselectorinterface
invalid value for ui.interface: blah
curses
$ cp $HGRCPATH.pretest $HGRCPATH
$ cat <<EOF >> $HGRCPATH
> [ui]
> interface = blah
> interface.chunkselector = blah
> EOF
$ chunkselectorinterface
invalid value for ui.interface: blah
invalid value for ui.interface.chunkselector: blah (using text)
text