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 = MultiProjectImporter(config_path, project_directory=os.getcwd()) assert not importer.is_imported(input_path)
def test_not_in_imports(input_path: Text, tmp_path: Path): config_path = str(tmp_path / "config.yml") utils.dump_obj_as_yaml_to_file( tmp_path / "config.yml", {"imports": ["A/A/A", "A/B/A"]} ) importer = MultiProjectImporter(config_path, project_directory=os.getcwd()) assert not importer.is_imported(input_path)
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 = MultiProjectImporter(config_path, training_data_paths=str(additional_file)) assert selector.is_imported(str(additional_file))
def test_load_if_subproject_is_more_specific_than_parent(tmp_path: Path,): config_path = str(tmp_path / "config.yml") utils.dump_obj_as_yaml_to_file(tmp_path / "config.yml", {}) project_a_directory = tmp_path / "Project A" project_a_directory.mkdir() project_a_imports = {"imports": ["Project B"]} utils.dump_obj_as_yaml_to_file( project_a_directory / "config.yml", project_a_imports ) actual = MultiProjectImporter(config_path) assert actual.is_imported(str(project_a_directory))
def test_single_additional_file(tmp_path: Path): config_path = str(tmp_path / "config.yml") empty_config = {} utils.dump_obj_as_yaml_to_file(config_path, empty_config) additional_file = tmp_path / "directory" / "file.yml" additional_file.parent.mkdir() rasa.shared.utils.io.write_yaml({}, additional_file) selector = MultiProjectImporter( config_path, training_data_paths=str(additional_file) ) assert selector.is_imported(str(additional_file))
def test_load_if_subproject_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", {}) project_a_directory = root / "Project A" project_a_directory.mkdir() project_a_imports = {"imports": ["Project B"]} utils.dump_obj_as_yaml_to_file(project_a_directory / "config.yml", project_a_imports) actual = MultiProjectImporter(config_path) assert actual.is_imported(str(project_a_directory))
def test_load_imports_without_imports(tmp_path: Path): empty_config = {} utils.dump_obj_as_yaml_to_file(tmp_path / "config.yml", empty_config) project_a_directory = tmp_path / "Project A" project_a_directory.mkdir() utils.dump_obj_as_yaml_to_file(project_a_directory / "config.yml", empty_config) project_b_directory = tmp_path / "Project B" project_b_directory.mkdir() utils.dump_obj_as_yaml_to_file(project_b_directory / "config.yml", empty_config) actual = MultiProjectImporter(str(tmp_path / "config.yml")) assert actual.is_imported(str(tmp_path / "Project C"))
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) project_a_directory = root / "Project A" project_a_directory.mkdir() utils.dump_obj_as_yaml_to_file(project_a_directory / "config.yml", empty_config) project_b_directory = root / "Project B" project_b_directory.mkdir() utils.dump_obj_as_yaml_to_file(project_b_directory / "config.yml", empty_config) actual = MultiProjectImporter(str(root / "config.yml")) assert actual.is_imported(str(root / "Project C"))
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 = MultiProjectImporter( 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
def test_importing_additional_files(tmp_path: Path): config = {"imports": ["bots/Bot A"]} config_path = str(tmp_path / "config.yml") utils.dump_obj_as_yaml_to_file(config_path, config) additional_file = tmp_path / "directory" / "file.md" additional_file.parent.mkdir() # create intermediate directories and fake files rasa.shared.utils.io.write_text_file("""## story""", additional_file) selector = MultiProjectImporter( config_path, training_data_paths=[str(tmp_path / "directory"), str(additional_file)], ) assert selector.is_imported(str(additional_file)) assert str(additional_file) in selector._story_paths
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 = MultiProjectImporter( 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))
def test_not_importing_not_relevant_additional_files(tmp_path: Path): config = {"imports": ["bots/Bot A"]} config_path = str(tmp_path / "config.yml") utils.dump_obj_as_yaml_to_file(config_path, config) additional_file = tmp_path / "directory" / "file.yml" additional_file.parent.mkdir() selector = MultiProjectImporter( config_path, training_data_paths=[str(tmp_path / "data"), str(additional_file)] ) not_relevant_file1 = tmp_path / "data" / "another directory" / "file.yml" not_relevant_file1.parent.mkdir(parents=True) rasa.shared.utils.io.write_text_file("", not_relevant_file1) not_relevant_file2 = tmp_path / "directory" / "another_file.yml" rasa.shared.utils.io.write_text_file("", not_relevant_file2) assert not selector.is_imported(str(not_relevant_file1)) assert not selector.is_imported(str(not_relevant_file2))