summaryrefslogtreecommitdiff
path: root/systrace/catapult/common/py_vulcanize/third_party/rcssmin/run_tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'systrace/catapult/common/py_vulcanize/third_party/rcssmin/run_tests.py')
-rwxr-xr-xsystrace/catapult/common/py_vulcanize/third_party/rcssmin/run_tests.py166
1 files changed, 166 insertions, 0 deletions
diff --git a/systrace/catapult/common/py_vulcanize/third_party/rcssmin/run_tests.py b/systrace/catapult/common/py_vulcanize/third_party/rcssmin/run_tests.py
new file mode 100755
index 0000000..9128d74
--- /dev/null
+++ b/systrace/catapult/common/py_vulcanize/third_party/rcssmin/run_tests.py
@@ -0,0 +1,166 @@
+#!/usr/bin/env python
+# -*- coding: ascii -*-
+#
+# Copyright 2014
+# Andr\xe9 Malo or his licensors, as applicable
+#
+# 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.
+"""
+===========
+ Run tests
+===========
+
+Run tests.
+"""
+__author__ = "Andr\xe9 Malo"
+__author__ = getattr(__author__, 'decode', lambda x: __author__)('latin-1')
+__docformat__ = "restructuredtext en"
+
+import os as _os
+import re as _re
+import sys as _sys
+
+from _setup import shell
+from _setup import term
+
+
+def run_tests(basedir, libdir):
+ """ Run output based tests """
+ import rcssmin as _rcssmin
+ py_cssmin = _rcssmin._make_cssmin(python_only=True)
+ c_cssmin = _rcssmin._make_cssmin(python_only=False)
+
+ def run_test(example, output_file):
+ """ Run it """
+ try:
+ fp = open(example, 'r')
+ except IOError:
+ return
+ else:
+ try:
+ input = fp.read()
+ finally:
+ fp.close()
+
+ def load_output(filename):
+ try:
+ fp = open(filename, 'r')
+ except IOError:
+ return None
+ else:
+ try:
+ output = fp.read()
+ finally:
+ fp.close()
+ output = output.strip()
+ if _re.search(r'(?<!\\)(?:\\\\)*\\[0-9a-zA-Z]{1,6}$', output):
+ output += ' '
+ return output
+
+ output = load_output(output_file)
+ output_b = load_output(output_file + '.b')
+
+ def do_test(cssmin, output, **options):
+ try:
+ genout = cssmin(input, **options)
+ except (KeyboardInterrupt, SystemExit):
+ raise
+ except:
+ return 1, "%(RED)s exc%(NORMAL)s "
+ else:
+ if output is None:
+ return 1, "%(RED)smiss%(NORMAL)s "
+ elif genout == output or genout == output.rstrip():
+ return 0, "%(GREEN)sOK%(NORMAL)s "
+ else:
+ return 1, "%(RED)sfail%(NORMAL)s "
+
+ erred, out = do_test(py_cssmin, output)
+ erred, c_out = do_test(c_cssmin, output)
+ erred, out_b = do_test(py_cssmin, output_b, keep_bang_comments=True)
+ erred, c_out_b = do_test(c_cssmin, output_b, keep_bang_comments=True)
+
+ term.write(
+ "%(out)s %(out_b)s | %(c_out)s %(c_out_b)s - %%(example)s\n"
+ % locals(),
+ example=_os.path.basename(example),
+ )
+ return erred
+
+ # end
+ # begin main test code
+
+ erred = 0
+ basedir = shell.native(basedir)
+ strip = len(basedir) - len(_os.path.basename(basedir))
+ for dirname, dirs, files in shell.walk(basedir):
+ dirs[:] = [
+ item for item in dirs if item not in ('.svn', '.git', 'out')
+ ]
+ dirs.sort()
+ files = [item for item in files if item.endswith('.css')]
+ if not files:
+ continue
+ if not _os.path.isdir(_os.path.join(basedir, dirname, 'out')):
+ continue
+ term.yellow("---> %s" % (dirname[strip:],))
+ files.sort()
+ for filename in files:
+ if run_test(
+ _os.path.join(dirname, filename),
+ _os.path.join(dirname, 'out', filename[:-4] + '.out'),
+ ): erred = 1
+ term.yellow("<--- %s" % (dirname[strip:],))
+ return erred
+
+
+def main():
+ """ Main """
+ basedir, libdir = None, None
+ accept_opts = True
+ args = []
+ for arg in _sys.argv[1:]:
+ if accept_opts:
+ if arg == '--':
+ accept_opts = False
+ continue
+ elif arg == '-q':
+ term.write = term.green = term.red = term.yellow = \
+ term.announce = \
+ lambda fmt, **kwargs: None
+ continue
+ elif arg == '-p':
+ info = {}
+ for key in term.terminfo():
+ info[key] = ''
+ info['ERASE'] = '\n'
+ term.terminfo.info = info
+ continue
+ elif arg.startswith('-'):
+ _sys.stderr.write("Unrecognized option %r\n" % (arg,))
+ return 2
+ args.append(arg)
+ if len(args) > 2:
+ _sys.stderr.write("Too many arguments\n")
+ return 2
+ elif len(args) < 1:
+ _sys.stderr.write("Missing arguments\n")
+ return 2
+ basedir = args[0]
+ if len(args) > 1:
+ libdir = args[1]
+ return run_tests(basedir, libdir)
+
+
+if __name__ == '__main__':
+ _sys.exit(main())