Re: [PATCH 1 of 2] byteify-strings: add test for byteify-strings.py

2019-08-05 Thread Yuya Nishihara
On Sun, 04 Aug 2019 22:21:45 +0200, Raphaël Gomès wrote:
> # HG changeset patch
> # User Raphaël Gomès 
> # Date 1564757642 -7200
> #  Fri Aug 02 16:54:02 2019 +0200
> # Node ID 6a81e45cb9f295adff1e8008a67db48b971ccc18
> # Parent  bbb002b378f33620d70d71872c869f3d67262ddf
> # EXP-Topic byteify-strings
> byteify-strings: add test for byteify-strings.py

> +  $ cat > testfile.py < +  > setattr(o, 'a', 1)
> +  > util.setattr(o, 'ae', 1)
> +  > util.getattr(o, 'alksjdf', 'default')
> +  > util.addattr(o, 'asdf')
> +  > util.hasattr(o, 'lksjdf', 'default')
> +  > util.safehasattr(o, 'lksjdf', 'default')
> +  > @eh.wrapfunction(func, 'lksjdf')
> +  > @eh.wrapclass(klass, 'lksjdf')

Fixed syntax errors in flight.

--- tests/test-check-module-imports.t
+++ tests/test-check-module-imports.t.err
@@ -37,3 +37,5 @@
   > -X tests/test-imports-checker.t \
   > -X tests/test-verify-repo-operations.py \
   > | sed 's-\\-/-g' | "$PYTHON" "$import_checker" -
+  tests/test-byteify-strings.t:102: SyntaxError: invalid syntax (testfile.py, 
line 8)
+  tests/test-byteify-strings.t:124: SyntaxError: invalid syntax (testfile.py, 
line 8)
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


[PATCH 1 of 2] byteify-strings: add test for byteify-strings.py

2019-08-04 Thread Raphaël Gomès
# HG changeset patch
# User Raphaël Gomès 
# Date 1564757642 -7200
#  Fri Aug 02 16:54:02 2019 +0200
# Node ID 6a81e45cb9f295adff1e8008a67db48b971ccc18
# Parent  bbb002b378f33620d70d71872c869f3d67262ddf
# EXP-Topic byteify-strings
byteify-strings: add test for byteify-strings.py

This tests the basic features expected from this script, some cases may not
be covered yet.

A future patch will demonstrate an issue with multi-line `(`, `[` and `{`
alignment and propose a fix.

diff -r bbb002b378f3 -r 6a81e45cb9f2 tests/test-byteify-strings.t
--- /dev/null   Thu Jan 01 00:00:00 1970 +
+++ b/tests/test-byteify-strings.t  Fri Aug 02 16:54:02 2019 +0200
@@ -0,0 +1,201 @@
+#require py3
+
+  $ byteify_strings () {
+  >   $PYTHON "$TESTDIR/../contrib/byteify-strings.py" "$@"
+  > }
+
+Test in-place
+
+  $ cat > testfile.py < obj['test'] = b"1234"
+  > mydict.iteritems()
+  > EOF
+  $ byteify_strings testfile.py -i
+  $ cat testfile.py
+  obj[b'test'] = b"1234"
+  mydict.iteritems()
+
+Test with dictiter
+
+  $ cat > testfile.py < obj['test'] = b"1234"
+  > mydict.iteritems()
+  > EOF
+  $ byteify_strings testfile.py --dictiter
+  obj[b'test'] = b"1234"
+  mydict.items()
+
+Test kwargs-like objects
+
+  $ cat > testfile.py < kwargs['test'] = "123"
+  > kwargs[test['testing']]
+  > kwargs[test[[['testing'
+  > kwargs[kwargs['testing']]
+  > kwargs.get('test')
+  > kwargs.pop('test')
+  > kwargs.get('test', 'testing')
+  > kwargs.pop('test', 'testing')
+  > kwargs.setdefault('test', 'testing')
+  > 
+  > opts['test'] = "123"
+  > opts[test['testing']]
+  > opts[test[[['testing'
+  > opts[opts['testing']]
+  > opts.get('test')
+  > opts.pop('test')
+  > opts.get('test', 'testing')
+  > opts.pop('test', 'testing')
+  > opts.setdefault('test', 'testing')
+  > 
+  > commitopts['test'] = "123"
+  > commitopts[test['testing']]
+  > commitopts[test[[['testing'
+  > commitopts[commitopts['testing']]
+  > commitopts.get('test')
+  > commitopts.pop('test')
+  > commitopts.get('test', 'testing')
+  > commitopts.pop('test', 'testing')
+  > commitopts.setdefault('test', 'testing')
+  > EOF
+  $ byteify_strings testfile.py --treat-as-kwargs kwargs opts commitopts
+  kwargs['test'] = b"123"
+  kwargs[test[b'testing']]
+  kwargs[test[[[b'testing'
+  kwargs[kwargs['testing']]
+  kwargs.get('test')
+  kwargs.pop('test')
+  kwargs.get('test', b'testing')
+  kwargs.pop('test', b'testing')
+  kwargs.setdefault('test', b'testing')
+  
+  opts['test'] = b"123"
+  opts[test[b'testing']]
+  opts[test[[[b'testing'
+  opts[opts['testing']]
+  opts.get('test')
+  opts.pop('test')
+  opts.get('test', b'testing')
+  opts.pop('test', b'testing')
+  opts.setdefault('test', b'testing')
+  
+  commitopts['test'] = b"123"
+  commitopts[test[b'testing']]
+  commitopts[test[[[b'testing'
+  commitopts[commitopts['testing']]
+  commitopts.get('test')
+  commitopts.pop('test')
+  commitopts.get('test', b'testing')
+  commitopts.pop('test', b'testing')
+  commitopts.setdefault('test', b'testing')
+
+Test attr*() as methods
+
+  $ cat > testfile.py < setattr(o, 'a', 1)
+  > util.setattr(o, 'ae', 1)
+  > util.getattr(o, 'alksjdf', 'default')
+  > util.addattr(o, 'asdf')
+  > util.hasattr(o, 'lksjdf', 'default')
+  > util.safehasattr(o, 'lksjdf', 'default')
+  > @eh.wrapfunction(func, 'lksjdf')
+  > @eh.wrapclass(klass, 'lksjdf')
+  > EOF
+  $ byteify_strings testfile.py --allow-attr-methods
+  setattr(o, 'a', 1)
+  util.setattr(o, 'ae', 1)
+  util.getattr(o, 'alksjdf', b'default')
+  util.addattr(o, 'asdf')
+  util.hasattr(o, 'lksjdf', b'default')
+  util.safehasattr(o, 'lksjdf', b'default')
+  @eh.wrapfunction(func, 'lksjdf')
+  @eh.wrapclass(klass, 'lksjdf')
+
+Test without attr*() as methods
+
+  $ cat > testfile.py < setattr(o, 'a', 1)
+  > util.setattr(o, 'ae', 1)
+  > util.getattr(o, 'alksjdf', 'default')
+  > util.addattr(o, 'asdf')
+  > util.hasattr(o, 'lksjdf', 'default')
+  > util.safehasattr(o, 'lksjdf', 'default')
+  > @eh.wrapfunction(func, 'lksjdf')
+  > @eh.wrapclass(klass, 'lksjdf')
+  > EOF
+  $ byteify_strings testfile.py
+  setattr(o, 'a', 1)
+  util.setattr(o, b'ae', 1)
+  util.getattr(o, b'alksjdf', b'default')
+  util.addattr(o, b'asdf')
+  util.hasattr(o, b'lksjdf', b'default')
+  util.safehasattr(o, b'lksjdf', b'default')
+  @eh.wrapfunction(func, b'lksjdf')
+  @eh.wrapclass(klass, b'lksjdf')
+
+Test ignore comments
+
+  $ cat > testfile.py < #py3-transform: off
+  > "none"
+  > "of"
+  > 'these'
+  > s = """should"""
+  > d = '''be'''
+  > #py3-transform: on
+  > "this should"
+  > 'and this also'
+  > 
+  > #no-py3-transform
+  > l = "this should be ignored"
+  > l2 = "this shouldn't"
+  > 
+  > EOF
+  $ byteify_strings testfile.py
+  #py3-transform: off
+  "none"
+  "of"
+  'these'
+  s = """should"""
+  d = '''be'''
+  #py3-transform: on
+  b"this should"
+  b'and this also'
+  
+  #no-py3-transform
+  l = "this should be ignored"
+  l2 = b"this shouldn't"
+  
+Test triple-quoted strings
+
+  $ cat