File tree Expand file tree Collapse file tree 3 files changed +82
-0
lines changed Expand file tree Collapse file tree 3 files changed +82
-0
lines changed Original file line number Diff line number Diff line change 5
5
.gitattributes
6
6
.dockerignore
7
7
Dockerfile
8
+ bin /run-in-docker.sh
9
+ bin /run-tests-in-docker.sh
10
+ bin /run-tests.sh
11
+ test /
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env sh
2
+
3
+ # Synopsis:
4
+ # Test the test runner Docker image by running it against a predefined set of
5
+ # solutions with an expected output.
6
+ # The test runner Docker image is built automatically.
7
+
8
+ # Output:
9
+ # Outputs the diff of the expected test results against the actual test results
10
+ # generated by the test runner Docker image.
11
+
12
+ # Example:
13
+ # ./bin/run-tests-in-docker.sh
14
+
15
+ # Stop executing when a command returns a non-zero return code
16
+ set -e
17
+
18
+ # Build the Docker image
19
+ docker build --rm -t exercism/python-test-runner .
20
+
21
+ # Run the Docker image using the settings mimicking the production environment
22
+ docker run \
23
+ --rm \
24
+ --network none \
25
+ --read-only \
26
+ --mount type=bind,src=" ${PWD} /test" ,dst=/opt/test-runner/test \
27
+ --mount type=volume,dst=/tmp \
28
+ --volume " ${PWD} /bin/run-tests.sh:/opt/test-runner/bin/run-tests.sh" \
29
+ --workdir /opt/test-runner \
30
+ --entrypoint /opt/test-runner/bin/run-tests.sh \
31
+ exercism/python-test-runner
Original file line number Diff line number Diff line change
1
+ #! /usr/bin/env sh
2
+
3
+ # Synopsis:
4
+ # Test the test runner by running it against a predefined set of solutions
5
+ # with an expected output.
6
+
7
+ # Output:
8
+ # Outputs the diff of the expected test results against the actual test results
9
+ # generated by the test runner.
10
+
11
+ # Example:
12
+ # ./bin/run-tests.sh
13
+
14
+ exit_code=0
15
+
16
+ # Iterate over all test directories
17
+ for test_dir in test/* ; do
18
+ if [ ! -d " ${test_dir} " ]; then
19
+ continue
20
+ fi
21
+
22
+ test_dir_name=$( basename " ${test_dir} " )
23
+ test_dir_path=$( realpath " ${test_dir} " )
24
+ output_dir_path=$( mktemp -d -t ' test-runner-tests-XXXXXXXXX' )
25
+ results_file_path=" ${output_dir_path} /results.json"
26
+ expected_results_file_path=" ${test_dir_path} /results.json"
27
+
28
+ bin/run.sh " ${test_dir_name} " " ${test_dir_path} " " ${output_dir_path} "
29
+
30
+ # OPTIONAL: Normalize the results file
31
+ # If the results.json file contains information that changes between
32
+ # different test runs (e.g. timing information or paths), you should normalize
33
+ # the results file to allow the diff comparison below to work as expected
34
+ # sed -i -E \
35
+ # -e 's/Elapsed time: [0-9]+\.[0-9]+ seconds//g' \
36
+ # -e "s~${test_dir_path}~/solution~g" \
37
+ # "${results_file_path}"
38
+
39
+ echo " ${test_dir_name} : comparing results.json to expected_results.json"
40
+ diff " ${results_file_path} " " ${expected_results_file_path} "
41
+
42
+ if [ $? -ne 0 ]; then
43
+ exit_code=1
44
+ fi
45
+ done
46
+
47
+ exit ${exit_code}
You can’t perform that action at this time.
0 commit comments