2 from __future__ import absolute_import
3 from os.path import basename, dirname, realpath
5 from traceback import extract_stack
11 sys.path[:0] = ['lib']
13 from bup import helpers
14 from bup.compat import environ, fsencode
17 _bup_src_top = realpath(dirname(fsencode(__file__)))
19 # The "pwd -P" here may not be appropriate in the long run, but we
20 # need it until we settle the relevant drecurse/exclusion questions:
21 # https://groups.google.com/forum/#!topic/bup-list/9ke-Mbp10Q0
22 os.chdir(realpath(os.getcwd()))
24 def bup_test_sort_order(item):
25 # Pull some slower tests forward to speed parallel runs
26 if item.fspath.basename in ('test_get.py', 'test-index.sh'):
27 return (0, str(item.fspath))
28 return (1, str(item.fspath))
30 def pytest_collection_modifyitems(session, config, items):
31 items.sort(key=bup_test_sort_order)
33 @pytest.fixture(autouse=True)
34 def no_lingering_errors():
36 if helpers.saved_errors:
38 src_file, src_line, src_func, src_txt = bt[-4]
39 msg = 'saved_errors ' + repr(helpers.saved_errors)
40 assert False, '%s:%-4d %s' % (basename(src_file),
44 helpers.clear_errors()
47 helpers.clear_errors()
49 @pytest.fixture(autouse=True)
50 def ephemeral_env_changes():
51 orig_env = environ.copy()
53 for k, orig_v in orig_env.items():
59 for k in environ.keys():
64 os.chdir(_bup_src_top)
71 subprocess.call([b'chmod', b'-R', b'u+rwX', bytes(tmp_path)])
72 # FIXME: delete only if there are no errors
73 #subprocess.call(['rm', '-rf', tmpdir])