Commit | Line | Data |
---|---|---|
f03dc6b0 TO |
1 | #!/bin/bash |
2 | #################################################################### | |
3 | function show_help() { | |
4 | echo "Jeanine Matthews - Divergent Hunter" | |
5 | echo "summary: Execute test suite in multiple ways and compare results" | |
6 | echo "usage: env [var1=... var2=...] $0 [--bundled-full|--bf] [--bundled-indiv|--bi] [--standalone-full|--sf] [--standalone-indiv|--si] [--compare]" | |
7 | echo "Optional variables:" | |
8 | echo " - CIVI: Path to Civi installation [$CIVI]" | |
9 | echo " - PHP: Path to PHP binary [$PHP]" | |
10 | echo " - PHPUNIT: Path to phpunit binary [$PHPUNIT]" | |
11 | echo " - TESTCLASS: PHP class name for the test case/suite [$TESTCLASS]" | |
12 | echo " - TESTPATH: Path for the test file/directory (Note: MUST match TESTCLASS) [$TESTPATH]" | |
13 | echo " - OUTDIR: Folder to which outputs are written [$OUTDIR]" | |
14 | } | |
15 | ||
16 | function reset_dir() { | |
17 | [ -d "$1" ] && rm -rf "$1" | |
18 | mkdir -p "$1" | |
19 | } | |
20 | ||
21 | #################################################################### | |
22 | ## Env | |
23 | export PHP=${PHP:-php} | |
24 | export PHPUNIT=${PHPUNIT:-phpunit} | |
25 | export TESTCLASS=${TESTCLASS:-api_v3_AllTests} | |
26 | export TESTPATH=${TESTPATH:-tests/phpunit/api/v3} | |
27 | export CIVI=$(realpath "${CIVI:-.}") | |
28 | export OUTDIR=$(realpath "${OUTDIR:-output}") | |
29 | ||
30 | #################################################################### | |
31 | ## Main | |
32 | if [ -z "$1" ];then | |
33 | show_help | |
34 | exit 1 | |
35 | fi | |
36 | ||
37 | while [ -n "$1" ]; do | |
38 | OPTION="$1" | |
39 | shift | |
40 | ||
41 | case "$OPTION" in | |
42 | --bundled-full|--bf) | |
43 | echo "[[ Prepare $OUTDIR/bundled-full ]]" | |
44 | ||
45 | [ -d "packages/PHPUnit.bak" ] && mv "packages/PHPUnit.bak" "packages/PHPUnit" | |
46 | if [ ! -d "$CIVI/packages/PHPUnit" ]; then | |
47 | echo "Missing $CIVI/packages/PHPUnit" | |
48 | exit 2 | |
49 | fi | |
50 | ||
51 | reset_dir "$OUTDIR/bundled-full" | |
52 | ||
53 | pushd "$CIVI/tools" | |
54 | $PHP ./scripts/phpunit --tap --log-json "$OUTDIR/bundled-full/all.json" "$TESTCLASS" | |
55 | popd | |
56 | ;; | |
57 | ||
58 | --bundled-indiv|--bi) | |
59 | echo "[[ Prepare $OUTDIR/bundled-indiv ]]" | |
60 | ||
61 | [ -d "packages/PHPUnit.bak" ] && mv "packages/PHPUnit.bak" "packages/PHPUnit" | |
62 | if [ ! -d "$CIVI/packages/PHPUnit" ]; then | |
63 | echo "Missing $CIVI/packages/PHPUnit" | |
64 | exit 2 | |
65 | fi | |
66 | ||
67 | reset_dir "$OUTDIR/bundled-indiv" | |
68 | ||
69 | pushd "$CIVI/tools" | |
35e0b420 | 70 | ./scripts/phpunit-indiv --civi --test-dir "../$TESTPATH" --json-dir "$OUTDIR/bundled-indiv" |
f03dc6b0 TO |
71 | popd |
72 | ||
73 | cat "$OUTDIR"/bundled-indiv/*-*.json > "$OUTDIR/bundled-indiv/all.json" | |
74 | ;; | |
75 | ||
76 | --standalone-full|--sf) | |
77 | echo "[[ Prepare $OUTDIR/standalone-full ]]" | |
78 | reset_dir "$OUTDIR/standalone-full" | |
79 | ||
80 | pushd "$CIVI" | |
81 | [ -d "packages/PHPUnit" ] && mv "packages/PHPUnit" "packages/PHPUnit.bak" | |
82 | $PHP $(which $PHPUNIT) --tap --log-json "$OUTDIR/standalone-full/all.json" "$TESTPATH" | |
83 | [ -d "packages/PHPUnit.bak" ] && mv "packages/PHPUnit.bak" "packages/PHPUnit" | |
84 | popd | |
85 | ;; | |
86 | ||
87 | --standalone-indiv|--si) | |
88 | echo "[[ Prepare $OUTDIR/standalone-indiv ]]" | |
89 | reset_dir "$OUTDIR/standalone-indiv" | |
90 | ||
91 | pushd "$CIVI" | |
92 | [ -d "packages/PHPUnit" ] && mv "packages/PHPUnit" "packages/PHPUnit.bak" | |
35e0b420 | 93 | ./tools/scripts/phpunit-indiv --test-dir "$TESTPATH" --json-dir "$OUTDIR/standalone-indiv" |
f03dc6b0 TO |
94 | [ -d "packages/PHPUnit.bak" ] && mv "packages/PHPUnit.bak" "packages/PHPUnit" |
95 | popd | |
96 | ||
97 | cat "$OUTDIR"/standalone-indiv/*-*.json > "$OUTDIR/standalone-indiv/all.json" | |
98 | ;; | |
99 | ||
100 | --compare) | |
101 | echo "[[ Compare all results in $OUTDIR ]]" | |
102 | phpunit-compare "$OUTDIR"/*/all.json | |
103 | ;; | |
104 | esac | |
105 | done |