summaryrefslogtreecommitdiffstats
path: root/python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py')
-rw-r--r--python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py102
1 files changed, 102 insertions, 0 deletions
diff --git a/python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py b/python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py
new file mode 100644
index 0000000000..e6b96b3627
--- /dev/null
+++ b/python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py
@@ -0,0 +1,102 @@
+# 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
+
+from buildconfig import topsrcdir
+from mozpack import path as mozpath
+from mozunit import MockedOpen, main
+
+from common import BaseConfigureTest
+from mozbuild.configure.options import InvalidOptionError
+
+
+class TestToolkitMozConfigure(BaseConfigureTest):
+ def test_moz_configure_options(self):
+ def get_value_for(args=[], environ={}, mozconfig=""):
+ sandbox = self.get_sandbox({}, {}, args, environ, mozconfig)
+
+ # Add a fake old-configure option
+ sandbox.option_impl(
+ "--with-foo", nargs="*", help="Help missing for old configure options"
+ )
+
+ # Remove all implied options, otherwise, getting
+ # all_configure_options below triggers them, and that triggers
+ # configure parts that aren't expected to run during this test.
+ del sandbox._implied_options[:]
+ result = sandbox._value_for(sandbox["all_configure_options"])
+ shell = mozpath.abspath("/bin/sh")
+ return result.replace("CONFIG_SHELL=%s " % shell, "")
+
+ self.assertEqual(
+ "--enable-application=browser",
+ get_value_for(["--enable-application=browser"]),
+ )
+
+ self.assertEqual(
+ "--enable-application=browser " "MOZ_VTUNE=1",
+ get_value_for(["--enable-application=browser", "MOZ_VTUNE=1"]),
+ )
+
+ value = get_value_for(
+ environ={"MOZ_VTUNE": "1"},
+ mozconfig="ac_add_options --enable-application=browser",
+ )
+
+ self.assertEqual("--enable-application=browser MOZ_VTUNE=1", value)
+
+ # --disable-js-shell is the default, so it's filtered out.
+ self.assertEqual(
+ "--enable-application=browser",
+ get_value_for(["--enable-application=browser", "--disable-js-shell"]),
+ )
+
+ # Normally, --without-foo would be filtered out because that's the
+ # default, but since it is a (fake) old-configure option, it always
+ # appears.
+ self.assertEqual(
+ "--enable-application=browser --without-foo",
+ get_value_for(["--enable-application=browser", "--without-foo"]),
+ )
+ self.assertEqual(
+ "--enable-application=browser --with-foo",
+ get_value_for(["--enable-application=browser", "--with-foo"]),
+ )
+
+ self.assertEqual(
+ "--enable-application=browser '--with-foo=foo bar'",
+ get_value_for(["--enable-application=browser", "--with-foo=foo bar"]),
+ )
+
+ def test_developer_options(self, milestone="42.0a1"):
+ def get_value(args=[], environ={}):
+ sandbox = self.get_sandbox({}, {}, args, environ)
+ return sandbox._value_for(sandbox["developer_options"])
+
+ milestone_path = os.path.join(topsrcdir, "config", "milestone.txt")
+ with MockedOpen({milestone_path: milestone}):
+ # developer options are enabled by default on "nightly" milestone
+ # only
+ self.assertEqual(get_value(), "a" in milestone or None)
+
+ self.assertEqual(get_value(["--enable-release"]), None)
+
+ self.assertEqual(get_value(environ={"MOZILLA_OFFICIAL": 1}), None)
+
+ self.assertEqual(
+ get_value(["--enable-release"], environ={"MOZILLA_OFFICIAL": 1}), None
+ )
+
+ with self.assertRaises(InvalidOptionError):
+ get_value(["--disable-release"], environ={"MOZILLA_OFFICIAL": 1})
+
+ self.assertEqual(get_value(environ={"MOZ_AUTOMATION": 1}), None)
+
+ def test_developer_options_release(self):
+ self.test_developer_options("42.0")
+
+
+if __name__ == "__main__":
+ main()