1
0
Fork 0
mirror of synced 2024-11-05 09:18:59 -05:00
yadm/test/test_cygwin_copy.py
Tim Byrne e7f9616b39
Rewrite testing system (#119)
The new test system is written with py.test. These tests are more
comprehensive, run faster by an order of magnitude, and are far more
maintainable. The tests themselves conform to PEP8.
2019-02-20 07:48:25 -06:00

59 lines
1.7 KiB
Python

"""Test yadm.cygwin_copy"""
import os
import pytest
@pytest.mark.parametrize(
'setting, is_cygwin, expect_link, pre_existing', [
(None, False, True, None),
(True, False, True, None),
(False, False, True, None),
(None, True, True, None),
(True, True, False, None),
(False, True, True, None),
(True, True, False, 'link'),
(True, True, False, 'file'),
],
ids=[
'unset, non-cygwin',
'true, non-cygwin',
'false, non-cygwin',
'unset, cygwin',
'true, cygwin',
'false, cygwin',
'pre-existing symlink',
'pre-existing file',
])
@pytest.mark.usefixtures('ds1_copy')
def test_cygwin_copy(
runner, yadm_y, paths, cygwin_sys, tst_sys,
setting, is_cygwin, expect_link, pre_existing):
"""Test yadm.cygwin_copy"""
if setting is not None:
os.system(' '.join(yadm_y('config', 'yadm.cygwin-copy', str(setting))))
expected_content = f'test_cygwin_copy##{tst_sys}'
alt_path = paths.work.join('test_cygwin_copy')
if pre_existing == 'symlink':
alt_path.mklinkto(expected_content)
elif pre_existing == 'file':
alt_path.write('wrong content')
uname_path = paths.root.join('tmp').mkdir()
if is_cygwin:
uname = uname_path.join('uname')
uname.write(f'#!/bin/sh\necho "{cygwin_sys}"\n')
uname.chmod(0o777)
expected_content = f'test_cygwin_copy##{cygwin_sys}'
env = os.environ.copy()
env['PATH'] = ':'.join([str(uname_path), env['PATH']])
run = runner(yadm_y('alt'), env=env)
assert run.success
assert run.err == ''
assert 'Linking' in run.out
assert alt_path.read() == expected_content
assert alt_path.islink() == expect_link