# -*- coding: utf-8 -*- from json import loads from os import listdir from os.path import dirname, abspath, join, normpath, splitext # import warnings # from tiramisu.error import ValueWarning from tiramisu_json_api import Config # warnings.simplefilter("always", ValueWarning) def list_data(ext='.json'): datadir = join(normpath(dirname(abspath(__file__))), 'data') filenames = listdir(datadir) filenames.sort() for filename in filenames: if filename.endswith(ext): yield join(datadir, filename) def test_dict(): debug = False # debug = True for filename in list_data(): if debug: print('test_jsons', filename) with open(filename, 'r') as fh: json = loads(fh.read()) # config = Config(json) with open(filename[:-4] + 'dict', 'r') as fh: dico = loads(fh.read()) if debug: from pprint import pprint pprint(dico) print('-----') pprint(config.value.dict()) assert dico == config.value.dict() def test_get(): for filename in list_data(): if 'master' in filename: continue with open(filename, 'r') as fh: json = loads(fh.read()) config = Config(json) with open(filename[:-4] + 'dict', 'r') as fh: dico = loads(fh.read()) for key, value in dico.items(): assert value == config.option(key).value.get() def test_owner(): for filename in list_data(): if 'master' in filename: continue with open(filename, 'r') as fh: json = loads(fh.read()) config = Config(json) with open(filename[:-4] + 'owner', 'r') as fh: dico = loads(fh.read()) for key, value in dico.items(): assert value == config.option(key).owner.get() def test_prop(): for filename in list_data(): if 'master' in filename: continue with open(filename, 'r') as fh: json = loads(fh.read()) config = Config(json) with open(filename[:-4] + 'prop', 'r') as fh: dico = loads(fh.read()) for key, value in dico.items(): props = set(config.option(key).property.get()) if 'clearable' in props: props.remove('clearable') assert set(value) == props, 'error in {}'.format(filename) def test_prop2(): for filename in list_data(): if 'master' in filename: continue with open(filename, 'r') as fh: json = loads(fh.read()) config = Config(json) with open(filename[:-4] + 'prop2', 'r') as fh: dico = loads(fh.read()) for key, value in dico.items(): props = set(config.option(key).property.get(True)) assert set(value) == props, 'error in {}'.format(filename) def test_info(): for filename in list_data(): if 'master' in filename: continue with open(filename, 'r') as fh: json = loads(fh.read()) config = Config(json) with open(filename[:-4] + 'info', 'r') as fh: dico = loads(fh.read()) for key, values in dico.items(): for info, value in values.items(): if info == 'type' and value in ['filename', 'ip', 'email', 'username']: continue assert getattr(config.option(key).option, info)() == value, 'error for {} in {}'.format(info, filename) def test_mod(): debug = False # debug = True for filename in list_data('.mod1'): if 'master' in filename: continue if debug: print('test_mod', filename) with open(filename[:-4] + 'json', 'r') as fh: json = loads(fh.read()) # config = Config(json) with open(filename) as fh: mod = loads(fh.read()) eval(mod['cmd']) # if debug: from pprint import pprint pprint(config.updates) print('----------------') pprint(mod['body']['updates']) assert config.updates == mod['body']['updates'] # with open(filename[:-4] + 'dict1', 'r') as fh: dico1 = loads(fh.read()) assert dico1 == config.value.dict() # with open(filename[:-4] + 'updates1', 'r') as fh: data = loads(fh.read()) if debug: from pprint import pprint pprint(data) config.updates_data(data) assert dico1 == config.value.dict()