def test_build_exclude_file(self, mocker): child1 = MagicMock(spec=Path, **{"is_dir.return_value": False}) child2 = MagicMock(spec=Path, **{"is_dir.return_value": False}) child3 = MagicMock(spec=Path, **{"is_dir.return_value": False}) project_path = MagicMock( spec=Path, **{"iterdir.return_value": [child1, child2, child3]}) file1 = MagicMock(spec=File) file2 = MagicMock(spec=File) file_factory_mock = mocker.patch.object(File, "file_factory", side_effect=[file1, file2]) configuration = MagicMock(spec=Configuration) mocker.patch.object(ConfigurationManager, "get", return_value=configuration) process_file_mock = mocker.patch.object( ProjectFileListBuilder, "process_file", side_effect=[True, False, True]) result = ProjectFileListBuilder().build(project_path) assert len(result) == 2 assert file1 in result assert file2 in result assert file_factory_mock.call_args_list == [call(child1), call(child3)] assert process_file_mock.call_args_list == [ call(child1, configuration), call(child2, configuration), call(child3, configuration), ]
def test_include_hidden_file_when_turned_off(self): configuration = MagicMock( spec=Configuration, filenames_to_skip=["skip.this"], skip_hidden_files=False, extensions_to_skip=[".skip"], skip_hidden_folders=False, ) file = MagicMock(spec=Path) file.name = ".this" file.suffix = ".this" assert ProjectFileListBuilder().process_file(file, configuration)
def test_exclude_file_because_of_extension(self): configuration = MagicMock( spec=Configuration, filenames_to_skip=["skip.this"], skip_hidden_files=True, extensions_to_skip=[".skip"], skip_hidden_folders=False, ) file = MagicMock(spec=Path) file.name = "file.skip" file.suffix = ".skip" assert ProjectFileListBuilder().process_file(file, configuration) is False
def test_exclude_folder_when_hidden(self): configuration = MagicMock( spec=Configuration, filenames_to_skip=["skip.this"], skip_hidden_files=False, skip_hidden_folders=True, extensions_to_skip=[".skip"], ) file = MagicMock(spec=Path) file.name = ".this" file.suffix = ".this" file.is_dir.return_value = True assert ProjectFileListBuilder().process_file(file, configuration) is False
def get_projects_in_folder(self, folder: str) -> List[Project]: if not Path(folder).exists(): return [] project_list: List[Project] = [] for project in Path(folder).iterdir(): if not project.is_dir(): continue if self.is_folder_project(project): project_path = str(project) project_list.append( Project( project_path=project_path, file_list=ProjectFileListBuilder().build(project), ) ) else: project_list.extend(self.get_projects_in_folder(str(project))) return project_list