elm-explorations / elm-explorations/test

“Maximum call stack size exceeded” on comparison of large data structures

Open
#22 3 comments 1 reaction 0 assignees View on GitHub
Dominant language
Elm
Stars
244
Forks
40
Avg merge
1d 23h
Merged PRs (30d)
2

Description

I stumbled across this crash when I migrated one of my Elm projects to 0.19. This is the test I wrote with Elm 0.18, where it worked without problems: https://gitlab.com/MazeChaZer/knobster/blob/8d39fa8de9f5744cdaff45755b23050f4d9d06e0/tests/GridTest.elm

elm: 0.19.0
elm-explorations/test: 1.1.0
node-test-runner: 0.19.0-beta8

SSCCE:
```elm
module Example exposing (suite)

import Expect
import Test exposing (..)

suite : Test
suite =
test "foo bar" <|
\() ->
Expect.equal
[ [ { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
]
, [ { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
]
, [ { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
]
, [ { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
]
, [ { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
]
, [ { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
, { foo = "foo", bar = "bar" }
]
]
[]
```

Output:

```
$ elm-test
Success!
Success! Compiled 1 module.

elm-test 0.19.0-beta8
---------------------

Running 1 test. To reproduce these results, run: elm-test --fuzz 100 --seed 195384286911629

[project]/elm-stuff/generated-code/elm-explorations/test/elmTestOutput.js:3665
var change = function () {
^

RangeError: Maximum call stack size exceeded
at [project]/elm-stuff/generated-code/elm-explorations/test/elmTestOutput.js:3665:26
at Function.f ([project]/elm-stuff/generated-code/elm-explorations/test/elmTestOutput.js:3707:5)
at A5 ([project]/elm-stuff/generated-code/elm-explorations/test/elmTestOutput.js:113:28)
at [project]/elm-stuff/generated-code/elm-explorations/test/elmTestOutput.js:3711:13
at Function.f ([project]/elm-stuff/generated-code/elm-explorations/test/elmTestOutput.js:3648:11)
at A2 ([project]/elm-stuff/generated-code/elm-explorations/test/elmTestOutput.js:104:28)
at Function.f ([project]/elm-stuff/generated-code/elm-explorations/test/elmTestOutput.js:3708:11)
at A5 ([project]/elm-stuff/generated-code/elm-explorations/test/elmTestOutput.js:113:28)
at [project]/elm-stuff/generated-code/elm-explorations/test/elmTestOutput.js:3711:13
at Function.f ([project]/elm-stuff/generated-code/elm-explorations/test/elmTestOutput.js:3648:11)

There was an unexpected runtime exception while running tests
```

A normal `==` comparison is no problem with this data structure: https://ellie-app.com/3fQ2FSpkxYca1

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.