Adding a keyword to mochitest and xpcshell manifests
Contents
Adding a keyword to mochitest and xpcshell manifests#
Keywords in mochitest and xpcshell test manifests allow us to determine which tests we want to skip and which we want to run.
Current behavior#
Currently, gecko builds generate a target.mozinfo.json
with metadata about the build. An example target.mozinfo.json
might look like this
. This lets us use skip-if
in test manifests, like:
skip-if = e10s && os == 'win'
In this case, e10s
is a keyword. Keywords are essentially booleans in mozinfo, since we don’t have to compare them to something like os == 'win'
.
The test will download the build’s target.mozinfo.json
, then update the mozinfo dictionary with additional runtime information based on the task or runtime environment. This logic lives in mozinfo.
How to add a keyword#
The easiest route may be to patch mozinfo. For example, for Apple Silicon, we can add an apple_silicon
keyword with a patch like this:
--- a/testing/mozbase/mozinfo/mozinfo/mozinfo.py
+++ b/testing/mozbase/mozinfo/mozinfo/mozinfo.py
@@ -144,19 +144,29 @@ elif system == "Darwin":
os_version = "%s.%s" % (versionNums[0], versionNums[1])
info["os"] = "mac"
elif sys.platform in ("solaris", "sunos5"):
info["os"] = "unix"
os_version = version = sys.platform
else:
os_version = version = unknown
+info["apple_silicon"] = False
+if (
+ info["os"] == "mac"
+ and float(os_version) > 10.15
+ and processor == "i386"
+ and bits == "64bit"
+):
+ info["apple_silicon"] = True
+
info["version"] = version
info["os_version"] = StringVersion(os_version)
+
# processor type and bits
if processor in ["i386", "i686"]:
if bits == "32bit":
processor = "x86"
elif bits == "64bit":
processor = "x86_64"
elif processor.upper() == "AMD64":
bits = "64bit"