# HG changeset patch # User Raphaël Gomès # Date 1564757642 -7200 # Node ID 3364b4da5271a942016e1fb6b4783d4b191d7212 # Parent 863e9e7f88503d1543f9ebdda9e367b740b305ab 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 863e9e7f8850 -r 3364b4da5271 tests/test-byteify-strings.t --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-byteify-strings.t Fri Aug 02 16:54:02 2019 +0200 @@ -0,0 +1,217 @@ +#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') + > def f(): + > pass + > @eh.wrapclass(klass, 'lksjdf') + > def f(): + > pass + > 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') + def f(): + pass + @eh.wrapclass(klass, 'lksjdf') + def f(): + pass + +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') + > def f(): + > pass + > @eh.wrapclass(klass, 'lksjdf') + > def f(): + > pass + > 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') + def f(): + pass + @eh.wrapclass(klass, b'lksjdf') + def f(): + pass + +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 > testfile.py < """This is ignored + > """ + > + > line = """ + > This should not be + > """ + > line = ''' + > Neither should this + > ''' + > EOF + $ byteify_strings testfile.py + """This is ignored + """ + + line = b""" + This should not be + """ + line = b''' + Neither should this + ''' + +Test prefixed strings + + $ cat > testfile.py < obj['test'] = b"1234" + > obj[r'test'] = u"1234" + > EOF + $ byteify_strings testfile.py + obj[b'test'] = b"1234" + obj[r'test'] = u"1234"