3 TRACIE_DIR
="$(dirname "$
(readlink
-f "$0")")/.."
8 repo
="$(mktemp -d $TEST_DIR/repo.XXXXXXXXXX)"
9 cp -R "$TEST_DIR"/tests
/test-data
/* "$repo"
13 git config user.email
"me@example.com"
14 git config user.name
"Me me"
15 git lfs track
'*.testtrace' > /dev
/null
;
17 git commit
-q -a -m 'initial';
23 [ -d "$1"/.git
] && rm -rf "$1"
28 echo "Assertion failed: \"$1\""
34 # Run tests for the .testtrace types, using the "test-device" device name.
35 DEVICE_NAME
=test-device CI_PROJECT_DIR
="$TEST_DIR" \
36 "$TEST_DIR/tracie.sh" "$TEST_DIR/tests/traces.yml" testtrace
44 TEST_DIR
="$(mktemp -d -t tracie.test.XXXXXXXXXX)"
45 # Copy all the tracie scripts to the test dir and later make that the
46 # CI_PROJECT_DIR for the run-tests.sh script. This avoids polluting the
47 # normal working dir with test result artifacts.
48 cp -R "$TRACIE_DIR"/.
"$TEST_DIR"
50 # Ensure we have a clean environment.
51 unset TRACIE_STORE_IMAGES
57 if ($1 > "$log" 2>&1 ;); then
59 echo "$1: \e[0;32mSuccess\e[0m"
65 echo "$1: \e[0;31mFail\e[0m"
76 tracie_succeeds_if_all_images_match
() {
86 tracie_fails_on_image_mismatch
() {
90 sed -i 's/5efda83854befe0155ff8517a58d5b51/8e0a801367e1714463475a824dab363b/g' \
91 "$TEST_DIR/tests/traces.yml"
99 tracie_ignores_unspecified_trace_types
() {
100 repo
="$(create_repo)"
103 echo " - path: trace1/empty.trace" >> "$TEST_DIR/tests/traces.yml"
104 echo " expectations:" >> "$TEST_DIR/tests/traces.yml"
105 echo " - device: test-device" >> "$TEST_DIR/tests/traces.yml"
106 echo " checksum: 000000000000000" >> "$TEST_DIR/tests/traces.yml"
107 # For the tests we only scan for the .testtrace type,
108 # so the .trace file added below should be ignored.
109 echo "empty" > trace
1/empty.trace
110 git lfs track
'*.trace'
112 git commit
-a -m 'break'
120 tracie_skips_traces_without_checksum
() {
121 repo
="$(create_repo)"
124 echo " - path: trace1/red.testtrace" >> "$TEST_DIR/tests/traces.yml"
125 echo " expectations:" >> "$TEST_DIR/tests/traces.yml"
126 echo " - device: bla" >> "$TEST_DIR/tests/traces.yml"
127 echo " checksum: 000000000000000" >> "$TEST_DIR/tests/traces.yml"
128 # red.testtrace should be skipped, since it doesn't
129 # have any checksums for our device
130 echo "ff0000ff" > trace
1/red.testtrace
132 git commit
-a -m 'red'
140 tracie_fails_on_dump_image_error
() {
141 repo
="$(create_repo)"
144 # "invalid" should fail to parse as rgba and
146 echo "invalid" > trace
1/magenta.testtrace
148 git commit
-a -m 'invalid'
156 tracie_stores_only_logs_on_checksum_match
() {
157 repo
="$(create_repo)"
163 assert
"[ -f "$TEST_DIR/results
/trace
1/test
/test-device
/magenta.testtrace.log
" ]"
164 assert
"[ -f "$TEST_DIR/results
/trace
2/test
/test-device
/olive.testtrace.log
" ]"
166 assert
"[ ! -f "$TEST_DIR/results
/trace
1/test
/test-device
/magenta.testtrace-0.png
" ]"
167 assert
"[ ! -f "$TEST_DIR/results
/trace
2/test
/test-device
/olive.testtrace-0.png
" ]"
174 tracie_stores_images_on_checksum_mismatch
() {
175 repo
="$(create_repo)"
178 sed -i 's/5efda83854befe0155ff8517a58d5b51/8e0a801367e1714463475a824dab363b/g' \
179 "$TEST_DIR/tests/traces.yml"
184 assert
"[ ! -f "$TEST_DIR/results
/trace
1/test
/test-device
/magenta.testtrace-0.png
" ]"
185 assert
"[ -f "$TEST_DIR/results
/trace
2/test
/test-device
/olive.testtrace-0.png
" ]"
190 tracie_stores_images_on_request
() {
191 repo
="$(create_repo)"
194 (export TRACIE_STORE_IMAGES
=1; run_tracie
)
197 assert
"[ -f "$TEST_DIR/results
/trace
1/test
/test-device
/magenta.testtrace-0.png
" ]"
198 assert
"[ -f "$TEST_DIR/results
/trace
2/test
/test-device
/olive.testtrace-0.png
" ]"
205 run_test tracie_succeeds_if_all_images_match
206 run_test tracie_fails_on_image_mismatch
207 run_test tracie_ignores_unspecified_trace_types
208 run_test tracie_skips_traces_without_checksum
209 run_test tracie_fails_on_dump_image_error
210 run_test tracie_stores_only_logs_on_checksum_match
211 run_test tracie_stores_images_on_checksum_mismatch
212 run_test tracie_stores_images_on_request