exercism / exercism/problem-specifications

Should the value of `error` be mutable?

未关闭
#1,709 4 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Ruby
星标
358
派生
563
平均合并
18 小时 41 分钟
30 天内合并 PR
2

描述

### Example
In `perfect-numbers` we have this test case:
https://github.com/exercism/problem-specifications/blob/8df6cb2ed8e77aa3ac0c02744cd9ddb83920f5f2/exercises/perfect-numbers/canonical-data.json#L121-L130

And we notice (see https://github.com/exercism/problem-specifications/pull/1691) that we would like to make this change:
```diff
{
"uuid": "72445cee-660c-4d75-8506-6c40089dc302",
- "description": "Zero is rejected (not a natural number)",
+ "description": "Zero is rejected (not a positive integer)",
"property": "classify",
"input": {
"number": 0
},
"expected": {
- "error": "Classification is only possible for natural numbers."
+ "error": "Classification is only possible for positive integers."
}
```

We seem to have decided that `description` is allowed to mutate when the "meaning is unchanged" (that is, we do not add a `reimplements` test case for e.g. a simple `description`-only typo fix).

The question is: should the contents of an `error` also be considered mutable when the "meaning is unchanged", or should that require a new test case?

### Discussion
My initial opinion is something like:
1. We said that `description` should be mutable if we don't change the "meaning" of the test.
1. There are some useful error-message changes that don't change the "meaning" of the test either, and the value of `error` is similar to the "description" of the error. In the limiting case, it seems messy to add a new test case just to fix a typo in an `error` value.
1. Therefore, directly mutating the `error` value should similarly be allowed when the "meaning is unchanged".

Drawbacks:
- Is there a track that asserts something about the contents of the error message for this kind of test? Such a track would have to update that assertion, even though their `tests.toml` didn't change.
- The CI check for immutability would need to check that `expected` doesn't change, but make a special case for an `error`-only change.

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。