diff options
Diffstat (limited to 'python/mozbuild/mozbuild/test/code_analysis/test_mach_commands.py')
-rw-r--r-- | python/mozbuild/mozbuild/test/code_analysis/test_mach_commands.py | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/python/mozbuild/mozbuild/test/code_analysis/test_mach_commands.py b/python/mozbuild/mozbuild/test/code_analysis/test_mach_commands.py new file mode 100644 index 0000000000..774688c62f --- /dev/null +++ b/python/mozbuild/mozbuild/test/code_analysis/test_mach_commands.py @@ -0,0 +1,90 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +import os +import unittest +from unittest import mock + +import mozpack.path as mozpath +from mach.registrar import Registrar +from mozunit import main + +from mozbuild.base import MozbuildObject + + +class TestStaticAnalysis(unittest.TestCase): + def setUp(self): + self.remove_cats = [] + for cat in ("build", "post-build", "misc", "testing", "devenv"): + if cat in Registrar.categories: + continue + Registrar.register_category(cat, cat, cat) + self.remove_cats.append(cat) + + def tearDown(self): + for cat in self.remove_cats: + del Registrar.categories[cat] + del Registrar.commands_by_category[cat] + + def test_bug_1615884(self): + # TODO: cleaner test + # we're testing the `_is_ignored_path` but in an ideal + # world we should test the clang_analysis mach command + # since that small function is an internal detail. + # But there is zero test infra for that mach command + from mozbuild.code_analysis.mach_commands import _is_ignored_path + + config = MozbuildObject.from_environment() + context = mock.MagicMock() + context.cwd = config.topsrcdir + + command_context = mock.MagicMock() + command_context.topsrcdir = os.path.join("/root", "dir") + path = os.path.join("/root", "dir", "path1") + + ignored_dirs_re = r"path1|path2/here|path3\there" + self.assertTrue( + _is_ignored_path(command_context, ignored_dirs_re, path) is not None + ) + + # simulating a win32 env + win32_path = "\\root\\dir\\path1" + command_context.topsrcdir = "\\root\\dir" + old_sep = os.sep + os.sep = "\\" + try: + self.assertTrue( + _is_ignored_path(command_context, ignored_dirs_re, win32_path) + is not None + ) + finally: + os.sep = old_sep + + self.assertTrue( + _is_ignored_path(command_context, ignored_dirs_re, "path2") is None + ) + + def test_get_files(self): + from mozbuild.code_analysis.mach_commands import get_abspath_files + + config = MozbuildObject.from_environment() + context = mock.MagicMock() + context.cwd = config.topsrcdir + + command_context = mock.MagicMock() + command_context.topsrcdir = mozpath.join("/root", "dir") + source = get_abspath_files( + command_context, ["file1", mozpath.join("directory", "file2")] + ) + + self.assertTrue( + source + == [ + mozpath.join(command_context.topsrcdir, "file1"), + mozpath.join(command_context.topsrcdir, "directory", "file2"), + ] + ) + + +if __name__ == "__main__": + main() |