Files
shaka-player/build/updateScreenshots.py
T
Joey Parrish d67d5c7dd1 build: Fix updateScreenshots.py
Checks in shakaBuildHelpers complain if you try to run a
node-based script by relying on the shebang line.  This rarely-used
script did this, but it was not noticed when the check was added.

This fixes the error by adding 'node' to the command line.

Change-Id: I70ff5479c9963bd5dad1195ec946879bf36fef1d
2020-12-22 21:34:41 -08:00

86 lines
2.9 KiB
Python
Executable File

#!/usr/bin/env python
#
# Copyright 2016 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Update the screenshots in our layout tests based on the latest run."""
import os
import shutil
import shakaBuildHelpers
def main(args):
base = shakaBuildHelpers.get_source_base()
screenshotsFolder = os.path.join(
base, 'test', 'test', 'assets', 'screenshots')
pixelsChangedTool = os.path.join(
base, 'build', 'pixelsChanged.js');
for platform in os.listdir(screenshotsFolder):
# This is a subfolder with actual screenshots.
platformFolder = os.path.join(screenshotsFolder, platform)
if not os.path.isdir(platformFolder):
# Skip hidden files like .gitignore and non-folders
continue
for child in os.listdir(platformFolder):
# If any args were specified, use them to filter. Either the platform or
# base of the filename must match the filter.
if args and not platform in args and not child.split('.')[0] in args:
continue
fullPath = os.path.join(platformFolder, child)
# If this has the "-new" suffix, it was just written by the layout tests.
# Rename it to overwrite the "official" version, which is stored in
# git-lfs.
if fullPath.endswith('-new'):
officialPath = fullPath[:-4]
# Finally, check to see if the pixels have changed before updating it.
# The png file itself can be slightly different byte-for-byte even when
# the image is visibly the same, and the git repo history will carry
# every revision forever, getting larger with each change. So we only
# want to update the image if the new one is _visibly_ different. For
# this, we use the same tools we use to measure screenshot differences
# in Karma.
if os.path.exists(officialPath):
output = shakaBuildHelpers.execute_get_output([
'node',
pixelsChangedTool,
officialPath,
fullPath,
])
pixelsChanged = float(output)
else:
# No original? Then everything has changed!
pixelsChanged = 1e6
if pixelsChanged == 0:
# Nothing changed, so don't update the image. This will keep the git
# history from getting bigger for no reason.
continue
shutil.move(fullPath, officialPath)
print('Updated: ' + officialPath)
return 0
if __name__ == '__main__':
shakaBuildHelpers.run_main(main)