Skip to content
Snippets Groups Projects
  • Matt Harbison's avatar
    4441705b
    tests: remove (glob) annotations that were only for '\' matches · 4441705b
    Matt Harbison authored
    # skip-blame because this was mechanically rewritten the following script.  I
    ran it on both *.t and *.py, but none of the *.py changes were proper.  All *.t
    ones appear to be, and they run without addition failures on both Windows and
    Linux.
    
      import argparse
      import os
      import re
    
      ap = argparse.ArgumentParser()
      ap.add_argument('path', nargs='+')
      opts = ap.parse_args()
    
      globre = re.compile(r'^(.*) \(glob\)(.*)$')
    
      for p in opts.path:
          tmp = p + '.tmp'
          with open(p, 'rb') as src, open(tmp, 'wb') as dst:
              for line in src:
                  m = globre.match(line)
                  if not m or '$LOCALIP' in line or '*' in line:
                      dst.write(line)
                      continue
                  if '?' in line[:-3] or ('?' in line[:-3] and line[-3:] != '(?)'):
                      dst.write(line)
                      continue
                  dst.write(m.group(1) + m.group(2) + '\n')
          os.unlink(p)
          os.rename(tmp, p)
    4441705b
    History
    tests: remove (glob) annotations that were only for '\' matches
    Matt Harbison authored
    # skip-blame because this was mechanically rewritten the following script.  I
    ran it on both *.t and *.py, but none of the *.py changes were proper.  All *.t
    ones appear to be, and they run without addition failures on both Windows and
    Linux.
    
      import argparse
      import os
      import re
    
      ap = argparse.ArgumentParser()
      ap.add_argument('path', nargs='+')
      opts = ap.parse_args()
    
      globre = re.compile(r'^(.*) \(glob\)(.*)$')
    
      for p in opts.path:
          tmp = p + '.tmp'
          with open(p, 'rb') as src, open(tmp, 'wb') as dst:
              for line in src:
                  m = globre.match(line)
                  if not m or '$LOCALIP' in line or '*' in line:
                      dst.write(line)
                      continue
                  if '?' in line[:-3] or ('?' in line[:-3] and line[-3:] != '(?)'):
                      dst.write(line)
                      continue
                  dst.write(m.group(1) + m.group(2) + '\n')
          os.unlink(p)
          os.rename(tmp, p)
test-addremove-similar.t 3.78 KiB
  $ hg init rep; cd rep

  $ touch empty-file
  $ $PYTHON -c 'for x in range(10000): print(x)' > large-file

  $ hg addremove
  adding empty-file
  adding large-file

  $ hg commit -m A

  $ rm large-file empty-file
  $ $PYTHON -c 'for x in range(10,10000): print(x)' > another-file

  $ hg addremove -s50
  adding another-file
  removing empty-file
  removing large-file
  recording removal of large-file as rename to another-file (99% similar)

  $ hg commit -m B

comparing two empty files caused ZeroDivisionError in the past

  $ hg update -C 0
  2 files updated, 0 files merged, 1 files removed, 0 files unresolved
  $ rm empty-file
  $ touch another-empty-file
  $ hg addremove -s50
  adding another-empty-file
  removing empty-file

  $ cd ..

  $ hg init rep2; cd rep2

  $ $PYTHON -c 'for x in range(10000): print(x)' > large-file
  $ $PYTHON -c 'for x in range(50): print(x)' > tiny-file

  $ hg addremove
  adding large-file
  adding tiny-file

  $ hg commit -m A

  $ $PYTHON -c 'for x in range(70): print(x)' > small-file
  $ rm tiny-file
  $ rm large-file

  $ hg addremove -s50
  removing large-file
  adding small-file
  removing tiny-file
  recording removal of tiny-file as rename to small-file (82% similar)

  $ hg commit -m B

should be sorted by path for stable result

  $ for i in `$PYTHON $TESTDIR/seq.py 0 9`; do
  >     cp small-file $i
  > done
  $ rm small-file
  $ hg addremove
  adding 0
  adding 1
  adding 2
  adding 3
  adding 4
  adding 5