diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /python/mozbuild/mozbuild/test/backend/test_visualstudio.py | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'python/mozbuild/mozbuild/test/backend/test_visualstudio.py')
-rw-r--r-- | python/mozbuild/mozbuild/test/backend/test_visualstudio.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/python/mozbuild/mozbuild/test/backend/test_visualstudio.py b/python/mozbuild/mozbuild/test/backend/test_visualstudio.py new file mode 100644 index 0000000000..14cccb484b --- /dev/null +++ b/python/mozbuild/mozbuild/test/backend/test_visualstudio.py @@ -0,0 +1,63 @@ +# 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 xml.dom.minidom import parse + +from mozunit import main + +from mozbuild.backend.visualstudio import VisualStudioBackend +from mozbuild.test.backend.common import BackendTester + + +class TestVisualStudioBackend(BackendTester): + @unittest.skip("Failing inconsistently in automation.") + def test_basic(self): + """Ensure we can consume our stub project.""" + + env = self._consume("visual-studio", VisualStudioBackend) + + msvc = os.path.join(env.topobjdir, "msvc") + self.assertTrue(os.path.isdir(msvc)) + + self.assertTrue(os.path.isfile(os.path.join(msvc, "mozilla.sln"))) + self.assertTrue(os.path.isfile(os.path.join(msvc, "mozilla.props"))) + self.assertTrue(os.path.isfile(os.path.join(msvc, "mach.bat"))) + self.assertTrue(os.path.isfile(os.path.join(msvc, "binary_my_app.vcxproj"))) + self.assertTrue(os.path.isfile(os.path.join(msvc, "target_full.vcxproj"))) + self.assertTrue(os.path.isfile(os.path.join(msvc, "library_dir1.vcxproj"))) + self.assertTrue(os.path.isfile(os.path.join(msvc, "library_dir1.vcxproj.user"))) + + d = parse(os.path.join(msvc, "library_dir1.vcxproj")) + self.assertEqual(d.documentElement.tagName, "Project") + els = d.getElementsByTagName("ClCompile") + self.assertEqual(len(els), 2) + + # mozilla-config.h should be explicitly listed as an include. + els = d.getElementsByTagName("NMakeForcedIncludes") + self.assertEqual(len(els), 1) + self.assertEqual( + els[0].firstChild.nodeValue, "$(TopObjDir)\\dist\\include\\mozilla-config.h" + ) + + # LOCAL_INCLUDES get added to the include search path. + els = d.getElementsByTagName("NMakeIncludeSearchPath") + self.assertEqual(len(els), 1) + includes = els[0].firstChild.nodeValue.split(";") + self.assertIn(os.path.normpath("$(TopSrcDir)/includeA/foo"), includes) + self.assertIn(os.path.normpath("$(TopSrcDir)/dir1"), includes) + self.assertIn(os.path.normpath("$(TopObjDir)/dir1"), includes) + self.assertIn(os.path.normpath("$(TopObjDir)\\dist\\include"), includes) + + # DEFINES get added to the project. + els = d.getElementsByTagName("NMakePreprocessorDefinitions") + self.assertEqual(len(els), 1) + defines = els[0].firstChild.nodeValue.split(";") + self.assertIn("DEFINEFOO", defines) + self.assertIn("DEFINEBAR=bar", defines) + + +if __name__ == "__main__": + main() |