Question about the behavior related to duplicate descriptions error and automatic description level added with the module name?
mpizenberg opened this issue · comments
When the error for duplicate descriptions was introduced, it was in part to get rid of potential copy-paste descriptions for more useful failure messages.
In node-test-runner, all tests are aggregated with their module name prepended to each test description. As a result, potential copy pasted descriptions across test files are not detected. In elm-test-rs, we do not prepend the module name to the description, causing behavior differences such as tests failing in elm-test-rs with duplicate descriptions errors. Although annoying to fix, which would be improved with this PR, @avh4 acknowledged that "In all cases, the duplicate describe names were a mistake".
I must admit that initially my reason for this behavior change was not to catch duplicate descriptions. It was for two reasons, (1) because I didn't like having labels in the failure reports that were never set by the user themselves, especially knowing that it's easy to add a suite = describe "This.Module" [ allExposedTests... ]
, and (2) because it resulted in simpler code in the tests runner.
Now knowing that it has the following advantages:
- be explicit about your tests descriptions
- potentially catch copy-paste errors
- simpler test runner code
would node-test-runner be willing to change that behavior at the next breaking update? Or are there other advantages than copy-paste commodity that I didn't saw making it worth staying as is?
node-test-runner’s current behavior also has an edge case quirk: If you try to name a test the same as its module you get a somewhat confusing error.
module TestsPassing exposing (myTest)
import Expect
import Test exposing (test)
myTest =
test "TestsPassing" <|
\() ->
Expect.equal 1 1
The test 'TestsPassing' contains a child test of the same name. Let's rename them so we know which is which.
I actually need to know the module name. So if this gets removed, it would be nice to get a new field with that information. As we can also deduct the filepath from it.
@mpizenberg did the module name get removed?
@harrysarson no, not in elm-test, just that we are trying integration of elm-test-rs in the language server, which is extracting the module name from the root label of a description. Thus @razzeee comment.