Skip to content

Unit test suite under Python 3.4 fails if run after other suites #117

@plamut

Description

@plamut

Running the default unit tests session:

$ nox -f noxfile.py -s unit_tests

results in an error when computing coverage:

traceback
Traceback (most recent call last):
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/coverage/data.py", line 293, in read_file
    self.read_fileobj(f)
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/coverage/data.py", line 271, in read_fileobj
    data = self._read_raw_data(file_obj)
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/coverage/data.py", line 311, in _read_raw_data
    go_away = file_obj.read(len(cls._GO_AWAY))
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/codecs.py", line 313, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x99 in position 99: invalid start byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/bin/py.test", line 10, in <module>
    sys.exit(main())
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/_pytest/config/__init__.py", line 63, in main
    config = _prepareconfig(args, plugins)
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/_pytest/config/__init__.py", line 207, in _prepareconfig
    pluginmanager=pluginmanager, args=args
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/pluggy/hooks.py", line 286, in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/pluggy/manager.py", line 93, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/pluggy/manager.py", line 87, in <lambda>
    firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/pluggy/callers.py", line 203, in _multicall
    gen.send(outcome)
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/_pytest/helpconfig.py", line 94, in pytest_cmdline_parse
    config = outcome.get_result()
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/pluggy/callers.py", line 80, in get_result
    raise ex[1].with_traceback(ex[2])
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/pluggy/callers.py", line 187, in _multicall
    res = hook_impl.function(*args)
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/_pytest/config/__init__.py", line 739, in pytest_cmdline_parse
    self.parse(args)
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/_pytest/config/__init__.py", line 947, in parse
    self._preparse(args, addopts=addopts)
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/_pytest/config/__init__.py", line 903, in _preparse
    early_config=self, args=args, parser=self._parser
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/pluggy/hooks.py", line 286, in __call__
    return self._hookexec(self, self.get_hookimpls(), kwargs)
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/pluggy/manager.py", line 93, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/pluggy/manager.py", line 87, in <lambda>
    firstresult=hook.spec.opts.get("firstresult") if hook.spec else False,
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/pluggy/callers.py", line 208, in _multicall
    return outcome.get_result()
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/pluggy/callers.py", line 80, in get_result
    raise ex[1].with_traceback(ex[2])
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/pluggy/callers.py", line 187, in _multicall
    res = hook_impl.function(*args)
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/pytest_cov/plugin.py", line 118, in pytest_load_initial_conftests
    plugin = CovPlugin(early_config.known_args_namespace, early_config.pluginmanager)
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/pytest_cov/plugin.py", line 164, in __init__
    self.start(engine.Central)
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/pytest_cov/plugin.py", line 186, in start
    self.cov_controller.start()
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/pytest_cov/engine.py", line 187, in start
    self.cov.load()
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/coverage/control.py", line 677, in load
    self.data_files.read(self.data)
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/coverage/data.py", line 653, in read
    data.read_file(self.filename)
  File "/home/peter/workspace/google-resumable-media-python/.nox/unit_tests-3-4/lib/python3.4/site-packages/coverage/data.py", line 297, in read_file
    filename, exc.__class__.__name__, exc,
coverage.misc.CoverageException: Couldn't read data from '/home/peter/workspace/google-resumable-media-python/.coverage': UnicodeDecodeError: 'utf-8' codec can't decode byte 0x99 in position 99: invalid start byte

The error does not occur if the .coverage file is removed and Python 3.4 tests are run in isolation:

$ nox -f noxfile.py -s unit_tests-3.4

It might very well be related to the fact that officially pytest does not support Python 3.4.

A quick workaround would be to drop Python 3.4 support in this library, as it is already the case with many (all?) google-cloud-python libraries, unless of course there are good reasons to keep supporting it.

Update: As discussed offline, Python 3.4 support is not needed and should be dropped.

Metadata

Metadata

Assignees

Labels

🚨This issue needs some love.priority: p1Important issue which blocks shipping the next release. Will be fixed prior to next release.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions