mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-06-25 20:29:33 +00:00
62 lines
2.0 KiB
Python
62 lines
2.0 KiB
Python
# 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
|
|
import mozinfo
|
|
import tempfile
|
|
import subprocess
|
|
from mozlog.formatters.process import strstatus
|
|
|
|
|
|
def printstatus(name, returncode):
|
|
"""
|
|
print the status of a command exit code, formatted for tbpl.
|
|
|
|
Note that mozlog structured action "process_exit" should be used
|
|
instead of that in new code.
|
|
"""
|
|
print "TEST-INFO | %s: %s" % (name, strstatus(returncode))
|
|
|
|
|
|
def dump_screen(utilityPath, log):
|
|
"""dumps a screenshot of the entire screen to a directory specified by
|
|
the MOZ_UPLOAD_DIR environment variable"""
|
|
|
|
is_structured_log = hasattr(log, 'process_exit')
|
|
|
|
# Need to figure out which OS-dependent tool to use
|
|
if mozinfo.isUnix:
|
|
utility = [os.path.join(utilityPath, "screentopng")]
|
|
utilityname = "screentopng"
|
|
elif mozinfo.isMac:
|
|
utility = ['/usr/sbin/screencapture', '-C', '-x', '-t', 'png']
|
|
utilityname = "screencapture"
|
|
elif mozinfo.isWin:
|
|
utility = [os.path.join(utilityPath, "screenshot.exe")]
|
|
utilityname = "screenshot"
|
|
|
|
# Get dir where to write the screenshot file
|
|
parent_dir = os.environ.get('MOZ_UPLOAD_DIR', None)
|
|
if not parent_dir:
|
|
log.info('Failed to retrieve MOZ_UPLOAD_DIR env var')
|
|
return
|
|
|
|
# Run the capture
|
|
try:
|
|
tmpfd, imgfilename = tempfile.mkstemp(
|
|
prefix='mozilla-test-fail-screenshot_',
|
|
suffix='.png', dir=parent_dir
|
|
)
|
|
os.close(tmpfd)
|
|
if is_structured_log:
|
|
log.process_start(utilityname)
|
|
returncode = subprocess.call(utility + [imgfilename])
|
|
if is_structured_log:
|
|
log.process_exit(utilityname, returncode)
|
|
else:
|
|
printstatus(utilityname, returncode)
|
|
except OSError, err:
|
|
log.info("Failed to start %s for screenshot: %s"
|
|
% (utility[0], err.strerror))
|