Следующий модульный тест проходит на всех комбинациях linux / python и windows / python:
import os
import tempfile
from contextlib import contextmanager
def test_cd_to_tempdir():
initial_cwd = os.getcwd()
abspath_tmpdir = tempfile.mkdtemp()
try:
assert os.path.isabs(abspath_tmpdir)
os.chdir(abspath_tmpdir)
curdir = os.getcwd()
assert initial_cwd != curdir
assert curdir == abspath_tmpdir
finally:
os.chdir(initial_cwd) # must exit directory..
os.rmdir(abspath_tmpdir) # ..before it can be removed
и завершается с ошибкой на osx (проверено только 3.7.4) со следующей ошибкой:
try:
assert os.path.isabs(abspath_tmpdir)
os.chdir(abspath_tmpdir)
curdir = os.getcwd()
assert initial_cwd != curdir
> assert curdir == abspath_tmpdir
E AssertionError: assert '/private/var...T/tmpoz7eo_yj' == '/var/folders/...T/tmpoz7eo_yj'
E - /private/var/folders/17/5mc7816d3mndxjqgplq6057w0000gn/T/tmpoz7eo_yj
E ? --------
E + /var/folders/17/5mc7816d3mndxjqgplq6057w0000gn/T/tmpoz7eo_yj
Я не макинтош, поэтому я не знаю, как работает префикс /private/
(некоторые поиски в Google заставляют меня поверить, что это Mac-эквивалент Windows %APPDATA%
).
Есть ли способ написать этот код кросс-платформенным способом?
(ход travis на https://travis -ci.org / datakortet / yamldirs / jobs / 607842061 , если кто-нибудьзаинтересован).