Skip to content

Commit

Permalink
refactor: we no longer need to protect against UnicodeError, it was o…
Browse files Browse the repository at this point in the history
…nly on 3.6

This was the failure it was protecting against on Python 3.6:

```
  ___________________________ ProcessTest.test_lang_c ____________________________
  [gw0] linux -- Python 3.6.15 /home/runner/work/coveragepy/coveragepy/.tox/py36/bin/python

  self = <tests.test_process.ProcessTest object at 0x7fe57e63b198>

      @pytest.mark.skipif(env.PYPY, reason="PyPy is unreliable with this test")
      # Jython as of 2.7.1rc3 won't compile a filename that isn't utf-8.
      @pytest.mark.skipif(env.JYTHON, reason="Jython can't handle this test")
      def test_lang_c(self):
          # LANG=C forces getfilesystemencoding on Linux to 'ascii', which causes
          # failures with non-ascii file names. We don't want to make a real file
          # with strange characters, though, because that gets the test runners
          # tangled up.  This will isolate the concerns to the coverage.py code.
          # #533
          self.make_file("weird_file.py", r"""
              globs = {}
              code = "a = 1\nb = 2\n"
              exec(compile(code, "wut\xe9\xea\xeb\xec\x01\x02.py", 'exec'), globs)
              print(globs['a'])
              print(globs['b'])
              """)
          self.set_environ("LANG", "C")
          out = self.run_command("coverage run weird_file.py")
  >       assert out == "1\n2\n"
  E       assert 'Traceback (m...ion by zero\n' == '1\n2\n'
  E         - 1
  E         - 2
  E         + Traceback (most recent call last):
  E         +   File "/home/runner/work/coveragepy/coveragepy/coverage/files.py", line 149, in abs_file
  E         +     path = os.path.realpath(path)
  E         +   File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/posixpath.py", line 395, in realpath
  E         +     path, ok = _joinrealpath(filename[:0], filename, {})
  E         +   File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/posixpath.py", line 429, in _joinrealpath
  E         +     if not islink(newpath):
  E         +   File "/opt/hostedtoolcache/Python/3.6.15/x64/lib/python3.6/posixpath.py", line 171, in islink
  E         +     st = os.lstat(path)
  E         + UnicodeEncodeError: 'ascii' codec can't encode characters in position 3-6: ordinal not in range(128)
```
  • Loading branch information
nedbat committed Jan 3, 2022
1 parent 556974f commit 16fd431
Showing 1 changed file with 1 addition and 7 deletions.
8 changes: 1 addition & 7 deletions coverage/files.py
Expand Up @@ -145,13 +145,7 @@ def actual_path(path):
@contract(returns='unicode')
def abs_file(path):
"""Return the absolute normalized form of `path`."""
try:
path = os.path.realpath(path)
except UnicodeError:
pass
path = os.path.abspath(path)
path = actual_path(path)
return path
return actual_path(os.path.abspath(os.path.realpath(path)))


def python_reported_file(filename):
Expand Down

0 comments on commit 16fd431

Please sign in to comment.