Skip to content

Commit

Permalink
Work
Browse files Browse the repository at this point in the history
  • Loading branch information
ErikSchierboom committed Aug 7, 2024
1 parent c1e0b88 commit af0c03a
Showing 1 changed file with 12 additions and 9 deletions.
21 changes: 12 additions & 9 deletions building/tooling/test-runners/libraries.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,28 @@ Exercises must thus, with few exceptions, be solvable without using libraries.

## Reasons to support libraries

There are couple of reasons why a track might still want to support using libraries:
There are couple of reasons why a track might still want to support libraries:

1. The language has a minimal standard library and it is idiomatic to use libraries to add functionality.
1. The language has a (very) minimal standard library.
An example of such a language is Rust.
2. The exercise is only really solvable using libraries.
An example of such an exercise is the [lens-person exercise](https://exercism.org/exercises/lens-person), which in many languages can only be solved using a library.
3. The library adds testing functionality.
2. The library adds testing functionality.
An example is a library that adds support for property-based testing.
3. The exercise can only be solved using a library.
An example of such an exercise is the [lens-person exercise](https://exercism.org/exercises/lens-person), which in most languages can only be solved using a library.

## Supporting libraries in the test runner

As the test runner does not have access to the internet whilst running, it is not possible to download libraries at run time.
The **only** solution to this problem is to install/download libraries at build time, where you _do_ have access to the internet.
In practice, this means you'll need to install/download libraries within the Dockerfile.

https://github.com/exercism/prolog-test-runner/blob/ed7447a7518ede6ee3405e649f50aaec828e318b/Dockerfile
As an example, the [Prolog test runner's Dockerfile](https://github.com/exercism/prolog-test-runner/blob/ed7447a7518ede6ee3405e649f50aaec828e318b/Dockerfile) installs the `date_time` library:

```dockerfile
RUN swipl pack install date_time -y
```

## Documentation

If your track supports additional
(/docs/building/tracks/docs)
We recommend creating a document in the track repo's `docs` directory that lists the libraries that people can use, po
If your track supports libraries, this should be documented in a [track doc](/docs/building/tracks/docs).
Please also link to this document (using its full URL) from the [`exercises/shared/.docs/help.md` document](/docs/building/tracks/shared-files#file-help-md).

0 comments on commit af0c03a

Please sign in to comment.