New issue
Advanced search Search tips

Issue 815048 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner: ----
Closed: Feb 2018
Cc:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 3
Type: Bug



Sign in to add a comment

chromite: commandline_unittest does not pass locally

Project Member Reported by nya@chromium.org, Feb 23 2018

Issue description

commandline_unittest is failing locally whereas it looks passing on buildbots. Maybe Python environment is a bit different?

Below is the local log. It looks caused by passing generators to argparse, which makes sense.


$ ../../chromite/lib/commandline_unittest
................................14:28:25: INFO: RunCommand: /cmd arg1 arg2 in /mnt/host/source
14:28:25: INFO: RunCommand: /cmd arg1 arg2 in /mnt/host/source
.14:28:25: INFO: RunCommand: /cmd arg1 arg2 in /mnt/host/source
14:28:25: INFO: RunCommand: /cmd arg1 arg2 in /mnt/host/source
14:28:25: INFO: RunCommand: /cmd arg1 arg2 in /mnt/host/source
..EEEEEE....
======================================================================
ERROR: [chromite.lib.commandline_unittest] SplitExtendActionTest.testEmptyArg
Make sure '' produces nothing.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/mnt/host/source/chromite/lib/timeout_util.py", line 191, in TimeoutWrapper
    return func(*args, **kwargs)
  File "/mnt/host/source/chromite/lib/commandline_unittest.py", line 331, in testEmptyArg
    self._CheckArgs(['', ''], [])
  File "/mnt/host/source/chromite/lib/commandline_unittest.py", line 308, in _CheckArgs
    cros_build_lib.iflatten_instance(['-x', x] for x in cliargs))
  File "/mnt/host/source/chromite/lib/commandline.py", line 787, in parse_args
    self, args=args, namespace=namespace)
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1747, in parse_args
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1779, in parse_known_args
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1985, in _parse_known_args
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1917, in consume_optional
TypeError: 'generator' object has no attribute '__getitem__'

======================================================================
ERROR: [chromite.lib.commandline_unittest] SplitExtendActionTest.testEmptyWhitespaceArg
Make sure whitespace produces nothing.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/mnt/host/source/chromite/lib/timeout_util.py", line 191, in TimeoutWrapper
    return func(*args, **kwargs)
  File "/mnt/host/source/chromite/lib/commandline_unittest.py", line 335, in testEmptyWhitespaceArg
    self._CheckArgs([' ', '\t', '  \t   '], [])
  File "/mnt/host/source/chromite/lib/commandline_unittest.py", line 308, in _CheckArgs
    cros_build_lib.iflatten_instance(['-x', x] for x in cliargs))
  File "/mnt/host/source/chromite/lib/commandline.py", line 787, in parse_args
    self, args=args, namespace=namespace)
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1747, in parse_args
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1779, in parse_known_args
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1985, in _parse_known_args
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1917, in consume_optional
TypeError: 'generator' object has no attribute '__getitem__'

======================================================================
ERROR: [chromite.lib.commandline_unittest] SplitExtendActionTest.testMultipleMultipleArgs
Verify splitting multiple args works.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/mnt/host/source/chromite/lib/timeout_util.py", line 191, in TimeoutWrapper
    return func(*args, **kwargs)
  File "/mnt/host/source/chromite/lib/commandline_unittest.py", line 347, in testMultipleMultipleArgs
    self._CheckArgs(['a b  c', '', 'x', ' k '], ['a', 'b', 'c', 'x', 'k'])  
  File "/mnt/host/source/chromite/lib/commandline_unittest.py", line 308, in _CheckArgs
    cros_build_lib.iflatten_instance(['-x', x] for x in cliargs))
  File "/mnt/host/source/chromite/lib/commandline.py", line 787, in parse_args
    self, args=args, namespace=namespace)
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1747, in parse_args
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1779, in parse_known_args
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1985, in _parse_known_args
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1917, in consume_optional
TypeError: 'generator' object has no attribute '__getitem__'

======================================================================
ERROR: [chromite.lib.commandline_unittest] SplitExtendActionTest.testMultipleSingleArg
Verify splitting one arg works.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/mnt/host/source/chromite/lib/timeout_util.py", line 191, in TimeoutWrapper
    return func(*args, **kwargs)
  File "/mnt/host/source/chromite/lib/commandline_unittest.py", line 343, in testMultipleSingleArg
    self._CheckArgs(['a b  c\td '], ['a', 'b', 'c', 'd'])
  File "/mnt/host/source/chromite/lib/commandline_unittest.py", line 308, in _CheckArgs
    cros_build_lib.iflatten_instance(['-x', x] for x in cliargs))
  File "/mnt/host/source/chromite/lib/commandline.py", line 787, in parse_args
    self, args=args, namespace=namespace)
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1747, in parse_args
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1779, in parse_known_args
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1985, in _parse_known_args
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1917, in consume_optional
TypeError: 'generator' object has no attribute '__getitem__'

======================================================================
ERROR: [chromite.lib.commandline_unittest] SplitExtendActionTest.testNoArgs 
This is more of a sanity check for resting state.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/mnt/host/source/chromite/lib/timeout_util.py", line 191, in TimeoutWrapper
    return func(*args, **kwargs)
  File "/mnt/host/source/chromite/lib/commandline_unittest.py", line 327, in testNoArgs
    self._CheckArgs([], [])
  File "/mnt/host/source/chromite/lib/commandline_unittest.py", line 308, in _CheckArgs
    cros_build_lib.iflatten_instance(['-x', x] for x in cliargs))
  File "/mnt/host/source/chromite/lib/commandline.py", line 787, in parse_args
    self, args=args, namespace=namespace)
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1747, in parse_args
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1779, in parse_known_args
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1991, in _parse_known_args
TypeError: 'generator' object has no attribute '__getitem__'

======================================================================
ERROR: [chromite.lib.commandline_unittest] SplitExtendActionTest.testSingleSingleArg
Verify splitting one arg works.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/mnt/host/source/chromite/lib/timeout_util.py", line 191, in TimeoutWrapper
    return func(*args, **kwargs)
  File "/mnt/host/source/chromite/lib/commandline_unittest.py", line 339, in testSingleSingleArg
    self._CheckArgs(['a'], ['a'])
  File "/mnt/host/source/chromite/lib/commandline_unittest.py", line 308, in _CheckArgs
    cros_build_lib.iflatten_instance(['-x', x] for x in cliargs))
  File "/mnt/host/source/chromite/lib/commandline.py", line 787, in parse_args
    self, args=args, namespace=namespace)
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1747, in parse_args
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1779, in parse_known_args
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1985, in _parse_known_args
  File "/mnt/hibiki/home/nya/src/cros/chromite/third_party/argparse.py", line 1917, in consume_optional
TypeError: 'generator' object has no attribute '__getitem__'

----------------------------------------------------------------------
Ran 45 tests in 0.203s

FAILED (errors=6)
 

Comment 1 by vapier@chromium.org, Feb 23 2018

try running `find -name '*.pyc' -delete` in the chromite dir

Comment 2 by nya@chromium.org, Feb 23 2018

Oh my, the error went away by deleting *.pyc. Do we have a bug tracking general *.pyc issue?

Comment 3 by vapier@chromium.org, Feb 23 2018

python is supposed to handle this stuff automatically :/

maybe we should change the test runner to clean pyc files ?

Comment 4 by nya@chromium.org, Feb 23 2018

Status: WontFix (was: Untriaged)
Ah now I see, chromite/third_party/argparse.py was deleted at some point, but argparse.pyc remained there.

The most elegant way to avoid this issue is to migrate to Python3... __pycache__ does not have the issue. But it won't happen soon.

I wish we can have some workaround, but I don't come up with one.

Anyway, thanks vapier@ for your quick response.

Sign in to add a comment