| from check_index import * | |
| def check_objects(o): | |
| assert is_list(o) | |
| assert len(o) == 1 | |
| check_index_object(o[0], "cmakeFiles", 1, 1, check_object_cmakeFiles) | |
| def check_input(actual, expected): | |
| assert is_dict(actual) | |
| expected_keys = ["path"] | |
| if expected["isGenerated"] is not None: | |
| expected_keys.append("isGenerated") | |
| assert is_bool(actual["isGenerated"], expected["isGenerated"]) | |
| if expected["isExternal"] is not None: | |
| expected_keys.append("isExternal") | |
| assert is_bool(actual["isExternal"], expected["isExternal"]) | |
| if expected["isCMake"] is not None: | |
| expected_keys.append("isCMake") | |
| assert is_bool(actual["isCMake"], expected["isCMake"]) | |
| assert sorted(actual.keys()) == sorted(expected_keys) | |
| def check_glob_dependent(actual, expected): | |
| assert is_dict(actual) | |
| if "followSymlinks" in expected: | |
| assert is_bool(actual["followSymlinks"], expected["followSymlinks"]) | |
| if "listDirectories" in expected: | |
| assert is_bool(actual["listDirectories"], expected["listDirectories"]) | |
| if "recurse" in expected: | |
| assert is_bool(actual["recurse"], expected["recurse"]) | |
| if "relative" in expected: | |
| assert matches(actual["relative"], expected["relative"]) | |
| check_list_match(lambda a, e: matches(a, e), actual["paths"], expected["paths"], allow_extra=True) | |
| assert sorted(actual.keys()) == sorted(expected.keys()) | |
| def check_object_cmakeFiles(o): | |
| assert sorted(o.keys()) == ["globsDependent", "inputs", "kind", "paths", "version"] | |
| # The "kind" and "version" members are handled by check_index_object. | |
| assert is_dict(o["paths"]) | |
| assert sorted(o["paths"].keys()) == ["build", "source"] | |
| assert matches(o["paths"]["build"], "^.*/Tests/RunCMake/FileAPI/cmakeFiles-v1-build$") | |
| assert matches(o["paths"]["source"], "^.*/Tests/RunCMake/FileAPI$") | |
| expected = [ | |
| { | |
| "path": "^CMakeLists\\.txt$", | |
| "isGenerated": None, | |
| "isExternal": None, | |
| "isCMake": None, | |
| }, | |
| { | |
| "path": "^cmakeFiles-v1\\.cmake$", | |
| "isGenerated": None, | |
| "isExternal": None, | |
| "isCMake": None, | |
| }, | |
| { | |
| "path": "^dir/CMakeLists\\.txt$", | |
| "isGenerated": None, | |
| "isExternal": None, | |
| "isCMake": None, | |
| }, | |
| { | |
| "path": "^dir/dir/CMakeLists\\.txt$", | |
| "isGenerated": None, | |
| "isExternal": None, | |
| "isCMake": None, | |
| }, | |
| { | |
| "path": "^dir/very-long/CMakeLists\\.txt$", | |
| "isGenerated": None, | |
| "isExternal": None, | |
| "isCMake": None, | |
| }, | |
| { | |
| "path": "^dir/dirtest\\.cmake$", | |
| "isGenerated": None, | |
| "isExternal": None, | |
| "isCMake": None, | |
| }, | |
| { | |
| "path": "^.*/Tests/RunCMake/FileAPIDummyFile\\.cmake$", | |
| "isGenerated": None, | |
| "isExternal": True, | |
| "isCMake": None, | |
| }, | |
| { | |
| "path": "^.*/Tests/RunCMake/FileAPI/cmakeFiles-v1-build/generated\\.cmake", | |
| "isGenerated": True, | |
| "isExternal": None, | |
| "isCMake": None, | |
| }, | |
| { | |
| "path": "^.*/Modules/CMakeParseArguments\\.cmake$", | |
| "isGenerated": None, | |
| "isExternal": True, | |
| "isCMake": True, | |
| }, | |
| ] | |
| expected_globs = [ | |
| { | |
| "expression": "^.*/Tests/RunCMake/FileAPI/dir/\\*$", | |
| "paths": [ | |
| "^.*/Tests/RunCMake/FileAPI/dir/dir$", | |
| "^.*/Tests/RunCMake/FileAPI/dir/dirtest\\.cmake$" | |
| ], | |
| "listDirectories": True, | |
| }, | |
| { | |
| "expression": "^.*/Tests/RunCMake/FileAPI/dir/\\*\\.cmake$", | |
| "paths": [ | |
| "^dir/dirtest\\.cmake$" | |
| ], | |
| "followSymlinks": True, | |
| "recurse": True, | |
| "relative": "^.*/Tests/RunCMake/FileAPI$" | |
| } | |
| ] | |
| inSource = os.path.dirname(o["paths"]["build"]) == o["paths"]["source"] | |
| if inSource: | |
| for e in expected: | |
| e["path"] = e["path"].replace("^.*/Tests/RunCMake/FileAPI/", "^", 1) | |
| check_list_match(lambda a, e: matches(a["path"], e["path"]), o["inputs"], expected, check=check_input, allow_extra=True) | |
| check_list_match(lambda a, e: matches(a["expression"], e["expression"]), o["globsDependent"], expected_globs, check=check_glob_dependent, allow_extra=True) | |
| assert is_dict(index) | |
| assert sorted(index.keys()) == ["cmake", "objects", "reply"] | |
| check_objects(index["objects"]) |