-
-
Notifications
You must be signed in to change notification settings - Fork 257
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Expecting Error value wrapped in an Exit would not be equal using @effect/vitest #2820
Comments
Looks like a vitest bug, the following passes (wrongly): import * as it from "@effect/vitest"
import { Schema } from "@effect/schema"
import { Exit } from "effect"
class SchemaTaggedError extends Schema.TaggedError<SchemaTaggedError>()(
"SchemaTaggedError",
{
msg: Schema.String
}
) {}
it.it("test exit with error value", () => {
it.expect(Exit.fail(new SchemaTaggedError({ msg: "a" })))
.toEqual(Exit.fail(new SchemaTaggedError({ msg: "b" })))
}) And the following fails: import * as it from "@effect/vitest"
import { Schema } from "@effect/schema"
import { Exit } from "effect"
class SchemaTaggedError extends Schema.TaggedError<SchemaTaggedError>()(
"SchemaTaggedError",
{
message: Schema.String
}
) {}
it.it("test exit with error value", () => {
it.expect(Exit.fail(new SchemaTaggedError({ message: "a" })))
.toEqual(Exit.fail(new SchemaTaggedError({ message: "b" })))
}) The reason seems to be how vitest decides to compare instances of Error, it seems that only the message gets considered |
Even though something is deeply odd because the following correctly fails: import * as it from "@effect/vitest"
import { Schema } from "@effect/schema"
import { Exit } from "effect"
class SchemaTaggedError extends Schema.TaggedError<SchemaTaggedError>()(
"SchemaTaggedError",
{
msg: Schema.String
}
) {
}
it.it("test exit with error value", () => {
it.expect(new SchemaTaggedError({ msg: "a" }))
.toEqual(new SchemaTaggedError({ msg: "b" }))
}) |
Thanks @mikearnaldi to check it out this issue. Few month ago, I already reported an issue on vitest repo, and I was using a custom matcher that properly compare Error instances (by not only considering the msg property). Likewise, I asked this morning to the same thread vitest-dev/vitest#5244 |
even adding a custom matcher for errors doesn't work, it looks like it is ignored... |
Yes. Also, there is a recent issue related to the cause prop on Error instances reported on vitest-dev/vitest#5697 not sure it's related. |
What version of Effect is running?
3.2.3
What steps can reproduce the bug?
What is the expected behavior?
The 3rd test should fail.
What do you see instead?
The 3rd test pass.
Additional information
I'm using latest version as follow:
The text was updated successfully, but these errors were encountered: