mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-23 04:41:11 +00:00
Bug 1897186 - Add android-components tests to mach test. r=ohall,nalexander,jmaher
Commands added: `mach test android-components` or `mach test ac` runs all tests for android-components `mach test mobile/android/android-components/components/browser/state/src/test/java/mozilla/components/browser/state/engine/middleware/TranslationsMiddlewareTest.kt` will run all tests in the file Differential Revision: https://phabricator.services.mozilla.com/D226392
This commit is contained in:
parent
4d8e6ae8a2
commit
77f806f492
@ -20,6 +20,19 @@ def classname_for_test(test, test_path):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def project_for_ac(test, test_path):
|
||||||
|
"""Get project name for android-component subprojects from path of test file"""
|
||||||
|
dir = os.path.normpath("mobile/android/android-components/components")
|
||||||
|
return (
|
||||||
|
os.path.normpath(test)
|
||||||
|
.split(os.path.normpath(dir))[-1]
|
||||||
|
.split(os.path.normpath(test_path))[0]
|
||||||
|
.removeprefix(os.path.sep)
|
||||||
|
.removesuffix(os.path.sep)
|
||||||
|
.replace(os.path.sep, "-")
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@Command(
|
@Command(
|
||||||
"android-test",
|
"android-test",
|
||||||
category="testing",
|
category="testing",
|
||||||
@ -28,7 +41,7 @@ def classname_for_test(test, test_path):
|
|||||||
@CommandArgument(
|
@CommandArgument(
|
||||||
"--subproject",
|
"--subproject",
|
||||||
default="fenix",
|
default="fenix",
|
||||||
choices=["fenix", "focus"],
|
choices=["fenix", "focus", "android-components", "ac"],
|
||||||
help="Android subproject to run tests for.",
|
help="Android subproject to run tests for.",
|
||||||
)
|
)
|
||||||
@CommandArgument(
|
@CommandArgument(
|
||||||
@ -37,13 +50,15 @@ def classname_for_test(test, test_path):
|
|||||||
help="Test to run",
|
help="Test to run",
|
||||||
)
|
)
|
||||||
def run_android_test(command_context, subproject, test=None, test_objects=[], **kwargs):
|
def run_android_test(command_context, subproject, test=None, test_objects=[], **kwargs):
|
||||||
|
gradle_command = []
|
||||||
|
AC = ("android-components", "ac")
|
||||||
if subproject == "fenix":
|
if subproject == "fenix":
|
||||||
gradle_subcommand = ":fenix:testDebug"
|
gradle_command = [":fenix:testDebug"]
|
||||||
test_path = os.path.join(
|
test_path = os.path.join(
|
||||||
"mobile", "android", "fenix", "app", "src", "test", "java"
|
"mobile", "android", "fenix", "app", "src", "test", "java"
|
||||||
)
|
)
|
||||||
elif subproject == "focus":
|
elif subproject == "focus":
|
||||||
gradle_subcommand = ":focus-android:testFocusDebugUnitTest"
|
gradle_command = [":focus-android:testFocusDebugUnitTest"]
|
||||||
test_path = os.path.join(
|
test_path = os.path.join(
|
||||||
"mobile",
|
"mobile",
|
||||||
"android",
|
"android",
|
||||||
@ -53,17 +68,37 @@ def run_android_test(command_context, subproject, test=None, test_objects=[], **
|
|||||||
"test",
|
"test",
|
||||||
"java",
|
"java",
|
||||||
)
|
)
|
||||||
|
elif subproject in AC:
|
||||||
|
if not test_objects or test:
|
||||||
|
return command_context._mach_context.commands.dispatch(
|
||||||
|
"gradle",
|
||||||
|
command_context._mach_context,
|
||||||
|
args=["-q", "test"],
|
||||||
|
topsrcdir=os.path.join(
|
||||||
|
command_context.topsrcdir, "mobile", "android", "android-components"
|
||||||
|
),
|
||||||
|
)
|
||||||
|
test_path = os.path.join("src", "test", "java")
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
test_classes = []
|
|
||||||
for test_object in test_objects:
|
for test_object in test_objects:
|
||||||
test_classes.append("--tests")
|
if subproject in AC:
|
||||||
test_classes.append(classname_for_test(test_object["name"], test_path))
|
gradle_command.append(
|
||||||
|
":"
|
||||||
|
+ project_for_ac(test_object["name"], test_path)
|
||||||
|
+ ":testDebugUnitTest"
|
||||||
|
)
|
||||||
|
gradle_command.append("--tests")
|
||||||
|
gradle_command.append(classname_for_test(test_object["name"], test_path))
|
||||||
if test:
|
if test:
|
||||||
test_classes.append("--tests")
|
if subproject in AC:
|
||||||
test_classes.append(classname_for_test(test, test_path))
|
gradle_command.append(
|
||||||
|
":" + project_for_ac(test, test_path) + ":testDebugUnitTest"
|
||||||
|
)
|
||||||
|
gradle_command.append("--tests")
|
||||||
|
gradle_command.append(classname_for_test(test, test_path))
|
||||||
return command_context._mach_context.commands.dispatch(
|
return command_context._mach_context.commands.dispatch(
|
||||||
"gradle",
|
"gradle",
|
||||||
command_context._mach_context,
|
command_context._mach_context,
|
||||||
args=[gradle_subcommand, "-q"] + test_classes,
|
args=["-q"] + gradle_command,
|
||||||
)
|
)
|
||||||
|
@ -382,6 +382,12 @@ TEST_SUITES = {
|
|||||||
"mach_command": "android-test",
|
"mach_command": "android-test",
|
||||||
"kwargs": {"subproject": "focus"},
|
"kwargs": {"subproject": "focus"},
|
||||||
},
|
},
|
||||||
|
"android-components": {
|
||||||
|
"aliases": ("ac",),
|
||||||
|
"build_flavor": "android-components",
|
||||||
|
"mach_command": "android-test",
|
||||||
|
"kwargs": {"subproject": "android-components"},
|
||||||
|
},
|
||||||
"geckoview": {
|
"geckoview": {
|
||||||
"aliases": ("gv",),
|
"aliases": ("gv",),
|
||||||
"build_flavor": "geckoview",
|
"build_flavor": "geckoview",
|
||||||
@ -446,6 +452,7 @@ _test_flavors = {
|
|||||||
"xpcshell": "xpcshell",
|
"xpcshell": "xpcshell",
|
||||||
"fenix": "fenix",
|
"fenix": "fenix",
|
||||||
"focus": "focus",
|
"focus": "focus",
|
||||||
|
"android-components": "android-components",
|
||||||
"geckoview": "geckoview",
|
"geckoview": "geckoview",
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -659,6 +666,7 @@ class TestResolver(MozbuildObject):
|
|||||||
# These suites aren't registered in moz.build so require special handling.
|
# These suites aren't registered in moz.build so require special handling.
|
||||||
self._puppeteer_loaded = False
|
self._puppeteer_loaded = False
|
||||||
self._fenix_loaded = False
|
self._fenix_loaded = False
|
||||||
|
self._ac_loaded = False
|
||||||
self._focus_loaded = False
|
self._focus_loaded = False
|
||||||
self._geckoview_junit_loaded = False
|
self._geckoview_junit_loaded = False
|
||||||
self._tests_loaded = False
|
self._tests_loaded = False
|
||||||
@ -840,6 +848,11 @@ class TestResolver(MozbuildObject):
|
|||||||
):
|
):
|
||||||
self.add_focus_manifest_data()
|
self.add_focus_manifest_data()
|
||||||
|
|
||||||
|
if flavor in ("", "android-components", None) and (
|
||||||
|
any(self.is_ac_path(p) for p in paths) or paths == [None]
|
||||||
|
):
|
||||||
|
self.add_ac_manifest_data()
|
||||||
|
|
||||||
if flavor in ("", "geckoview", "junit", None) and (
|
if flavor in ("", "geckoview", "junit", None) and (
|
||||||
any(self.is_geckoview_junit_path(p) for p in paths) or paths == [None]
|
any(self.is_geckoview_junit_path(p) for p in paths) or paths == [None]
|
||||||
):
|
):
|
||||||
@ -899,6 +912,11 @@ class TestResolver(MozbuildObject):
|
|||||||
return True
|
return True
|
||||||
return mozpath.match(path, "mobile/android/focus-android/**")
|
return mozpath.match(path, "mobile/android/focus-android/**")
|
||||||
|
|
||||||
|
def is_ac_path(self, path):
|
||||||
|
if path is None:
|
||||||
|
return True
|
||||||
|
return mozpath.match(path, "mobile/android/android-components/**")
|
||||||
|
|
||||||
def is_geckoview_junit_path(self, path):
|
def is_geckoview_junit_path(self, path):
|
||||||
if path is None:
|
if path is None:
|
||||||
return True
|
return True
|
||||||
@ -1001,6 +1019,39 @@ class TestResolver(MozbuildObject):
|
|||||||
|
|
||||||
self._focus_loaded = True
|
self._focus_loaded = True
|
||||||
|
|
||||||
|
def add_ac_manifest_data(self):
|
||||||
|
if self._ac_loaded:
|
||||||
|
return
|
||||||
|
|
||||||
|
self._reset_state()
|
||||||
|
|
||||||
|
test_path = os.path.join(
|
||||||
|
self.topsrcdir, "mobile", "android", "android-components"
|
||||||
|
)
|
||||||
|
|
||||||
|
test_subdir_path = os.path.join("src", "test", "java")
|
||||||
|
for root, dirs, paths in os.walk(test_path):
|
||||||
|
if test_subdir_path in root:
|
||||||
|
for filename in fnmatch.filter(paths, "*.kt"):
|
||||||
|
path = os.path.join(root, filename)
|
||||||
|
self._tests.append(
|
||||||
|
{
|
||||||
|
"path": os.path.abspath(path),
|
||||||
|
"flavor": "android-components",
|
||||||
|
"here": os.path.dirname(path),
|
||||||
|
"manifest": None,
|
||||||
|
"name": path,
|
||||||
|
"file_relpath": path,
|
||||||
|
"head": "",
|
||||||
|
"support-files": "",
|
||||||
|
"subsuite": "",
|
||||||
|
"dir_relpath": os.path.dirname(path),
|
||||||
|
"srcdir_relpath": path,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
self._ac_loaded = True
|
||||||
|
|
||||||
def add_geckoview_junit_manifest_data(self):
|
def add_geckoview_junit_manifest_data(self):
|
||||||
if self._geckoview_junit_loaded:
|
if self._geckoview_junit_loaded:
|
||||||
return
|
return
|
||||||
|
Loading…
Reference in New Issue
Block a user