mirror of
https://github.com/TheLocehiliosan/yadm
synced 2024-10-27 20:34:27 +00:00
fb1181c8a9
While this feature was added back in version 1.05, tests were never added for it. These tests have identified bugs in the directory alternates.
71 lines
2.3 KiB
Python
71 lines
2.3 KiB
Python
"""Testing Utilities
|
|
|
|
This module holds values/functions common to multiple tests.
|
|
"""
|
|
|
|
import os
|
|
|
|
ALT_FILE1 = 'test_alt'
|
|
ALT_FILE2 = 'test alt/test alt'
|
|
ALT_DIR = 'test alt/test alt dir'
|
|
|
|
# Directory based alternates must have a tracked contained file.
|
|
# This will be the test contained file name
|
|
CONTAINED = 'contained_file'
|
|
|
|
|
|
def set_local(paths, variable, value):
|
|
"""Set local override"""
|
|
os.system(
|
|
f'GIT_DIR={str(paths.repo)} '
|
|
f'git config --local "local.{variable}" "{value}"'
|
|
)
|
|
|
|
|
|
def create_alt_files(paths, suffix,
|
|
preserve=False, tracked=True,
|
|
encrypt=False, exclude=False,
|
|
content=None):
|
|
"""Create new files, and add to the repo
|
|
|
|
This is used for testing alternate files. In each case, a suffix is
|
|
appended to two standard file paths. Particulars of the file creation and
|
|
repo handling are dependent upon the function arguments.
|
|
"""
|
|
|
|
if not preserve:
|
|
for remove_path in (ALT_FILE1, ALT_FILE2, ALT_DIR):
|
|
if paths.work.join(remove_path).exists():
|
|
paths.work.join(remove_path).remove(rec=1, ignore_errors=True)
|
|
assert not paths.work.join(remove_path).exists()
|
|
|
|
new_file1 = paths.work.join(ALT_FILE1 + suffix)
|
|
new_file1.write(ALT_FILE1 + suffix, ensure=True)
|
|
new_file2 = paths.work.join(ALT_FILE2 + suffix)
|
|
new_file2.write(ALT_FILE2 + suffix, ensure=True)
|
|
new_dir = paths.work.join(ALT_DIR + suffix).join(CONTAINED)
|
|
new_dir.write(ALT_DIR + suffix, ensure=True)
|
|
|
|
# Do not test directory support for jinja alternates
|
|
test_paths = [new_file1, new_file2]
|
|
test_names = [ALT_FILE1, ALT_FILE2]
|
|
if suffix != '##yadm.j2':
|
|
test_paths += [new_dir]
|
|
test_names += [ALT_DIR]
|
|
|
|
for test_path in test_paths:
|
|
if content:
|
|
test_path.write('\n' + content, mode='a', ensure=True)
|
|
assert test_path.exists()
|
|
|
|
if tracked:
|
|
for track_path in test_paths:
|
|
os.system(f'GIT_DIR={str(paths.repo)} git add "{track_path}"')
|
|
os.system(f'GIT_DIR={str(paths.repo)} git commit -m "Add test files"')
|
|
|
|
if encrypt:
|
|
for encrypt_name in test_names:
|
|
paths.encrypt.write(f'{encrypt_name + suffix}\n', mode='a')
|
|
if exclude:
|
|
paths.encrypt.write(f'!{encrypt_name + suffix}\n', mode='a')
|