Skip to content

Latest commit

 

History

History
42 lines (24 loc) · 2.01 KB

README.md

File metadata and controls

42 lines (24 loc) · 2.01 KB

Exercism Swift Test Runner

The Docker image to automatically run tests on Swiftsolutions submitted to Exercism.

Running the Tests

To run all of the tests, do the following:

  1. Open a terminal in the project's root
  2. Run bin/run-all.sh test test/output

These are golden tests that compare the results.json generated by running the current state of the code against the "known good" test/<test-name>/results.json. All files created during the test run itself are discarded.

When you've made modifications to the code that will result in a new "golden" state, you'll need to generate and commit a new test/<test-name>/results.json file.

Generating results.json for an Exercise

To run the tests of an arbitrary exercise, do the following:

  1. Open a terminal in the project's root
  2. Run ./bin/run.sh <exercise-slug> <path/to/solution/dir/> </path/to/output/dir/>
    E.g. bin/run.sh multiple-tests-single-fail test/ test/output

Generating results.json for an Exercise with Docker

This script is provided for testing purposes.

Note that due to the current test scripts state, which uses a simple diff to compare snapshots, you will have to use a different test solution directory, here dockerTest. This directory uses modified golden tests that match the path information reported in XCTest's errors and keep the paths from tripping up the diff check.

To run the tests of an arbitrary exercise using the Docker container, do the following:

  1. Open a terminal in the project's root
  2. Run ./bin/run-in-docker.sh <exercise-slug> <./relative/path/to/solution/dir/> <./relative/path/to/output/dir/>
    E.g. bin/run-in-docker.sh multiple-tests-single-fail ./dockerTest ./dockerTest/output

Note: the solution and output directory's MUST be relative paths!

To run all of the tests using the Docker container, do the following:

  1. Open a terminal in the project's root
  2. Run bin/run-all-in-docker.sh