Ignore encrypted files (#69)
Append the contents of .config/yadm/encrypt to the repo's git ignore list. This is to help prevent accidentally committing unencrypted sensitive data.pull/174/head
parent
f3249e00b5
commit
0c9468c9b5
@ -0,0 +1,66 @@ |
||||
"""Unit tests: exclude_encrypted""" |
||||
import pytest |
||||
|
||||
|
||||
@pytest.mark.parametrize( |
||||
'exclude', ['missing', 'outdated', 'up-to-date']) |
||||
@pytest.mark.parametrize( |
||||
'encrypt_exists', [True, False], ids=['encrypt', 'no-encrypt']) |
||||
@pytest.mark.parametrize( |
||||
'auto_exclude', [True, False], ids=['enabled', 'disabled']) |
||||
def test_exclude_encrypted( |
||||
runner, tmpdir, yadm, encrypt_exists, auto_exclude, exclude): |
||||
"""Test exclude_encrypted()""" |
||||
|
||||
header = ( |
||||
"# yadm-auto-excludes\n" |
||||
"# This section is managed by yadm.\n" |
||||
"# Any edits below will be lost.\n" |
||||
) |
||||
|
||||
config_function = 'function config() { echo "false";}' |
||||
if auto_exclude: |
||||
config_function = 'function config() { return; }' |
||||
|
||||
encrypt_file = tmpdir.join('encrypt_file') |
||||
repo_dir = tmpdir.join('repodir') |
||||
exclude_file = repo_dir.join('info/exclude') |
||||
|
||||
if encrypt_exists: |
||||
encrypt_file.write('test-encrypt-data\n', ensure=True) |
||||
if exclude == 'outdated': |
||||
exclude_file.write( |
||||
f'original-exclude\n{header}outdated\n', ensure=True) |
||||
elif exclude == 'up-to-date': |
||||
exclude_file.write( |
||||
f'original-exclude\n{header}test-encrypt-data\n', ensure=True) |
||||
|
||||
script = f""" |
||||
YADM_TEST=1 source {yadm} |
||||
{config_function} |
||||
DEBUG=1 |
||||
YADM_ENCRYPT="{encrypt_file}" |
||||
YADM_REPO="{repo_dir}" |
||||
exclude_encrypted |
||||
""" |
||||
run = runner(command=['bash'], inp=script) |
||||
assert run.success |
||||
assert run.err == '' |
||||
|
||||
if auto_exclude: |
||||
if encrypt_exists: |
||||
assert exclude_file.exists() |
||||
if exclude == 'missing': |
||||
assert exclude_file.read() == f'{header}test-encrypt-data\n' |
||||
else: |
||||
assert exclude_file.read() == ( |
||||
'original-exclude\n' |
||||
f'{header}test-encrypt-data\n') |
||||
if exclude != 'up-to-date': |
||||
assert f'Updating {exclude_file}' in run.out |
||||
else: |
||||
assert run.out == '' |
||||
else: |
||||
assert run.out == '' |
||||
else: |
||||
assert run.out == '' |
Loading…
Reference in new issue