def mock_lint(env, manifest, cmakelist, checks=all, indentation=False, return_var=False): linter = CMakeLinter(env) if type(cmakelist) is dict: tmp = {} for key, value in iteritems(cmakelist): tmp[os.path.normpath(key)] = value cmakelist = tmp def get_cmakelist(filename): if type(cmakelist) is dict: if filename in cmakelist: return cmakelist[filename] else: return "" else: if filename == os.path.normpath("/mock-path/CMakeLists.txt"): return cmakelist return "" linter._read_file = get_cmakelist if checks is not None: linter.require(checks) info = LintInfo(env) linter.lint (os.path.normpath("/mock-path"), manifest, info) if not indentation: linter.messages = [ m for m in linter.messages if m.id != "INDENTATION" ] if return_var: return info.var else: return [ m.id for m in linter.messages ]
def test_circular_depend(self): """Test circular dependencies in custom linter modules""" def a(linter): linter.require(b) def b(linter): linter.require(a) linter = CMakeLinter(create_env()) self.assertRaises(RuntimeError, linter.require, a)
def mock_lint(env, manifest, cmakelist, checks=all, full_result=False, indentation=False): linter = CMakeLinter(env) if type(cmakelist) is dict: tmp = {} for key, value in iteritems(cmakelist): tmp[os.path.normpath(key)] = value cmakelist = tmp def get_cmakelist(filename): if type(cmakelist) is dict: if filename in cmakelist: return cmakelist[filename] else: return "" else: if filename == os.path.normpath("/mock-path/CMakeLists.txt"): return cmakelist return "" linter._read_file = get_cmakelist if checks is not None: linter.require(checks) linter.lint (os.path.normpath("/mock-path"), manifest) if not indentation: linter.messages = [ m for m in linter.messages if m.id != "INDENTATION" ] if full_result: return linter.messages else: return [ m.id for m in linter.messages ]
def mock_lint(env, manifest, cmakelist, checks=all, indentation=False, return_var=False, package_path=None): linter = CMakeLinter(env) if package_path is None: package_path = "/package-path/%s" % manifest.name if type(cmakelist) is dict: tmp = {} for key, value in iteritems(cmakelist): tmp[os.path.normpath(key)] = value cmakelist = tmp def get_cmakelist(filename): if type(cmakelist) is dict: if filename in cmakelist: return cmakelist[filename] else: raise OSError("Mock CMake file not found: %s" % filename) else: if filename == os.path.normpath(package_path + "/CMakeLists.txt"): return cmakelist raise OSError("Mock CMake file not found: %s" % filename) linter._read_file = get_cmakelist if checks is not None: linter.require(checks) info = LintInfo(env) linter.lint (os.path.normpath(package_path), manifest, info) if not indentation: linter.messages = [ m for m in linter.messages if m.id != "INDENTATION" ] if return_var: return info.var else: return [ m.id for m in linter.messages ]
def test_circular_depend(self): def a(linter): linter.require(b) def b(linter): linter.require(a) linter = CMakeLinter(create_env()) self.assertRaises(RuntimeError, linter.require, a)
def mock_lint(env, manifest, cmakelist, checks=all_checks, indentation=False, return_var=False, package_path=None): linter = CMakeLinter(env) if package_path is None: package_path = "/package-path/%s" % manifest.name if type(cmakelist) is dict: tmp = {} for key, value in iteritems(cmakelist): tmp[os.path.normpath(key)] = value cmakelist = tmp def get_cmakelist(filename): if type(cmakelist) is dict: if filename in cmakelist: return cmakelist[filename] else: raise OSError("Mock CMake file not found: %s" % filename) else: assert filename == os.path.normpath(package_path + "/CMakeLists.txt") return cmakelist linter._read_file = get_cmakelist if checks is not None: linter.require(checks) info = LintInfo(env) linter.lint(os.path.normpath(package_path), manifest, info=info) if not indentation: linter.messages = [m for m in linter.messages if m.id != "INDENTATION"] if return_var: return info.var else: return [m.id for m in linter.messages]
def test_list(self): env = create_env() linter = CMakeLinter(env) info = LintInfo(env) linter._handle_list(info, ["APPEND", "test", "one"]) self.assertEqual(info.var["test"], "one") linter._handle_list(info, ["APPEND", "test", "three"]) self.assertEqual(info.var["test"], "one;three") linter._handle_list(info, ["INSERT", "test", "1", "two"]) self.assertEqual(info.var["test"], "one;two;three") linter._handle_list(info, ["GET", "test", "1", "result"]) self.assertEqual(info.var["result"], "two") linter._handle_list(info, ["GET", "test", "42", "result"]) self.assertEqual(info.var["result"], "") linter._handle_list(info, ["FIND", "test", "none", "result"]) self.assertEqual(info.var["result"], "-1") linter._handle_list(info, ["FIND", "test", "two", "result"]) self.assertEqual(info.var["result"], "1") info.var["test"] = "one;two;three;one;four;five" linter._handle_list(info, ["REMOVE_DUPLICATES", "test"]) self.assertEqual(info.var["test"], "one;two;three;four;five") linter._handle_list(info, ["REMOVE_AT", "test", "15", "0", "4", "2"]) self.assertEqual(info.var["test"], "two;four") linter._handle_list(info, ["APPEND", "test", "two"]) linter._handle_list(info, ["REMOVE_ITEM", "test", "two"]) self.assertEqual(info.var["test"], "four") info.var["test"] = "1;3;2;6;5;4" linter._handle_list(info, ["SORT", "test"]) self.assertEqual(info.var["test"], "1;2;3;4;5;6") linter._handle_list(info, ["REVERSE", "test"]) self.assertEqual(info.var["test"], "6;5;4;3;2;1") info.var["test"] = "one;two;three" linter._handle_list(info, ["UNKNOWN", "test"]) self.assertEqual(info.var["test"], "one;two;three") linter._handle_list(info, []) self.assertEqual(info.var["test"], "one;two;three")
def test_list(self): """Test CMake list handling""" env = create_env() linter = CMakeLinter(env) info = LintInfo(env) linter._handle_list(info, ["APPEND", "test", "one"]) self.assertEqual(info.var["test"], "one") linter._handle_list(info, ["APPEND", "test", "three"]) self.assertEqual(info.var["test"], "one;three") linter._handle_list(info, ["INSERT", "test", "1", "two"]) self.assertEqual(info.var["test"], "one;two;three") linter._handle_list(info, ["GET", "test", "1", "result"]) self.assertEqual(info.var["result"], "two") linter._handle_list(info, ["GET", "test", "42", "result"]) self.assertEqual(info.var["result"], "") linter._handle_list(info, ["FIND", "test", "none", "result"]) self.assertEqual(info.var["result"], "-1") linter._handle_list(info, ["FIND", "test", "two", "result"]) self.assertEqual(info.var["result"], "1") linter._handle_list(info, ["PREPEND", "test", "zero"]) self.assertEqual(info.var["test"], "zero;one;two;three") linter._handle_list(info, ["POP_FRONT", "test"]) self.assertEqual(info.var["test"], "one;two;three") linter._handle_list(info, ["POP_BACK", "test"]) self.assertEqual(info.var["test"], "one;two") info.var["test"] = "one;two;three;four;five" linter._handle_list(info, ["POP_FRONT", "test", "v1", "v2"]) self.assertEqual(info.var["test"], "three;four;five") self.assertEqual(info.var["v1"], "one") self.assertEqual(info.var["v2"], "two") linter._handle_list(info, ["POP_BACK", "test", "v1", "v2"]) self.assertEqual(info.var["test"], "three") self.assertEqual(info.var["v1"], "five") self.assertEqual(info.var["v2"], "four") info.var["test"] = "one;two;three;one;four;five" linter._handle_list(info, ["REMOVE_DUPLICATES", "test"]) self.assertEqual(info.var["test"], "one;two;three;four;five") linter._handle_list(info, ["JOIN", "test", "+", "result"]) self.assertEqual(info.var["result"], "one+two+three+four+five") linter._handle_list(info, ["SUBLIST", "test", "2", "2", "result"]) self.assertEqual(info.var["result"], "three;four") linter._handle_list(info, ["SUBLIST", "test", "-2", "3", "result"]) self.assertEqual(info.var["result"], "four;five") linter._handle_list(info, ["SUBLIST", "test", "0", "-1", "result"]) self.assertEqual(info.var["result"], "one;two;three;four;five") linter._handle_list(info, ["REMOVE_AT", "test", "15", "0", "4", "2"]) self.assertEqual(info.var["test"], "two;four") linter._handle_list(info, ["APPEND", "test", "two"]) linter._handle_list(info, ["REMOVE_ITEM", "test", "two"]) self.assertEqual(info.var["test"], "four") info.var["test"] = "1;3;2;6;5;4" linter._handle_list(info, ["SORT", "test"]) self.assertEqual(info.var["test"], "1;2;3;4;5;6") linter._handle_list(info, ["REVERSE", "test"]) self.assertEqual(info.var["test"], "6;5;4;3;2;1") info.var["test"] = "one;two;three" linter._handle_list(info, ["UNKNOWN", "test"]) self.assertEqual(info.var["test"], "one;two;three") linter._handle_list(info, []) self.assertEqual(info.var["test"], "one;two;three")