skia2/tools/skqp/run_skqp_exe
Derek Sollenberger 1afa5fb64b Reduce scope of SkQP to pass/fail runs of GMs and UnitTests
Going forward specific GMs can be added to the rendertest.txt
in order to do a basic pass/fail run based on whether the GM
can successfully complete without crashing.

The output of the executable was also updated to print one test
per line in order to make following its execution more readable.

Bug: skia:12777
Change-Id: I98f6fa7af765130ddf68203d62c972659fd4e325
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/489617
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Derek Sollenberger <djsollen@google.com>
2022-01-04 18:07:48 +00:00

53 lines
1.7 KiB
Python
Executable File

#! /usr/bin/env python
# Copyright 2018 Google Inc.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import os
import subprocess
import tempfile
import sys
def skqp(build):
def adb(*args):
sys.stdout.write("adb '" + "' '".join(args) + "'\n")
subprocess.check_call(['adb'] + list(args))
assert os.path.isdir(build)
build = os.path.abspath(build)
os.chdir(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir))
adb('shell', 'rm -rf /data/local/tmp/skqp; mkdir -p /data/local/tmp/skqp/skqp_assets')
adb('push',
os.path.join(*'platform_tools/android/apps/skqp/src/main/assets/skqp'.split('/')),
'/data/local/tmp/skqp/skqp_assets')
adb('push', 'resources', '/data/local/tmp/skqp/skqp_assets')
adb('push', os.path.join(build, 'skqp'), '/data/local/tmp/skqp/skqp')
cmd = "cd /data/local/tmp/skqp; ./skqp skqp_assets '' report"
sys.stdout.write("adb 'shell' '%s'\n" % cmd)
ret = subprocess.call(['adb', 'shell', cmd])
tmpdir = tempfile.mkdtemp(prefix='skqp')
adb('pull', "/data/local/tmp/skqp/report", tmpdir)
return ret, os.path.join(tmpdir, 'report')
if __name__ == '__main__':
if len(sys.argv) != 2 or not os.path.isdir(sys.argv[1]):
sys.stderr.write('Usage\n %s BUILD_DIR\n\n' % sys.argv[0])
sys.exit(1)
try:
ret, report = skqp(sys.argv[1])
except subprocess.CalledProcessError:
sys.stderr.write('Command failed.\n')
sys.exit(1)
sys.stdout.write('\nReturn code: %d\nOutput written to "%s"\n' % (ret, report))
os.system("bin/sysopen " + os.path.join(report, 'report.html'))