Skip to content

Commit 04bc977

Browse files
committed
Add test suite runner.
This is just a proof of concept for now; when a test fails, it ought to print a more useful diff of what changed.
1 parent f2cb3c3 commit 04bc977

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

src/run-shape-tests.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#!/usr/bin/python
2+
3+
# Copyright (C) 2010 Evan Martin <martine@danga.com>
4+
#
5+
# This is part of HarfBuzz, an OpenType Layout engine library.
6+
#
7+
# Permission is hereby granted, without written agreement and without
8+
# license or royalty fees, to use, copy, modify, and distribute this
9+
# software and its documentation for any purpose, provided that the
10+
# above copyright notice and the following two paragraphs appear in
11+
# all copies of this software.
12+
#
13+
# IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
14+
# DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
15+
# ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
16+
# IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
17+
# DAMAGE.
18+
#
19+
# THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
20+
# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
21+
# FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
22+
# ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
23+
# PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
24+
25+
import os
26+
import simplejson as json
27+
import subprocess
28+
import sys
29+
30+
count = 0
31+
for filename in os.listdir('shape-tests'):
32+
testcase = json.loads(open('shape-tests/' + filename).read())
33+
34+
command = ['./shape']
35+
if 'rtl' in testcase:
36+
command.append('--rtl')
37+
# XXX generalize font paths/names/hashes.
38+
command.append('/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf')
39+
command.append(testcase['input'])
40+
41+
output = subprocess.Popen(command, stdout=subprocess.PIPE).communicate()[0]
42+
result = json.loads(output)
43+
44+
assert testcase == result
45+
count += 1
46+
47+
print "Ran %d test cases." % count

0 commit comments

Comments
 (0)