Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(534)

Unified Diff: tools/find_bad_images_in_skps.py

Issue 1760583003: Remove unused tools and unused includes of SkImageDecoder (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/VisualBench/VisualLightweightBenchModule.cpp ('k') | tools/imgconv.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/find_bad_images_in_skps.py
diff --git a/tools/find_bad_images_in_skps.py b/tools/find_bad_images_in_skps.py
deleted file mode 100755
index 5dcf6a477e3ba5cbaa29ec9896ea152fcf79b31c..0000000000000000000000000000000000000000
--- a/tools/find_bad_images_in_skps.py
+++ /dev/null
@@ -1,197 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright 2013 Google Inc. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""
-This script will take as an argument either a list of skp files or a
-set of directories that contains skp files. It will then test each
-skp file with the `render_pictures` program. If that program either
-spits out any unexpected output or doesn't return 0, I will flag that
-skp file as problematic. We then extract all of the embedded images
-inside the skp and test each one of them against the
-SkImageDecoder::DecodeFile function. Again, we consider any
-extraneous output or a bad return value an error. In the event of an
-error, we retain the image and print out information about the error.
-The output (on stdout) is formatted as a csv document.
-
-A copy of each bad image is left in a directory created by
-tempfile.mkdtemp().
-"""
-
-import glob
-import os
-import re
-import shutil
-import subprocess
-import sys
-import tempfile
-import threading
-
-import test_rendering # skia/trunk/tools. reuse FindPathToProgram()
-
-USAGE = """
-Usage:
- {command} SKP_FILE [SKP_FILES]
- {command} SKP_DIR [SKP_DIRS]\n
-Environment variables:
- To run multiple worker threads, set NUM_THREADS.
- To use a different temporary storage location, set TMPDIR.
-
-"""
-
-def execute_program(args, ignores=None):
- """
- Execute a process and waits for it to complete. Returns all
- output (stderr and stdout) after (optional) filtering.
-
- @param args is passed into subprocess.Popen().
-
- @param ignores (optional) is a list of regular expression strings
- that will be ignored in the output.
-
- @returns a tuple (returncode, output)
- """
- if ignores is None:
- ignores = []
- else:
- ignores = [re.compile(ignore) for ignore in ignores]
- proc = subprocess.Popen(
- args,
- stdout=subprocess.PIPE,
- stderr=subprocess.STDOUT)
- output = ''.join(
- line for line in proc.stdout
- if not any(bool(ignore.match(line)) for ignore in ignores))
- returncode = proc.wait()
- return (returncode, output)
-
-
-def list_files(paths):
- """
- Accepts a list of directories or filenames on the command line.
- We do not choose to recurse into directories beyond one level.
- """
- class NotAFileException(Exception):
- pass
- for path in paths:
- for globbedpath in glob.iglob(path): # useful on win32
- if os.path.isdir(globbedpath):
- for filename in os.listdir(globbedpath):
- newpath = os.path.join(globbedpath, filename)
- if os.path.isfile(newpath):
- yield newpath
- elif os.path.isfile(globbedpath):
- yield globbedpath
- else:
- raise NotAFileException('{} is not a file'.format(globbedpath))
-
-
-class BadImageFinder(object):
-
- def __init__(self, directory=None):
- self.render_pictures = test_rendering.FindPathToProgram(
- 'render_pictures')
- self.test_image_decoder = test_rendering.FindPathToProgram(
- 'test_image_decoder')
- assert os.path.isfile(self.render_pictures)
- assert os.path.isfile(self.test_image_decoder)
- if directory is None:
- self.saved_image_dir = tempfile.mkdtemp(prefix='skia_skp_test_')
- else:
- assert os.path.isdir(directory)
- self.saved_image_dir = directory
- self.bad_image_count = 0
-
- def process_files(self, skp_files):
- for path in skp_files:
- self.process_file(path)
-
- def process_file(self, skp_file):
- assert self.saved_image_dir is not None
- assert os.path.isfile(skp_file)
- args = [self.render_pictures, '--readPath', skp_file]
- ignores = ['^process_in', '^deserializ', '^drawing...', '^Non-defaul']
- returncode, output = execute_program(args, ignores)
- if (returncode == 0) and not output:
- return
- temp_image_dir = tempfile.mkdtemp(prefix='skia_skp_test___')
- args = [ self.render_pictures, '--readPath', skp_file,
- '--writePath', temp_image_dir, '--writeEncodedImages']
- subprocess.call(args, stderr=open(os.devnull,'w'),
- stdout=open(os.devnull,'w'))
- for image_name in os.listdir(temp_image_dir):
- image_path = os.path.join(temp_image_dir, image_name)
- assert(os.path.isfile(image_path))
- args = [self.test_image_decoder, image_path]
- returncode, output = execute_program(args, [])
- if (returncode == 0) and not output:
- os.remove(image_path)
- continue
- try:
- shutil.move(image_path, self.saved_image_dir)
- except (shutil.Error,):
- # If this happens, don't stop the entire process,
- # just warn the user.
- os.remove(image_path)
- sys.stderr.write('{0} is a repeat.\n'.format(image_name))
- self.bad_image_count += 1
- if returncode == 2:
- returncode = 'SkImageDecoder::DecodeFile returns false'
- elif returncode == 0:
- returncode = 'extra verbosity'
- assert output
- elif returncode == -11:
- returncode = 'segmentation violation'
- else:
- returncode = 'returncode: {}'.format(returncode)
- output = output.strip().replace('\n',' ').replace('"','\'')
- suffix = image_name[-3:]
- output_line = '"{0}","{1}","{2}","{3}","{4}"\n'.format(
- returncode, suffix, skp_file, image_name, output)
- sys.stdout.write(output_line)
- sys.stdout.flush()
- os.rmdir(temp_image_dir)
- return
-
-def main(main_argv):
- if not main_argv or main_argv[0] in ['-h', '-?', '-help', '--help']:
- sys.stderr.write(USAGE.format(command=__file__))
- return 1
- if 'NUM_THREADS' in os.environ:
- number_of_threads = int(os.environ['NUM_THREADS'])
- if number_of_threads < 1:
- number_of_threads = 1
- else:
- number_of_threads = 1
- os.environ['skia_images_png_suppressDecoderWarnings'] = 'true'
- os.environ['skia_images_jpeg_suppressDecoderWarnings'] = 'true'
-
- temp_dir = tempfile.mkdtemp(prefix='skia_skp_test_')
- sys.stderr.write('Directory for bad images: {}\n'.format(temp_dir))
- sys.stdout.write('"Error","Filetype","SKP File","Image File","Output"\n')
- sys.stdout.flush()
-
- finders = [
- BadImageFinder(temp_dir) for index in xrange(number_of_threads)]
- arguments = [[] for index in xrange(number_of_threads)]
- for index, item in enumerate(list_files(main_argv)):
- ## split up the given targets among the worker threads
- arguments[index % number_of_threads].append(item)
- threads = [
- threading.Thread(
- target=BadImageFinder.process_files, args=(finder,argument))
- for finder, argument in zip(finders, arguments)]
- for thread in threads:
- thread.start()
- for thread in threads:
- thread.join()
- number = sum(finder.bad_image_count for finder in finders)
- sys.stderr.write('Number of bad images found: {}\n'.format(number))
- return 0
-
-if __name__ == '__main__':
- exit(main(sys.argv[1:]))
-
-# LocalWords: skp stdout csv
« no previous file with comments | « tools/VisualBench/VisualLightweightBenchModule.cpp ('k') | tools/imgconv.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698