OLD | NEW |
| (Empty) |
1 #!/bin/bash | |
2 # | |
3 # Copyright 2014 The Chromium Authors. All rights reserved. | |
4 # Use of this source code is governed by a BSD-style license that can be | |
5 # found in the LICENSE file. | |
6 # | |
7 # Hacky, primitive testing: This runs the style plugin for a set of input files | |
8 # and compares the output with golden result files. | |
9 | |
10 E_BADARGS=65 | |
11 E_FAILEDTEST=1 | |
12 | |
13 failed_any_test= | |
14 | |
15 # Prints usage information. | |
16 usage() { | |
17 echo "Usage: $(basename "${0}")" \ | |
18 "<path to clang>" \ | |
19 "<path to plugin>" | |
20 echo "" | |
21 echo " Runs all the libBlinkGCPlugin unit tests" | |
22 echo "" | |
23 } | |
24 | |
25 # Runs a single test case. | |
26 do_testcase() { | |
27 local flags="" | |
28 if [ -e "${3}" ]; then | |
29 flags="$(cat "${3}")" | |
30 fi | |
31 local output="$("${CLANG_PATH}" -c -Wno-c++11-extensions \ | |
32 -Wno-inaccessible-base \ | |
33 -Xclang -load -Xclang "${PLUGIN_PATH}" \ | |
34 -Xclang -add-plugin -Xclang blink-gc-plugin ${flags} ${1} 2>&1)" | |
35 local json="${input%cpp}graph.json" | |
36 if [ -f "$json" ]; then | |
37 output="$(python ../process-graph.py -c ${json} 2>&1)" | |
38 fi | |
39 local diffout="$(echo "${output}" | diff - "${2}")" | |
40 if [ "${diffout}" = "" ]; then | |
41 echo "PASS: ${1}" | |
42 else | |
43 failed_any_test=yes | |
44 echo "FAIL: ${1}" | |
45 echo "Output of compiler:" | |
46 echo "${output}" | |
47 echo "Expected output:" | |
48 cat "${2}" | |
49 echo | |
50 fi | |
51 } | |
52 | |
53 # Validate input to the script. | |
54 if [[ -z "${1}" ]]; then | |
55 usage | |
56 exit ${E_BADARGS} | |
57 elif [[ -z "${2}" ]]; then | |
58 usage | |
59 exit ${E_BADARGS} | |
60 elif [[ ! -x "${1}" ]]; then | |
61 echo "${1} is not an executable" | |
62 usage | |
63 exit ${E_BADARGS} | |
64 elif [[ ! -f "${2}" ]]; then | |
65 echo "${2} could not be found" | |
66 usage | |
67 exit ${E_BADARGS} | |
68 else | |
69 export CLANG_PATH="${1}" | |
70 export PLUGIN_PATH="${2}" | |
71 echo "Using clang ${CLANG_PATH}..." | |
72 echo "Using plugin ${PLUGIN_PATH}..." | |
73 | |
74 # The golden files assume that the cwd is this directory. To make the script | |
75 # work no matter what the cwd is, explicitly cd to there. | |
76 cd "$(dirname "${0}")" | |
77 fi | |
78 | |
79 for input in *.cpp; do | |
80 do_testcase "${input}" "${input%cpp}txt" "${input%cpp}flags" | |
81 done | |
82 | |
83 if [[ "${failed_any_test}" ]]; then | |
84 exit ${E_FAILEDTEST} | |
85 fi | |
OLD | NEW |