view tests/test-diff-indent-heuristic.t @ 38336:bb7e3c6ef592

phabricator: preserve the phase when amending in the Differential fields I have no idea if it's better to change scmutil.cleanupnodes() so that it has the option to either apply a specific phase (e.g. for various --secret switches) or carry over the phase of the old node. The benefit would be that the caller doesn't have to remember to do this. The con is maybe inefficiency? I wrote this up as issue5918. I'm leaving that open since Yuya flagged it as an API bug. Since most other callers already do this, it's the simplest fix. (It's not obvious that `split`, `fix` and `rebase` are doing this, but there is test coverage for `fix` and `rebase`, and experimenting with `split` shows it does the right thing.)
author Matt Harbison <matt_harbison@yahoo.com>
date Thu, 14 Jun 2018 12:35:04 -0400
parents 7834927f0243
children 55c6ebd11cb9
line wrap: on
line source

#testcases bdiff xdiff

#if xdiff
#require xdiff
  $ cat >> $HGRCPATH <<EOF
  > [experimental]
  > xdiff = true
  > EOF
#endif

  $ hg init

  $ cat > a.c <<'EOF'
  > /*
  >  * This function returns 1.
  >  */
  > int f() {
  >   return 1;
  > }
  > /*
  >  * This function returns 2.
  >  */
  > int g() {
  >   return 2;
  > }
  > /*
  >  * This function returns 3.
  >  */
  > int h() {
  >   return 3;
  > }
  > EOF

  $ cat > b.c <<'EOF'
  > if (x) {
  >    do_something();
  > }
  > 
  > if (y) {
  >    do_something_else();
  > }
  > EOF

  $ cat > c.rb <<'EOF'
  > #!ruby
  > ["foo", "bar", "baz"].map do |i|
  >   i.upcase
  > end
  > EOF

  $ cat > d.py <<'EOF'
  > try:
  >     import foo
  > except ImportError:
  >     pass
  > try:
  >     import bar
  > except ImportError:
  >     pass
  > EOF

The below two files are taken from git: t/t4061-diff-indent.sh

  $ cat > spaces.txt <<'EOF'
  > 1
  > 2
  > a
  > 
  > b
  > 3
  > 4
  > EOF

  $ cat > functions.c <<'EOF'
  > 1
  > 2
  > /* function */
  > foo() {
  >     foo
  > }
  > 
  > 3
  > 4
  > EOF

  $ hg commit -m 1 -A . -q

  $ cat > a.c <<'EOF'
  > /*
  >  * This function returns 1.
  >  */
  > int f() {
  >   return 1;
  > }
  > /*
  >  * This function returns 3.
  >  */
  > int h() {
  >   return 3;
  > }
  > EOF

  $ cat > b.c <<'EOF'
  > if (x) {
  >    do_something();
  > }
  > 
  > if (y) {
  >    do_another_thing();
  > }
  > 
  > if (y) {
  >    do_something_else();
  > }
  > EOF

  $ cat > c.rb <<'EOF'
  > #!ruby
  > ["foo", "bar", "baz"].map do |i|
  >   i
  > end
  > ["foo", "bar", "baz"].map do |i|
  >   i.upcase
  > end
  > EOF

  $ cat > d.py <<'EOF'
  > try:
  >     import foo
  > except ImportError:
  >     pass
  > try:
  >     import baz
  > except ImportError:
  >     pass
  > try:
  >     import bar
  > except ImportError:
  >     pass
  > EOF

  $ cat > spaces.txt <<'EOF'
  > 1
  > 2
  > a
  > 
  > b
  > a
  > 
  > b
  > 3
  > 4
  > EOF

  $ cat > functions.c <<'EOF'
  > 1
  > 2
  > /* function */
  > bar() {
  >     foo
  > }
  > 
  > /* function */
  > foo() {
  >     foo
  > }
  > 
  > 3
  > 4
  > EOF

#if xdiff
  $ hg diff --git
  diff --git a/a.c b/a.c
  --- a/a.c
  +++ b/a.c
  @@ -4,12 +4,6 @@
   int f() {
     return 1;
   }
  -/*
  - * This function returns 2.
  - */
  -int g() {
  -  return 2;
  -}
   /*
    * This function returns 3.
    */
  diff --git a/b.c b/b.c
  --- a/b.c
  +++ b/b.c
  @@ -2,6 +2,10 @@
      do_something();
   }
   
  +if (y) {
  +   do_another_thing();
  +}
  +
   if (y) {
      do_something_else();
   }
  diff --git a/c.rb b/c.rb
  --- a/c.rb
  +++ b/c.rb
  @@ -1,4 +1,7 @@
   #!ruby
  +["foo", "bar", "baz"].map do |i|
  +  i
  +end
   ["foo", "bar", "baz"].map do |i|
     i.upcase
   end
  diff --git a/d.py b/d.py
  --- a/d.py
  +++ b/d.py
  @@ -2,6 +2,10 @@
       import foo
   except ImportError:
       pass
  +try:
  +    import baz
  +except ImportError:
  +    pass
   try:
       import bar
   except ImportError:
  diff --git a/functions.c b/functions.c
  --- a/functions.c
  +++ b/functions.c
  @@ -1,5 +1,10 @@
   1
   2
  +/* function */
  +bar() {
  +    foo
  +}
  +
   /* function */
   foo() {
       foo
  diff --git a/spaces.txt b/spaces.txt
  --- a/spaces.txt
  +++ b/spaces.txt
  @@ -2,6 +2,9 @@
   2
   a
   
  +b
  +a
  +
   b
   3
   4
#else
  $ hg diff --git
  diff --git a/a.c b/a.c
  --- a/a.c
  +++ b/a.c
  @@ -5,12 +5,6 @@
     return 1;
   }
   /*
  - * This function returns 2.
  - */
  -int g() {
  -  return 2;
  -}
  -/*
    * This function returns 3.
    */
   int h() {
  diff --git a/b.c b/b.c
  --- a/b.c
  +++ b/b.c
  @@ -3,5 +3,9 @@
   }
   
   if (y) {
  +   do_another_thing();
  +}
  +
  +if (y) {
      do_something_else();
   }
  diff --git a/c.rb b/c.rb
  --- a/c.rb
  +++ b/c.rb
  @@ -1,4 +1,7 @@
   #!ruby
   ["foo", "bar", "baz"].map do |i|
  +  i
  +end
  +["foo", "bar", "baz"].map do |i|
     i.upcase
   end
  diff --git a/d.py b/d.py
  --- a/d.py
  +++ b/d.py
  @@ -3,6 +3,10 @@
   except ImportError:
       pass
   try:
  +    import baz
  +except ImportError:
  +    pass
  +try:
       import bar
   except ImportError:
       pass
  diff --git a/functions.c b/functions.c
  --- a/functions.c
  +++ b/functions.c
  @@ -1,6 +1,11 @@
   1
   2
   /* function */
  +bar() {
  +    foo
  +}
  +
  +/* function */
   foo() {
       foo
   }
  diff --git a/spaces.txt b/spaces.txt
  --- a/spaces.txt
  +++ b/spaces.txt
  @@ -3,5 +3,8 @@
   a
   
   b
  +a
  +
  +b
   3
   4
#endif