def get_prev_bugs( past_bugs_by: dict, commit: repository.CommitDict, component: str = None ) -> List[dict]: paths = [ path for path in commit["files"] if component is None or ( path.encode("utf-8") in path_to_component and path_to_component[path.encode("utf-8")] == component.encode("utf-8") ) ] past_bugs = [] for path, f_group in commit["functions"].items(): if path not in paths: continue if path not in past_bugs_by["function"]: continue found = False for f in f_group: if f["name"] not in past_bugs_by["function"][path]: continue found = True past_bugs += past_bugs_by["function"][path][f["name"]] if found: paths.remove(path) for path in paths: if path in past_bugs_by["file"]: past_bugs += past_bugs_by["file"][path] paths.remove(path) for path, directories in zip(paths, repository.get_directories(paths)): found = False for directory in directories: if directory in past_bugs_by["directory"]: found = True past_bugs += past_bugs_by["directory"][directory] if found: paths.remove(path) components = [ path_to_component[path.encode("utf-8")].tobytes().decode("utf-8") for path in paths if path.encode("utf-8") in path_to_component ] for component in components: if component in past_bugs_by["component"]: past_bugs += past_bugs_by["component"][component] return past_bugs
def test_get_directories(): assert repository.get_directories("") == [] assert repository.get_directories("Makefile") == [] assert repository.get_directories("dom/aFile.jsm") == ["dom"] assert set( repository.get_directories("tools/code-coverage/CodeCoverageHandler.cpp") ) == {"tools", "tools/code-coverage"} assert repository.get_directories([""]) == [] assert repository.get_directories(["Makefile"]) == [] assert repository.get_directories(["dom/aFile.jsm"]) == ["dom"] assert set( repository.get_directories(["tools/code-coverage/CodeCoverageHandler.cpp"]) ) == {"tools", "tools/code-coverage"} assert set( repository.get_directories( ["dom/aFile.jsm", "tools/code-coverage/CodeCoverageHandler.cpp"] ) ) == {"dom", "tools", "tools/code-coverage"}
def test_get_directories(): assert repository.get_directories("") == [] assert repository.get_directories("Makefile") == [] assert repository.get_directories("dom/aFile.jsm") == ["dom"] assert set( repository.get_directories("tools/code-coverage/CodeCoverageHandler.cpp") ) == {"tools", "tools/code-coverage"} assert repository.get_directories([""]) == [] assert repository.get_directories(["Makefile"]) == [] assert repository.get_directories(["dom/aFile.jsm"]) == ["dom"] assert set( repository.get_directories(["tools/code-coverage/CodeCoverageHandler.cpp"]) ) == {"tools", "tools/code-coverage"} assert set( repository.get_directories( ["dom/aFile.jsm", "tools/code-coverage/CodeCoverageHandler.cpp"] ) ) == {"dom", "tools", "tools/code-coverage"}