Exemplo n.º 1
0
def test_not_in_imports(input_path: Text, tmpdir_factory: TempdirFactory):
    root = tmpdir_factory.mktemp("Parent Bot")
    config_path = str(root / "config.yml")
    utils.dump_obj_as_yaml_to_file(root / "config.yml",
                                   {"imports": ["A/A/A", "A/B/A"]})
    importer = SkillSelector(config_path, project_directory=os.getcwd())

    assert not importer.is_imported(input_path)
Exemplo n.º 2
0
def test_single_additional_file(tmpdir_factory):
    root = tmpdir_factory.mktemp("Parent Bot")
    config_path = str(root / "config.yml")
    empty_config = {}
    utils.dump_obj_as_yaml_to_file(config_path, empty_config)

    additional_file = root / "directory" / "file.yml"
    additional_file.write({}, ensure=True)

    selector = SkillSelector(config_path,
                             training_data_paths=str(additional_file))

    assert selector.is_imported(str(additional_file))
Exemplo n.º 3
0
def test_load_if_subskill_is_more_specific_than_parent(
        tmpdir_factory: TempdirFactory):
    root = tmpdir_factory.mktemp("Parent Bot")
    config_path = str(root / "config.yml")
    utils.dump_obj_as_yaml_to_file(root / "config.yml", {})

    skill_a_directory = root / "Skill A"
    skill_a_directory.mkdir()
    skill_a_imports = {"imports": ["Skill B"]}
    utils.dump_obj_as_yaml_to_file(skill_a_directory / "config.yml",
                                   skill_a_imports)

    actual = SkillSelector(config_path)

    assert actual.is_imported(str(skill_a_directory))
Exemplo n.º 4
0
def test_load_from_none(input_dict: Dict, tmpdir_factory: TempdirFactory):
    root = tmpdir_factory.mktemp("Parent Bot")
    config_path = root / "config.yml"
    utils.dump_obj_as_yaml_to_file(root / "config.yml", input_dict)

    actual = SkillSelector(str(config_path))

    assert actual._imports == set()
Exemplo n.º 5
0
def test_importing_additional_files(tmpdir_factory):
    root = tmpdir_factory.mktemp("Parent Bot")
    config = {"imports": ["bots/Bot A"]}
    config_path = str(root / "config.yml")
    utils.dump_obj_as_yaml_to_file(config_path, config)

    additional_file = root / "directory" / "file.md"

    # create intermediate directories and fake files
    additional_file.write("""## story""", ensure=True)
    selector = SkillSelector(
        config_path,
        training_data_paths=[str(root / "directory"),
                             str(additional_file)])

    assert selector.is_imported(str(additional_file))
    assert str(additional_file) in selector._story_paths
Exemplo n.º 6
0
def test_load_imports_without_imports(tmpdir_factory: TempdirFactory):
    empty_config = {}
    root = tmpdir_factory.mktemp("Parent Bot")
    utils.dump_obj_as_yaml_to_file(root / "config.yml", empty_config)

    skill_a_directory = root / "Skill A"
    skill_a_directory.mkdir()
    utils.dump_obj_as_yaml_to_file(skill_a_directory / "config.yml",
                                   empty_config)

    skill_b_directory = root / "Skill B"
    skill_b_directory.mkdir()
    utils.dump_obj_as_yaml_to_file(skill_b_directory / "config.yml",
                                   empty_config)

    actual = SkillSelector(str(root / "config.yml"))

    assert actual.is_imported(str(root / "Skill C"))
Exemplo n.º 7
0
def test_not_importing_not_relevant_additional_files(tmpdir_factory):
    root = tmpdir_factory.mktemp("Parent Bot")
    config = {"imports": ["bots/Bot A"]}
    config_path = str(root / "config.yml")
    utils.dump_obj_as_yaml_to_file(config_path, config)

    additional_file = root / "directory" / "file.yml"
    selector = SkillSelector(
        config_path,
        training_data_paths=[str(root / "data"),
                             str(additional_file)])

    not_relevant_file1 = root / "data" / "another directory" / "file.yml"
    not_relevant_file1.write({}, ensure=True)
    not_relevant_file2 = root / "directory" / "another_file.yml"
    not_relevant_file2.write({}, ensure=True)

    assert not selector.is_imported(str(not_relevant_file1))
    assert not selector.is_imported(str(not_relevant_file2))
Exemplo n.º 8
0
def test_import_outside_project_directory(tmpdir_factory):
    root = tmpdir_factory.mktemp("Parent Bot")
    skill_imports = {"imports": ["Skill A"]}
    utils.dump_obj_as_yaml_to_file(root / "config.yml", skill_imports)

    skill_a_directory = root / "Skill A"
    skill_a_directory.mkdir()
    skill_a_imports = {"imports": ["../Skill B"]}
    utils.dump_obj_as_yaml_to_file(skill_a_directory / "config.yml",
                                   skill_a_imports)

    skill_b_directory = root / "Skill B"
    skill_b_directory.mkdir()
    skill_b_imports = {"imports": ["../Skill C"]}
    utils.dump_obj_as_yaml_to_file(skill_b_directory / "config.yml",
                                   skill_b_imports)

    actual = SkillSelector(str(skill_a_directory / "config.yml"))

    assert actual._imports == {str(skill_b_directory), str(root / "Skill C")}
Exemplo n.º 9
0
def test_load_imports_from_directory_tree(tmpdir_factory: TempdirFactory):
    root = tmpdir_factory.mktemp("Parent Bot")
    root_imports = {"imports": ["Skill A"]}
    utils.dump_obj_as_yaml_to_file(root / "config.yml", root_imports)

    skill_a_directory = root / "Skill A"
    skill_a_directory.mkdir()
    skill_a_imports = {"imports": ["../Skill B"]}
    utils.dump_obj_as_yaml_to_file(skill_a_directory / "config.yml",
                                   skill_a_imports)

    skill_b_directory = root / "Skill B"
    skill_b_directory.mkdir()
    skill_b_imports = {"some other": ["../Skill C"]}
    utils.dump_obj_as_yaml_to_file(skill_b_directory / "config.yml",
                                   skill_b_imports)

    skill_b_subskill_directory = skill_b_directory / "Skill B-1"
    skill_b_subskill_directory.mkdir()
    skill_b_1_imports = {"imports": ["../../Skill A"]}
    # Check if loading from `.yaml` also works
    utils.dump_obj_as_yaml_to_file(skill_b_subskill_directory / "config.yaml",
                                   skill_b_1_imports)

    # should not be imported
    subdirectory_3 = root / "Skill C"
    subdirectory_3.mkdir()

    expected = {
        os.path.join(str(skill_a_directory)),
        os.path.join(str(skill_b_directory)),
    }

    actual = SkillSelector(str(root / "config.yml"))

    assert actual._imports == expected