Exemple #1
0
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())
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
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"}
Exemple #5
0
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"]))
Exemple #6
0
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"]))
Exemple #7
0
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
Exemple #8
0
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,
    )
Exemple #9
0
def check_structure(yaml):
    libflavour.Addon(yaml)
Exemple #10
0
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