1
0
mirror of https://github.com/deadc0de6/dotdrop.git synced 2026-02-04 18:34:48 +00:00

Testing merge funcationalities in import_configs

This commit is contained in:
Davide Laezza
2019-04-22 00:38:33 +02:00
parent bcf89478ba
commit 124336ed57
4 changed files with 305 additions and 65 deletions

View File

@@ -5,10 +5,12 @@ helpers for the unittests
"""
import os
import random
import shutil
import string
import random
import tempfile
from unittest import TestCase
import yaml
from dotdrop.options import Options, ENV_NODEBUG
@@ -18,6 +20,30 @@ from dotdrop.utils import strip_home
TMPSUFFIX = '-dotdrop-tests'
class SubsetTestCase(TestCase):
def assertIsSubset(self, sub, sup):
for subKey, subValue in sub.items():
self.assertIn(subKey, sup)
supValue = sup[subKey]
if isinstance(subValue, str):
self.assertEquals(subValue, supValue)
continue
if isinstance(subValue, dict):
self.assertIsSubset(subValue, supValue)
continue
try:
iter(subValue)
self.assertTrue(all(
subItem in supValue
for subItem in subValue
))
except TypeError:
self.assertEquals(subValue, supValue)
def clean(path):
"""Delete file or directory"""
if not os.path.exists(path):
@@ -157,7 +183,8 @@ def yaml_dashed_list(items, indent=0):
def create_fake_config(directory, configname='config.yaml',
dotpath='dotfiles', backup=True, create=True,
import_configs=()):
import_configs=(), import_actions=(),
import_variables=()):
"""Create a fake config file"""
path = os.path.join(directory, configname)
workdir = os.path.join(directory, 'workdir')
@@ -167,16 +194,36 @@ def create_fake_config(directory, configname='config.yaml',
f.write(' create: {}\n'.format(str(create)))
f.write(' dotpath: {}\n'.format(dotpath))
f.write(' workdir: {}\n'.format(workdir))
if import_actions:
f.write(' import_actions:\n')
f.write(yaml_dashed_list(import_actions, 4))
if import_configs:
f.write(' import_configs:\n')
f.write(yaml_dashed_list(import_configs, 4))
if import_variables:
f.write(' import_variables:\n')
f.write(yaml_dashed_list(import_variables, 4))
f.write('dotfiles:\n')
f.write('profiles:\n')
f.write('actions:\n')
return path
def populate_fake_config(config, dotfiles=(), profiles=()):
def create_yaml_keyval(pairs, parent_dir=None, top_key=None):
if top_key:
pairs = {top_key: pairs}
if not parent_dir:
parent_dir = get_tempdir()
fd, file_name = tempfile.mkstemp(dir=parent_dir, suffix='.yaml', text=True)
with os.fdopen(fd, 'w') as f:
yaml.safe_dump(pairs, f)
return file_name
def populate_fake_config(config, dotfiles=(), profiles=(), actions=(),
trans=(), trans_write=(), variables=(),
dynvariables=()):
"""Adds some juicy content to config files"""
is_path = isinstance(config, str)
if is_path:
@@ -186,6 +233,11 @@ def populate_fake_config(config, dotfiles=(), profiles=()):
config['dotfiles'] = dotfiles
config['profiles'] = profiles
config['actions'] = actions
config['trans'] = trans
config['trans_write'] = trans_write
config['variables'] = variables
config['dynvariables'] = dynvariables
if is_path:
with open(config_path, 'w') as config_file: