def test_validate_example_addon(yaml_filename, valid): with Path(yaml_filename).open() as f: if valid: libflavour.Addon(f.read()) else: with pytest.raises(strictyaml.exceptions.YAMLValidationError): libflavour.Addon(f.read())
def test_update_data(yaml_filename, data, update_values, updated_data): with Path(yaml_filename).open() as f: addon = libflavour.Addon(f.read()) assert addon.fields_json == data addon.update_values(update_values) addon.validate() assert addon.fields_json == updated_data
def test_validation(yaml_filename, data, expected_errors, expected_values): yaml_text = Path(yaml_filename).read_text() addon = libflavour.Addon(yaml_text) addon.update_values(data) assert addon.validate() == expected_errors if expected_values: assert addon.get_values() == expected_values
def test_update_data_2(yaml_filename, data, update_values): with Path(yaml_filename).open() as f: addon = libflavour.Addon(f.read()) assert addon.fields_json == data addon.validate() == {} addon.update_values(update_values) addon.validate() == {"languages": "Not a integer"}
def remove(): yaml = click.get_text_stream("stdin").read() log("calling parent: /bin/fam-flavour/remove") process = subprocess.Popen( ["/bin/fam-flavour/remove"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, ) process.stdin.write(str.encode(yaml)) outs, errs = process.communicate() print(outs.decode("utf-8").strip()) if process.returncode: if errs: print(errs.decode("utf-8").strip()) sys.exit(process.returncode) process.stdin.close() yaml_data = libflavour.Addon(yaml)._data log(f"removing: {yaml_data['meta']['name']}") log("Updating requirements.in") update_requirements_in(str(yaml_data["install"]["artifact"])) log("Updating settings.py") update_settings_py(str(yaml_data["install"]["addonname"])) log("Removing addons folder") remove_addons_folder(str(yaml_data["install"]["addonname"]))
def add(): yaml = click.get_text_stream("stdin").read() yaml_data = libflavour.Addon(yaml)._data fuzzy_check_if_addon_already_exists(yaml_data, fail=True) log("calling parent: /bin/fam-flavour/add") process = subprocess.Popen( ["/bin/fam-flavour/add"], stdin=subprocess.PIPE, stdout=subprocess.PIPE ) process.stdin.write(str.encode(yaml)) outs, errs = process.communicate() print(outs.decode("utf-8").strip()) if process.returncode: if errs: print(errs.decode("utf-8").strip()) sys.exit(process.returncode) process.stdin.close() log(f"installing: {yaml_data['meta']['name']}") log("Updating requirements.in") update_requirements_in(str(yaml_data["install"]["artifact"])) log("Updating settings.py") update_settings_py(str(yaml_data["install"]["addonname"])) log("Copying files from package") copy_files_from_artifact(str(yaml_data["install"]["artifact"]))
def test_get_values(yaml_filename, data, expected_values, expected_with_defaults): yaml_text = Path(yaml_filename).read_text() addon = libflavour.Addon(yaml_text) for field in addon.fields: if field.name in data: field.value = data[field.name] assert addon.get_values(include_defaults=False) == expected_values assert addon.get_values(include_defaults=True) == expected_with_defaults
def add(): yaml = click.get_text_stream("stdin").read() yaml_data = libflavour.Addon(yaml).data yaml_hash = save_yaml(yaml) add_requirement( flavour_package_name=yaml_data["meta"]["name"], platform_fam=os.environ["FAM_IDENTIFIER"], version=str(yaml_data["meta"]["version"]), yaml_hash=yaml_hash, )
def check_structure(yaml): libflavour.Addon(yaml)
def test_data_function(yaml_filename, data): with Path(yaml_filename).open() as f: addon = libflavour.Addon(f.read()) assert addon.fields[0].data == data