@effect/vitest 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,9 +9,11 @@ var Duration = _interopRequireWildcard(require("effect/Duration"));
9
9
  var Effect = _interopRequireWildcard(require("effect/Effect"));
10
10
  var Equal = _interopRequireWildcard(require("effect/Equal"));
11
11
  var Exit = _interopRequireWildcard(require("effect/Exit"));
12
+ var Fiber = _interopRequireWildcard(require("effect/Fiber"));
12
13
  var _Function = require("effect/Function");
13
14
  var Layer = _interopRequireWildcard(require("effect/Layer"));
14
15
  var Logger = _interopRequireWildcard(require("effect/Logger"));
16
+ var Runtime = _interopRequireWildcard(require("effect/Runtime"));
15
17
  var Schedule = _interopRequireWildcard(require("effect/Schedule"));
16
18
  var TestEnvironment = _interopRequireWildcard(require("effect/TestContext"));
17
19
  var Utils = _interopRequireWildcard(require("effect/Utils"));
@@ -19,8 +21,11 @@ var V = _interopRequireWildcard(require("vitest"));
19
21
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
20
22
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
23
  /** @internal */
22
- const runTest = effect => Effect.gen(function* () {
23
- const exit = yield* Effect.exit(effect);
24
+ const runTest = ctx => effect => Effect.gen(function* () {
25
+ const exitFiber = yield* Effect.fork(Effect.exit(effect));
26
+ const runtime = yield* Effect.runtime();
27
+ ctx.onTestFinished(() => Fiber.interrupt(exitFiber).pipe(Effect.asVoid, Runtime.runPromise(runtime)));
28
+ const exit = yield* Fiber.join(exitFiber);
24
29
  if (Exit.isSuccess(exit)) {
25
30
  return () => {};
26
31
  } else {
@@ -49,13 +54,15 @@ const addEqualityTesters = () => {
49
54
  /** @internal */
50
55
  exports.addEqualityTesters = addEqualityTesters;
51
56
  const makeTester = mapEffect => {
52
- const run = self => (...args) => (0, _Function.pipe)(Effect.suspend(() => self(...args)), mapEffect, runTest);
53
- const f = (name, self, timeout) => V.it(name, run(self), timeout);
54
- const skip = (name, self, timeout) => V.it.skip(name, run(self), timeout);
55
- const skipIf = condition => (name, self, timeout) => V.it.skipIf(condition)(name, run(self), timeout);
56
- const runIf = condition => (name, self, timeout) => V.it.runIf(condition)(name, run(self), timeout);
57
- const only = (name, self, timeout) => V.it.only(name, run(self), timeout);
58
- const each = cases => (name, self, timeout) => V.it.each(cases)(name, run(self), timeout);
57
+ const run = (ctx, args, self) => (0, _Function.pipe)(Effect.suspend(() => self(...args)), mapEffect, runTest(ctx));
58
+ const f = (name, self, timeout) => V.it(name, ctx => run(ctx, [ctx], self), timeout);
59
+ const skip = (name, self, timeout) => V.it.skip(name, ctx => run(ctx, [ctx], self), timeout);
60
+ const skipIf = condition => (name, self, timeout) => V.it.skipIf(condition)(name, ctx => run(ctx, [ctx], self), timeout);
61
+ const runIf = condition => (name, self, timeout) => V.it.runIf(condition)(name, ctx => run(ctx, [ctx], self), timeout);
62
+ const only = (name, self, timeout) => V.it.only(name, ctx => run(ctx, [ctx], self), timeout);
63
+ const each = cases => (name, self, timeout) => V.it.for(cases)(name, typeof timeout === "number" ? {
64
+ timeout
65
+ } : timeout ?? {}, (args, ctx) => run(ctx, [args], self));
59
66
  return Object.assign(f, {
60
67
  skip,
61
68
  skipIf,
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","names":["Cause","_interopRequireWildcard","require","Duration","Effect","Equal","Exit","_Function","Layer","Logger","Schedule","TestEnvironment","Utils","V","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","runTest","effect","gen","exit","isSuccess","errors","prettyErrors","cause","length","logError","pipe","runPromise","then","f","TestEnv","TestContext","provide","remove","defaultLogger","customTester","b","customTesters","isEqual","undefined","structuralRegion","equals","x","y","filter","addEqualityTesters","expect","exports","makeTester","mapEffect","run","self","args","suspend","name","timeout","it","skip","skipIf","condition","runIf","only","each","cases","assign","scoped","flow","live","identity","scopedLive","flakyTest","seconds","catchAllDefect","fail","retry","recurs","compose","elapsed","whileOutput","lessThanOrEqualTo","orDie"],"sources":["../../src/internal.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"internal.js","names":["Cause","_interopRequireWildcard","require","Duration","Effect","Equal","Exit","Fiber","_Function","Layer","Logger","Runtime","Schedule","TestEnvironment","Utils","V","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","runTest","ctx","effect","gen","exitFiber","fork","exit","runtime","onTestFinished","interrupt","pipe","asVoid","runPromise","join","isSuccess","errors","prettyErrors","cause","length","logError","then","f","TestEnv","TestContext","provide","remove","defaultLogger","customTester","b","customTesters","isEqual","undefined","structuralRegion","equals","x","y","filter","addEqualityTesters","expect","exports","makeTester","mapEffect","run","args","self","suspend","name","timeout","it","skip","skipIf","condition","runIf","only","each","cases","for","assign","scoped","flow","live","identity","scopedLive","flakyTest","seconds","catchAllDefect","fail","retry","recurs","compose","elapsed","whileOutput","lessThanOrEqualTo","orDie"],"sources":["../../src/internal.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -3,16 +3,21 @@ import * as Duration from "effect/Duration";
3
3
  import * as Effect from "effect/Effect";
4
4
  import * as Equal from "effect/Equal";
5
5
  import * as Exit from "effect/Exit";
6
+ import * as Fiber from "effect/Fiber";
6
7
  import { flow, identity, pipe } from "effect/Function";
7
8
  import * as Layer from "effect/Layer";
8
9
  import * as Logger from "effect/Logger";
10
+ import * as Runtime from "effect/Runtime";
9
11
  import * as Schedule from "effect/Schedule";
10
12
  import * as TestEnvironment from "effect/TestContext";
11
13
  import * as Utils from "effect/Utils";
12
14
  import * as V from "vitest";
13
15
  /** @internal */
14
- const runTest = effect => Effect.gen(function* () {
15
- const exit = yield* Effect.exit(effect);
16
+ const runTest = ctx => effect => Effect.gen(function* () {
17
+ const exitFiber = yield* Effect.fork(Effect.exit(effect));
18
+ const runtime = yield* Effect.runtime();
19
+ ctx.onTestFinished(() => Fiber.interrupt(exitFiber).pipe(Effect.asVoid, Runtime.runPromise(runtime)));
20
+ const exit = yield* Fiber.join(exitFiber);
16
21
  if (Exit.isSuccess(exit)) {
17
22
  return () => {};
18
23
  } else {
@@ -40,13 +45,15 @@ export const addEqualityTesters = () => {
40
45
  };
41
46
  /** @internal */
42
47
  const makeTester = mapEffect => {
43
- const run = self => (...args) => pipe(Effect.suspend(() => self(...args)), mapEffect, runTest);
44
- const f = (name, self, timeout) => V.it(name, run(self), timeout);
45
- const skip = (name, self, timeout) => V.it.skip(name, run(self), timeout);
46
- const skipIf = condition => (name, self, timeout) => V.it.skipIf(condition)(name, run(self), timeout);
47
- const runIf = condition => (name, self, timeout) => V.it.runIf(condition)(name, run(self), timeout);
48
- const only = (name, self, timeout) => V.it.only(name, run(self), timeout);
49
- const each = cases => (name, self, timeout) => V.it.each(cases)(name, run(self), timeout);
48
+ const run = (ctx, args, self) => pipe(Effect.suspend(() => self(...args)), mapEffect, runTest(ctx));
49
+ const f = (name, self, timeout) => V.it(name, ctx => run(ctx, [ctx], self), timeout);
50
+ const skip = (name, self, timeout) => V.it.skip(name, ctx => run(ctx, [ctx], self), timeout);
51
+ const skipIf = condition => (name, self, timeout) => V.it.skipIf(condition)(name, ctx => run(ctx, [ctx], self), timeout);
52
+ const runIf = condition => (name, self, timeout) => V.it.runIf(condition)(name, ctx => run(ctx, [ctx], self), timeout);
53
+ const only = (name, self, timeout) => V.it.only(name, ctx => run(ctx, [ctx], self), timeout);
54
+ const each = cases => (name, self, timeout) => V.it.for(cases)(name, typeof timeout === "number" ? {
55
+ timeout
56
+ } : timeout ?? {}, (args, ctx) => run(ctx, [args], self));
50
57
  return Object.assign(f, {
51
58
  skip,
52
59
  skipIf,
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","names":["Cause","Duration","Effect","Equal","Exit","flow","identity","pipe","Layer","Logger","Schedule","TestEnvironment","Utils","V","runTest","effect","gen","exit","isSuccess","errors","prettyErrors","cause","i","length","logError","runPromise","then","f","TestEnv","TestContext","provide","remove","defaultLogger","customTester","a","b","customTesters","isEqual","undefined","structuralRegion","equals","x","y","filter","t","addEqualityTesters","expect","makeTester","mapEffect","run","self","args","suspend","name","timeout","it","skip","skipIf","condition","runIf","only","each","cases","Object","assign","scoped","live","scopedLive","flakyTest","seconds","catchAllDefect","fail","retry","recurs","compose","elapsed","whileOutput","lessThanOrEqualTo","orDie"],"sources":["../../src/internal.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"internal.js","names":["Cause","Duration","Effect","Equal","Exit","Fiber","flow","identity","pipe","Layer","Logger","Runtime","Schedule","TestEnvironment","Utils","V","runTest","ctx","effect","gen","exitFiber","fork","exit","runtime","onTestFinished","interrupt","asVoid","runPromise","join","isSuccess","errors","prettyErrors","cause","i","length","logError","then","f","TestEnv","TestContext","provide","remove","defaultLogger","customTester","a","b","customTesters","isEqual","undefined","structuralRegion","equals","x","y","filter","t","addEqualityTesters","expect","makeTester","mapEffect","run","args","self","suspend","name","timeout","it","skip","skipIf","condition","runIf","only","each","cases","for","Object","assign","scoped","live","scopedLive","flakyTest","seconds","catchAllDefect","fail","retry","recurs","compose","elapsed","whileOutput","lessThanOrEqualTo","orDie"],"sources":["../../src/internal.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/vitest",
3
- "version": "0.8.0",
3
+ "version": "0.8.2",
4
4
  "description": "A set of helpers for testing Effects with vitest",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -11,7 +11,7 @@
11
11
  "sideEffects": [],
12
12
  "peerDependencies": {
13
13
  "vitest": "^2.0",
14
- "effect": "^3.6.0"
14
+ "effect": "^3.6.1"
15
15
  },
16
16
  "publishConfig": {
17
17
  "provenance": true
package/src/internal.ts CHANGED
@@ -7,9 +7,11 @@ import * as Duration from "effect/Duration"
7
7
  import * as Effect from "effect/Effect"
8
8
  import * as Equal from "effect/Equal"
9
9
  import * as Exit from "effect/Exit"
10
+ import * as Fiber from "effect/Fiber"
10
11
  import { flow, identity, pipe } from "effect/Function"
11
12
  import * as Layer from "effect/Layer"
12
13
  import * as Logger from "effect/Logger"
14
+ import * as Runtime from "effect/Runtime"
13
15
  import * as Schedule from "effect/Schedule"
14
16
  import type * as Scope from "effect/Scope"
15
17
  import * as TestEnvironment from "effect/TestContext"
@@ -19,9 +21,19 @@ import * as V from "vitest"
19
21
  import type * as Vitest from "./index.js"
20
22
 
21
23
  /** @internal */
22
- const runTest = <E, A>(effect: Effect.Effect<A, E>) =>
24
+ const runTest = (ctx: Vitest.TaskContext) => <E, A>(effect: Effect.Effect<A, E>) =>
23
25
  Effect.gen(function*() {
24
- const exit: Exit.Exit<A, E> = yield* Effect.exit(effect)
26
+ const exitFiber = yield* Effect.fork(Effect.exit(effect))
27
+ const runtime = yield* Effect.runtime()
28
+
29
+ ctx.onTestFinished(() =>
30
+ Fiber.interrupt(exitFiber).pipe(
31
+ Effect.asVoid,
32
+ Runtime.runPromise(runtime)
33
+ )
34
+ )
35
+
36
+ const exit = yield* Fiber.join(exitFiber)
25
37
  if (Exit.isSuccess(exit)) {
26
38
  return () => {}
27
39
  } else {
@@ -60,20 +72,28 @@ export const addEqualityTesters = () => {
60
72
  const makeTester = <R>(
61
73
  mapEffect: <A, E>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, never>
62
74
  ): Vitest.Vitest.Tester<R> => {
63
- const run =
64
- <A, E, TestArgs extends Array<any>>(self: Vitest.Vitest.TestFunction<A, E, R, TestArgs>) => (...args: TestArgs) =>
65
- pipe(Effect.suspend(() => self(...args)), mapEffect, runTest)
75
+ const run = <A, E, TestArgs extends Array<unknown>>(
76
+ ctx: V.TaskContext<V.Test<object>> & V.TestContext & object,
77
+ args: TestArgs,
78
+ self: Vitest.Vitest.TestFunction<A, E, R, TestArgs>
79
+ ) => pipe(Effect.suspend(() => self(...args)), mapEffect, runTest(ctx))
66
80
 
67
- const f: Vitest.Vitest.Test<R> = (name, self, timeout) => V.it(name, run(self), timeout)
81
+ const f: Vitest.Vitest.Test<R> = (name, self, timeout) => V.it(name, (ctx) => run(ctx, [ctx], self), timeout)
68
82
 
69
- const skip: Vitest.Vitest.Tester<R>["only"] = (name, self, timeout) => V.it.skip(name, run(self), timeout)
83
+ const skip: Vitest.Vitest.Tester<R>["only"] = (name, self, timeout) =>
84
+ V.it.skip(name, (ctx) => run(ctx, [ctx], self), timeout)
70
85
  const skipIf: Vitest.Vitest.Tester<R>["skipIf"] = (condition) => (name, self, timeout) =>
71
- V.it.skipIf(condition)(name, run(self), timeout)
86
+ V.it.skipIf(condition)(name, (ctx) => run(ctx, [ctx], self), timeout)
72
87
  const runIf: Vitest.Vitest.Tester<R>["runIf"] = (condition) => (name, self, timeout) =>
73
- V.it.runIf(condition)(name, run(self), timeout)
74
- const only: Vitest.Vitest.Tester<R>["only"] = (name, self, timeout) => V.it.only(name, run(self), timeout)
88
+ V.it.runIf(condition)(name, (ctx) => run(ctx, [ctx], self), timeout)
89
+ const only: Vitest.Vitest.Tester<R>["only"] = (name, self, timeout) =>
90
+ V.it.only(name, (ctx) => run(ctx, [ctx], self), timeout)
75
91
  const each: Vitest.Vitest.Tester<R>["each"] = (cases) => (name, self, timeout) =>
76
- V.it.each(cases)(name, run(self), timeout)
92
+ V.it.for(cases)(
93
+ name,
94
+ typeof timeout === "number" ? { timeout } : timeout ?? {},
95
+ (args, ctx) => run(ctx, [args], self)
96
+ )
77
97
 
78
98
  return Object.assign(f, { skip, skipIf, runIf, only, each })
79
99
  }