aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2018-07-20 18:53:23 -0400
committerGitHub <noreply@github.com>2018-07-20 18:53:23 -0400
commit37a73d3bc09a8a3f12e4e2d42850419208000ba8 (patch)
treea2832214673949bd250bb297c8bba2a09020c1b3 /python
parentaa76909f55e126957dfc163db9512ffe344c348f (diff)
parent2b5bba6f12481acf315b6c55f3ac129dce373bd6 (diff)
downloadservo-37a73d3bc09a8a3f12e4e2d42850419208000ba8.tar.gz
servo-37a73d3bc09a8a3f12e4e2d42850419208000ba8.zip
Auto merge of #21213 - servo:android-wpt, r=nox+jgraham
Add some support for WPT tests in an Android emulator through WebDriver This succeeds on my machine: `./mach test-wpt --product servodriver --binary etc/run_in_headless_android_emulator.py --binary-arg servo-x86 --binary-arg target/i686-linux-android/release/servo.apk /_mozilla/mozilla/DOMParser.html` <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21213) <!-- Reviewable:end -->
Diffstat (limited to 'python')
-rw-r--r--python/servo/testing_commands.py52
1 files changed, 36 insertions, 16 deletions
diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py
index f4092e702be..b0ef2cfa5ce 100644
--- a/python/servo/testing_commands.py
+++ b/python/servo/testing_commands.py
@@ -367,6 +367,21 @@ class MachCommands(CommandBase):
else:
return ret
+ @Command('test-wpt-android',
+ description='Run the web platform test suite in an Android emulator',
+ category='testing',
+ parser=create_parser_wpt)
+ def test_wpt_android(self, release=False, dev=False, binary_args=None, **kwargs):
+ kwargs.update(
+ release=release,
+ dev=dev,
+ product="servodriver",
+ processes=1,
+ binary_args=self.in_android_emulator(release, dev) + (binary_args or []),
+ binary=sys.executable,
+ )
+ return self._test_wpt(**kwargs)
+
def _test_wpt(self, **kwargs):
hosts_file_path = path.join(self.context.topdir, 'tests', 'wpt', 'hosts')
os.environ["hosts_file_path"] = hosts_file_path
@@ -559,28 +574,15 @@ class MachCommands(CommandBase):
@CommandArgument('--dev', '-d', action='store_true',
help='Run the dev build')
def test_android_startup(self, release, dev):
- if (release and dev) or not (release or dev):
- print("Please specify one of --dev or --release.")
- return 1
-
- avd = "servo-x86"
- target = "i686-linux-android"
- print("Assuming --target " + target)
-
- env = self.build_env(target=target)
- assert self.handle_android_target(target)
- binary_path = self.get_binary_path(release, dev, android=True)
- apk = binary_path + ".apk"
-
html = """
<script>
console.log("JavaScript is running!")
</script>
"""
url = "data:text/html;base64," + html.encode("base64").replace("\n", "")
- py = path.join(self.context.topdir, "etc", "run_in_headless_android_emulator.py")
- args = [sys.executable, py, avd, apk, url]
- process = subprocess.Popen(args, stdout=subprocess.PIPE, env=env)
+ args = self.in_android_emulator(release, dev)
+ args = [sys.executable] + args + [url]
+ process = subprocess.Popen(args, stdout=subprocess.PIPE)
try:
while 1:
line = process.stdout.readline()
@@ -593,6 +595,24 @@ class MachCommands(CommandBase):
finally:
process.terminate()
+ def in_android_emulator(self, release, dev):
+ if (release and dev) or not (release or dev):
+ print("Please specify one of --dev or --release.")
+ sys.exit(1)
+
+ avd = "servo-x86"
+ target = "i686-linux-android"
+ print("Assuming --target " + target)
+
+ env = self.build_env(target=target)
+ os.environ["PATH"] = env["PATH"]
+ assert self.handle_android_target(target)
+ binary_path = self.get_binary_path(release, dev, android=True)
+ apk = binary_path + ".apk"
+
+ py = path.join(self.context.topdir, "etc", "run_in_headless_android_emulator.py")
+ return [py, avd, apk]
+
@Command('test-jquery',
description='Run the jQuery test suite',
category='testing')