effect icon indicating copy to clipboard operation
effect copied to clipboard

Expecting Error value wrapped in an Exit would not be equal using @effect/vitest

Open steffanek opened this issue 9 months ago • 5 comments

What version of Effect is running?

3.2.3

What steps can reproduce the bug?

import * as it from "@effect/vitest";
it.addEqualityTesters();

import { Schema } from "@effect/schema";
import { Exit } from "effect";

class SchemaTaggedError extends Schema.TaggedError<SchemaTaggedError>()(
  "SchemaTaggedError",
  {
    msg: Schema.String,
    other: Schema.String,
  }
) {}

it.it("test error", () => {
  it.expect(new SchemaTaggedError({ msg: "a", other: "other" })).toEqual(
    new SchemaTaggedError({ msg: "a", other: "other" })
  );
});

it.it("test exit with string value", () => {
  it.expect(Exit.fail("d")).toEqual(Exit.fail("d"));
});

//This pass, however error values are not the same
it.it("test exit with error value", () => {
  it.expect(
    Exit.fail(new SchemaTaggedError({ msg: "a", other: "other" }))
  ).toEqual(Exit.fail(new SchemaTaggedError({ msg: "b", other: "other" })));
});

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:

  • vitest 1.6.0
  • @effect/vitest 0.5.3
  • effect 3.2.3

steffanek avatar May 23 '24 06:05 steffanek