##// END OF EJS Templates
crecord: avoid duplicating lines when reverting noeol->eol change...
crecord: avoid duplicating lines when reverting noeol->eol change When reversing a patch that looks like this while using crecord: ``` @@ -301,4 +302,4 @@ zza zzb zzc zzd -zze \ No newline at end of file +zze ``` we would previously reverse the `-zze` line to be an add, encounter the "no newline" line and stop inspecting lines. This caused us to duplicate the line, producing `zzezze` (still without a newline). `break` is the correct action if we know there will be no lines afterwards, as would be the case in an eol -> noeol transition. It is incorrect if there are lines afterward, such as if both sides are missing the newline or if only the lhs is missing the newline. Differential Revision: https://phab.mercurial-scm.org/D12441

File last commit:

r49904:1faac8c7 default
r49910:079197e9 default
Show More
test-revert-interactive-curses.t
72 lines | 1.1 KiB | text/troff | Tads3Lexer
/ tests / test-revert-interactive-curses.t
Matt Harbison
hghave: split apart testing for the curses module and `tic` executable...
r47043 #require curses
Kyle Lippincott
crecord: add test demonstrating issue when reverting noeol->eol change...
r49909 #testcases committed wdir
Rodrigo Damazio Bovendorp
revert: fix interactive reverting of end-of-file newline changes...
r45713
Revert interactive tests with the Curses interface
$ cat <<EOF >> $HGRCPATH
> [ui]
> interactive = true
> interface = curses
> [experimental]
> crecordtest = testModeCommands
> EOF
TODO: Make a curses version of the other tests from test-revert-interactive.t.
Kyle Lippincott
crecord: add test demonstrating issue when reverting noeol->eol change...
r49909 #if committed
$ maybe_commit() {
> hg ci "$@"
> }
$ do_revert() {
> hg revert -ir'.^'
> }
#else
$ maybe_commit() {
> true
> }
$ do_revert() {
> hg revert -i
> }
#endif
Rodrigo Damazio Bovendorp
revert: fix interactive reverting of end-of-file newline changes...
r45713 When a line without EOL is selected during "revert -i"
$ hg init $TESTTMP/revert-i-curses-eol
$ cd $TESTTMP/revert-i-curses-eol
$ echo 0 > a
$ hg ci -qAm 0
$ printf 1 >> a
Kyle Lippincott
crecord: add test demonstrating issue when reverting noeol->eol change...
r49909 $ maybe_commit -qAm 1
Rodrigo Damazio Bovendorp
revert: fix interactive reverting of end-of-file newline changes...
r45713 $ cat a
0
1 (no-eol)
$ cat <<EOF >testModeCommands
> c
> EOF
Kyle Lippincott
crecord: add test demonstrating issue when reverting noeol->eol change...
r49909 $ do_revert
Rodrigo Damazio Bovendorp
revert: fix interactive reverting of end-of-file newline changes...
r45713 reverting a
$ cat a
0
When a selected line is reverted to have no EOL
$ hg init $TESTTMP/revert-i-curses-eol2
$ cd $TESTTMP/revert-i-curses-eol2
$ printf 0 > a
$ hg ci -qAm 0
$ echo 0 > a
Kyle Lippincott
crecord: add test demonstrating issue when reverting noeol->eol change...
r49909 $ maybe_commit -qAm 1
Rodrigo Damazio Bovendorp
revert: fix interactive reverting of end-of-file newline changes...
r45713 $ cat a
0
$ cat <<EOF >testModeCommands
> c
> EOF
Kyle Lippincott
crecord: add test demonstrating issue when reverting noeol->eol change...
r49909 $ do_revert
Rodrigo Damazio Bovendorp
revert: fix interactive reverting of end-of-file newline changes...
r45713 reverting a
$ cat a
0 (no-eol)