← Back to team overview

touch-packages team mailing list archive

[Bug 1378888] Re: OptionParser on PPC64LE does not split args correctly

 

In Avro, the issue appears as:

  [py-test] ERROR: test_fields (test_script.TestCat)
  [py-test] ----------------------------------------------------------------------
  [py-test] Traceback (most recent call last):
  [py-test]   File "/home/tony/AVRO/avro-FromFreshIBMSOEGitHub/lang/py/build/test/test_script.py", line 169, in test_fields
  [py-test]     out = self._run('--fields', 'first, last')
  [py-test]   File "/home/tony/AVRO/avro-FromFreshIBMSOEGitHub/lang/py/build/test/test_script.py", line 109, in _run
  [py-test]     out = check_output([SCRIPT, "cat", self.avro_file] + list(args))
  [py-test]   File "/usr/lib/python2.7/subprocess.py", line 573, in check_output
  [py-test]     raise CalledProcessError(retcode, cmd, output=output)
  [py-test] CalledProcessError: Command '['/home/tony/AVRO/avro-FromFreshIBMSOEGitHub/lang/py/build/test/../scripts/avro', 'cat', '/tmp/tmp3Oiy6H', '--fields', 'first, last']' returned non-zero exit status 2


If the string 'first, last' is replaced by 'first,last' (no space), another issue appears (that does not appear on x86_64), with the string '' :

  [py-test] ERROR: test_fields (test_script.TestCat)
  [py-test] Traceback (most recent call last):
  [py-test]
  [py-test]   File "/home/tony/AVRO/avro-FromFreshIBMSOEGitHub/lang/py/build/test/test_script.py", line 173, in test_fields
  [py-test] Schema: ["string", "null", "long"]
  [py-test]     out = self._run('--fields', '')
  [py-test] Datum: None
  [py-test]   File "/home/tony/AVRO/avro-FromFreshIBMSOEGitHub/lang/py/build/test/test_script.py", line 109, in _run
  [py-test] Codec: deflate
  [py-test]     out = check_output([SCRIPT, "cat", self.avro_file] + list(args))
  [py-test] Round Trip Data: [None, None, None, None, None, None, None, None, None, None]
  [py-test]   File "/usr/lib/python2.7/subprocess.py", line 573, in check_output
  [py-test] Round Trip Data Length: 10
  [py-test]     raise CalledProcessError(retcode, cmd, output=output)
  [py-test] Correct Round Trip: True
  [py-test]
  [py-test] CalledProcessError: Command '['/home/tony/AVRO/avro-FromFreshIBMSOEGitHub/lang/py/build/test/../scripts/avro', 'cat', '/tmp/tmpJJp2gX', '--fields', '']' returned non-zero exit status 2


The issue in Python is triggered by this Avro test file:
    lang/py/build/test/test_script.py

class TestCat(unittest.TestCase):
.....
     def test_fields(self):
     ...
        # Field selection (with comma and space)
        out = self._run('--fields', 'first, last')
        assert json.loads(out[0]) == {'first': 'daffy', 'last': 'duck'}

        # Empty fields should get all
        out = self._run('--fields', '')


So, there are 2 issues with OptionParser():
 - 'first, last'
 - ''  (empty field)

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to python2.7 in Ubuntu.
https://bugs.launchpad.net/bugs/1378888

Title:
  OptionParser on PPC64LE does not split args correctly

Status in “python2.7” package in Ubuntu:
  New

Bug description:
  The issue appears on PPC64 LE.
  It is OK on (Ubuntu) x86_64.
  Version of Python is 2.7.6 on both systems.
  The issue is demonstrated while running AVRO Python tests (in lang/py : ant test).

  
  - On Ubuntu / PPC64 LE :

  $ pwd
  ..../lang/py
  $ export PYTHONPATH=./build/src
  $ /home/tony/AVRO/avro-FromFreshIBMSOEGitHub/lang/py/build/test/../scripts/avro cat /tmp/REIX --fields 'first, last'
  {"first": "daffy"}
  {"first": "bugs"}
  {"first": "tweety"}
  {"first": "road"}
  {"first": "wile"}
  {"first": "pepe"}
  {"first": "foghorn"}
  Usage: avro cat|write [options] FILE [FILE...]

  avro: error: Can't open last - [Errno 2] No such file or directory: 'last'
  $ echo $?
  2

  The issue is that 'first, last' is not parsed correctly. The white
  space between "," and "last" is parsed in a way that makes "last" been
  interpreted as a "FILE" instead of an option.

  
  Without the white space, that works fine:

  $ /home/tony/AVRO/avro-FromFreshIBMSOEGitHub/lang/py/build/test/../scripts/avro cat /tmp/REIX --fields 'first,last'
  {"last": "duck", "first": "daffy"}
  {"last": "bunny", "first": "bugs"}
  {"last": "", "first": "tweety"}
  {"last": "runner", "first": "road"}
  {"last": "e", "first": "wile"}
  {"last": "le pew", "first": "pepe"}
  {"last": "leghorn", "first": "foghorn"}
  $ echo $?
  0

  
  - On Ubuntu / x86_64, both 'first, last' and 'first,last' are OK:

  $ pwd
  ..../lang/py
  $ export PYTHONPATH=./build/src
  $ build/test/../scripts/avro cat /tmp/REIX --fields 'first, last'
  {"last": "duck", "first": "daffy"}
  {"last": "bunny", "first": "bugs"}
  {"last": "", "first": "tweety"}
  {"last": "runner", "first": "road"}
  {"last": "e", "first": "wile"}
  {"last": "le pew", "first": "pepe"}
  {"last": "leghorn", "first": "foghorn"}
  $ echo $?
  0

  
  Source code of: /home/tony/AVRO/avro-FromFreshIBMSOEGitHub/lang/py/build/test/../scripts/avro  is:

  def main(argv=None):
      import sys
      from optparse import OptionParser, OptionGroup

      argv = argv or sys.argv

      parser = OptionParser(description="Display/write for Avro files",
                        version="1.7.4",
                        usage="usage: %prog cat|write [options] FILE [FILE...]")
  ....

  So, OptionParser() does not work on PPC64 like it does on x86_64.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/python2.7/+bug/1378888/+subscriptions


References