You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: building/tooling/README.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -45,6 +45,6 @@ Here are some examples of maintenance tooling:
45
45
Track tooling is usually (mostly) written in the track's language.
46
46
47
47
```exercism/caution
48
-
While you're free to use additional languages, each additional language will make it harder to find people that can maintain or contribute to the track.
49
-
We recommend using the track's language where possible, because it makes maintaining or contributing easier.
48
+
While you're free to use other languages, each additional language will make it harder to maintain or contribute to the track.
49
+
Therefore, we recommend using the track's language where possible, because it makes maintaining or contributing easier.
Copy file name to clipboardexpand all lines: building/tooling/test-generators.md
+12-12
Original file line number
Diff line number
Diff line change
@@ -32,8 +32,8 @@ We recommend doing this periodically, to check if there are problematic test cas
32
32
33
33
There are two possible starting points when implementing a Test Generator for an exercise:
34
34
35
-
1. The exercise is new and doesn't yet have any tests
36
-
2. The exercise already exists and has existing tests
35
+
1. The exercise is new and thus doesn't have any tests
36
+
2. The exercise already exists and thus has existing tests
37
37
38
38
```exercism/caution
39
39
If there are existing tests, implement the Test Generator such that the tests it generates do not break existing solutions.
@@ -51,7 +51,7 @@ We've found that the code-based approach will lead to fairly complex Test Genera
51
51
What we recommend is the following flow:
52
52
53
53
1. Read the exercise's canonical data
54
-
2. Exclude the test cases that are marked as `include = false` in the exercise's `tests.toml` file
54
+
2. Exclude the test cases that are marked as `include = false` in the exercise's [`tests.toml` file](/docs/building/tracks/practice-exercises#file-meta-tests-toml)
55
55
3. Convert the exercise's canonical data into a format that can be used in a template
56
56
4. Pass the exercise's canonical data to an exercise-specific template
57
57
@@ -62,28 +62,28 @@ The key benefit of this setup is that each exercise has its own template, which:
62
62
- Makes it safe to edit them without risking breaking another exercise
63
63
64
64
```exercism/caution
65
-
Some additional things to be aware of when designing the test generator
65
+
When designing the test generator, try to:
66
66
67
-
- Minimize the pre-processing of canonical data inside the Test Generator
68
-
- Try to reduce coupling between templates
67
+
- Minimize pre-processing of canonical data inside the Test Generator
68
+
- Reduce coupling between templates
69
69
```
70
70
71
71
## Implementation
72
72
73
73
The Test Generator is usually (mostly) written in the track's language.
74
74
75
75
```exercism/caution
76
-
While you're free to use additional languages, each additional language will make it harder to find people that can maintain or contribute to the track.
77
-
We recommend using the track's language where possible, only using additional languages when it makes maintaining or contributing easier.
76
+
While you're free to use other languages, each additional language will make it harder to maintain or contribute to the track.
77
+
Therefore, we recommend using the track's language where possible, because it makes maintaining or contributing easier.
78
78
```
79
79
80
80
### Canonical data
81
81
82
82
The core data the Test Generator works with is an exercise's [`canonical-data.json` file](https://github.com/exercism/problem-specifications?tab=readme-ov-file#test-data-canonical-datajson).
83
-
This file is defined in the [exercism/problem-specifications repo](https://github.com/exercism/problem-specifications), which defines shared metadata for many Exercism's exercises.
83
+
This file is defined in the [exercism/problem-specifications repo](https://github.com/exercism/problem-specifications), which defines shared metadata for [many Exercism's exercises](https://github.com/search?q=repo%3Aexercism%2Fproblem-specifications+path%3A**%2Fcanonical-data.json&type=code&ref=advsearch).
84
84
85
-
```exercism/note
86
-
Not all exercises have a `canonical-data.json` file.
85
+
```exercism/caution
86
+
Not all exercises have a `canonical-data.json` file!
87
87
In case they don't, you'll need to manually create the tests, as there is no data for the Test Generator to work with.
88
88
```
89
89
@@ -201,7 +201,7 @@ If your track does not support grouping tests, you'll need to:
201
201
202
202
- Traverse/flatten the `cases` hierarchy to end up with only the innermost (leaf) test cases
203
203
- Combine the test case description with its parent description(s) to create a unique test name
Copy file name to clipboardexpand all lines: building/tracks/new/implement-tooling.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -51,8 +51,8 @@ To speed up adding new exercises, consider building a [Test Generator](/docs/bui
51
51
Track tooling is usually (mostly) written in the track's language.
52
52
53
53
```exercism/caution
54
-
While you're free to use additional languages, each additional language will make it harder to find people that can maintain or contribute to the track.
55
-
We recommend using the track's language where possible, because it makes maintaining or contributing easier.
54
+
While you're free to use other languages, each additional language will make it harder to maintain or contribute to the track.
55
+
Therefore, we recommend using the track's language where possible, because it makes maintaining or contributing easier.
0 commit comments