Skip to content
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

Enhance test reliability by using node:assert #4350

Merged
merged 119 commits into from
Jan 30, 2025
Merged
Changes from 1 commit
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
fb41e3f
use node:assert for deepStrictEqual assertions
gcanti Jan 25, 2025
4af54bc
Refactor Chunk.test.ts
gcanti Jan 25, 2025
5c8cf66
Refactor Option.test.ts
gcanti Jan 25, 2025
9ff78a4
refactor Either.test.ts
gcanti Jan 27, 2025
3abff55
refactor Array.test.ts
gcanti Jan 27, 2025
c3a8619
refactor BigDecimal.test.ts
gcanti Jan 27, 2025
0e27051
refactor BigInt.test.ts
gcanti Jan 27, 2025
f3b50ed
refactor Boolean.test.ts
gcanti Jan 27, 2025
de35393
refactor Brand.test.ts
gcanti Jan 27, 2025
40aacc2
Cache
gcanti Jan 27, 2025
1d34fb2
Cause
gcanti Jan 27, 2025
63f0a15
Config
gcanti Jan 27, 2025
844d9b7
ConfigProvider
gcanti Jan 27, 2025
1cec188
Context
gcanti Jan 27, 2025
7680d4d
Cron
gcanti Jan 27, 2025
17bc6e0
Data
gcanti Jan 27, 2025
21432be
DateTime
gcanti Jan 27, 2025
fab66ee
Deferred
gcanti Jan 27, 2025
fdf406d
Differ
gcanti Jan 27, 2025
8125460
Duration
gcanti Jan 27, 2025
139d97b
Encoding
gcanti Jan 27, 2025
55be597
Equivalence
gcanti Jan 27, 2025
da0527b
Exit
gcanti Jan 27, 2025
d0b8b90
Fiber
gcanti Jan 27, 2025
a6d1ead
FiberHandle
gcanti Jan 27, 2025
fdbe42f
FiberMap
gcanti Jan 27, 2025
fc8f42c
FiberRef
gcanti Jan 27, 2025
1ab057a
FiberRefs
gcanti Jan 27, 2025
bf7760f
FiberSet
gcanti Jan 27, 2025
fbc8461
Function
gcanti Jan 27, 2025
5425f66
Globalvalue
gcanti Jan 27, 2025
5e5fb1a
Hash
gcanti Jan 27, 2025
c0b65b9
HashMap
gcanti Jan 27, 2025
e20005c
HashSet
gcanti Jan 27, 2025
948ad70
Inspectable
gcanti Jan 27, 2025
97cb1f9
Iterable
gcanti Jan 27, 2025
271cf17
KeyedPool
gcanti Jan 27, 2025
6b4647e
chore
gcanti Jan 27, 2025
9aee07c
Layer
gcanti Jan 27, 2025
21c470f
List
gcanti Jan 27, 2025
35bbd6d
Logger
gcanti Jan 28, 2025
4da820c
LogLevel
gcanti Jan 28, 2025
406fc58
Mailbox
gcanti Jan 28, 2025
430289c
ManagedRuntime
gcanti Jan 28, 2025
9dcbb61
Match
gcanti Jan 28, 2025
35b09ff
extract SecretProto
gcanti Jan 29, 2025
fdc3568
remove adapter
gcanti Jan 29, 2025
f2f43d7
fix local race condition
gcanti Jan 29, 2025
2fb07b8
Metric
gcanti Jan 29, 2025
30c829d
Micro
gcanti Jan 29, 2025
156a611
MutableHashMap
gcanti Jan 29, 2025
acd7066
MutableHashSet
gcanti Jan 29, 2025
903b8f3
MutableList
gcanti Jan 29, 2025
cc19993
MutableQueue
gcanti Jan 29, 2025
6cd8196
MutableRef
gcanti Jan 29, 2025
b53a0ce
NonEmptyIterable
gcanti Jan 29, 2025
61b1c57
Number
gcanti Jan 29, 2025
ee9de92
Order
gcanti Jan 29, 2025
98ec56f
Ordering
gcanti Jan 29, 2025
71214c7
Pipeable
gcanti Jan 29, 2025
0696b5d
Pool
gcanti Jan 29, 2025
4f99767
Predicate
gcanti Jan 29, 2025
1aa13a9
PubSub
gcanti Jan 29, 2025
d342223
Queue
gcanti Jan 29, 2025
6050915
Random
gcanti Jan 29, 2025
354cedc
RateLimiter
gcanti Jan 29, 2025
0f61d6b
Update RcMap.test.ts
gcanti Jan 29, 2025
7a15272
RcRef
gcanti Jan 29, 2025
92e5270
Record
gcanti Jan 29, 2025
9d7d9d5
Redacted
gcanti Jan 29, 2025
cf34e20
RedBlackTree
gcanti Jan 29, 2025
bf739cf
Ref
gcanti Jan 29, 2025
2db71af
RegExp
gcanti Jan 29, 2025
f74b9bd
Reloadable
gcanti Jan 29, 2025
30a8840
Resource
gcanti Jan 29, 2025
60a2fb8
Runtime
gcanti Jan 29, 2025
80a169d
RuntimeFlags
gcanti Jan 29, 2025
4cbc5eb
Schedule
gcanti Jan 29, 2025
82f0db3
Scope
gcanti Jan 29, 2025
9c147f0
ScopedCache
gcanti Jan 29, 2025
5861514
ScopedRef
gcanti Jan 29, 2025
e5f6214
SortedMap
gcanti Jan 29, 2025
e205fe4
SortedSet
gcanti Jan 29, 2025
7c6643d
STM
gcanti Jan 29, 2025
2215077
String
gcanti Jan 29, 2025
efb2dfe
Struct
gcanti Jan 29, 2025
1d56f73
SubscriptionRef
gcanti Jan 29, 2025
9859e02
Symbol
gcanti Jan 29, 2025
99c38ee
SynchronizedRef
gcanti Jan 29, 2025
61ccc96
TArray
gcanti Jan 29, 2025
3a1643d
TMap
gcanti Jan 29, 2025
ad41549
TPriorityQueue
gcanti Jan 29, 2025
6c33030
TPubSub
gcanti Jan 29, 2025
9799c76
TQueue
gcanti Jan 29, 2025
c83a44d
Tracer
gcanti Jan 29, 2025
ad1ac2f
TRandom
gcanti Jan 29, 2025
e5ed9f1
TReentrantLock
gcanti Jan 29, 2025
97842f0
Trie
gcanti Jan 29, 2025
32b0000
TSet
gcanti Jan 29, 2025
064903c
TSubscriptionRef
gcanti Jan 29, 2025
40ca6a1
chore
gcanti Jan 29, 2025
c6a5291
Tuple
gcanti Jan 29, 2025
7c614ee
chore
gcanti Jan 29, 2025
abeeed4
Effect/*
gcanti Jan 29, 2025
257b758
/Channel/*
gcanti Jan 29, 2025
29aa12a
ParseResult
gcanti Jan 29, 2025
ef145d3
Schema/*
gcanti Jan 29, 2025
c6a32ea
remove assert
gcanti Jan 29, 2025
7ceebf9
Stream
gcanti Jan 29, 2025
e84aed7
JSONSchema
gcanti Jan 29, 2025
207ba2c
ParseResultFormatter
gcanti Jan 29, 2025
8d33465
Pretty
gcanti Jan 29, 2025
c9ff053
Schema
gcanti Jan 29, 2025
0959211
more Schema
gcanti Jan 30, 2025
58dd8b2
end Schema
gcanti Jan 30, 2025
20cc8b9
refactor Exit.assertFailure
gcanti Jan 30, 2025
1eea1f4
simplify option tests
gcanti Jan 30, 2025
32a36ae
simplify either tests
gcanti Jan 30, 2025
567817e
fix line reference
gcanti Jan 30, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
FiberRef
gcanti committed Jan 27, 2025

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
commit fc8f42c73660b0064183bebd43480092e509ef55
6 changes: 3 additions & 3 deletions packages/effect/test/Fiber.test.ts
Original file line number Diff line number Diff line change
@@ -161,7 +161,7 @@ describe("Fiber", () => {
)
yield* $(Effect.uninterruptible(Effect.fork(child)))
const result = yield* $(Deferred.await(latch))
assertTrue(result === undefined)
strictEqual(result, undefined)
}))
it.effect("dual roots", () =>
Effect.gen(function*($) {
@@ -220,12 +220,12 @@ describe("Fiber", () => {
const result = yield* $(Fiber.joinAll(fibers))
assertTrue(Array.isArray(result))
assertTrue(result.length === fibers.length)
result.forEach((x) => assertTrue(x === undefined))
result.forEach((x) => strictEqual(x, undefined))
}), 10000)
it.effect("all - stack safety", () =>
Effect.gen(function*($) {
const result = yield* $(Fiber.join(Fiber.all(fibers)), Effect.asVoid)
assertTrue(result === undefined)
strictEqual(result, undefined)
}), 10000)
it.effect("is subtype of Effect", () =>
Effect.gen(function*() {
99 changes: 50 additions & 49 deletions packages/effect/test/FiberRef.test.ts
Original file line number Diff line number Diff line change
@@ -8,8 +8,9 @@ import * as FiberRef from "effect/FiberRef"
import { constant, constTrue, identity } from "effect/Function"
import * as Option from "effect/Option"
import * as Runtime from "effect/Runtime"
import { assertTrue, strictEqual } from "effect/test/util"
import * as it from "effect/test/utils/extend"
import { assert, describe } from "vitest"
import { describe } from "vitest"

const initial = "initial"
const update = "update"
@@ -28,45 +29,45 @@ describe("FiberRef", () => {
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(initial))
const result = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(result, initial)
strictEqual(result, initial)
}))
it.scoped("get returns the correct value for a child", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(initial))
const fiber = yield* $(Effect.fork(FiberRef.get(fiberRef)))
const result = yield* $(Fiber.join(fiber))
assert.strictEqual(result, initial)
strictEqual(result, initial)
}))
it.scoped("getAndUpdate - changing the value", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(initial))
const value1 = yield* $(FiberRef.getAndUpdate(fiberRef, () => update))
const value2 = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(value1, initial)
assert.strictEqual(value2, update)
strictEqual(value1, initial)
strictEqual(value2, update)
}))
it.scoped("getAndUpdateSome - changing the value", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(initial))
const value1 = yield* $(FiberRef.getAndUpdateSome(fiberRef, () => Option.some(update)))
const value2 = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(value1, initial)
assert.strictEqual(value2, update)
strictEqual(value1, initial)
strictEqual(value2, update)
}))
it.scoped("getAndUpdateSome - not changing value", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(initial))
const value1 = yield* $(FiberRef.getAndUpdateSome(fiberRef, () => Option.none()))
const value2 = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(value1, initial)
assert.strictEqual(value2, initial)
strictEqual(value1, initial)
strictEqual(value2, initial)
}))
it.scoped("set updates the current value", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(initial))
yield* $(FiberRef.set(fiberRef, update))
const result = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(result, update)
strictEqual(result, update)
}))
it.scoped("set by a child doesn't update parent's value", () =>
Effect.gen(function*($) {
@@ -80,72 +81,72 @@ describe("FiberRef", () => {
)
yield* $(Deferred.await(deferred))
const result = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(result, initial)
strictEqual(result, initial)
}))
it.scoped("modify - changing the value", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(initial))
const value1 = yield* $(FiberRef.modify(fiberRef, () => [1, update]))
const value2 = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(value1, 1)
assert.strictEqual(value2, update)
strictEqual(value1, 1)
strictEqual(value2, update)
}))
it.scoped("modifySome - not changing the value", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(initial))
const value1 = yield* $(FiberRef.modifySome(fiberRef, 2, () => Option.none()))
const value2 = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(value1, 2)
assert.strictEqual(value2, initial)
strictEqual(value1, 2)
strictEqual(value2, initial)
}))
it.scoped("updateAndGet - changing the value", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(initial))
const value1 = yield* $(FiberRef.updateAndGet(fiberRef, () => update))
const value2 = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(value1, update)
assert.strictEqual(value2, update)
strictEqual(value1, update)
strictEqual(value2, update)
}))
it.scoped("updateSomeAndGet - changing the value", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(initial))
const value1 = yield* $(FiberRef.updateSomeAndGet(fiberRef, () => Option.some(update)))
const value2 = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(value1, update)
assert.strictEqual(value2, update)
strictEqual(value1, update)
strictEqual(value2, update)
}))
it.scoped("updateSomeAndGet - not changing the value", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(initial))
const value1 = yield* $(FiberRef.updateSomeAndGet(fiberRef, () => Option.none()))
const value2 = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(value1, initial)
assert.strictEqual(value2, initial)
strictEqual(value1, initial)
strictEqual(value2, initial)
}))
it.scoped("restores the original value", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(initial))
yield* $(FiberRef.set(fiberRef, update))
yield* $(FiberRef.delete(fiberRef))
const result = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(result, initial)
strictEqual(result, initial)
}))
it.scoped("locally - restores original value", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(initial))
const local = yield* $(Effect.locally(fiberRef, update)(FiberRef.get(fiberRef)))
const value = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(local, update)
assert.strictEqual(value, initial)
strictEqual(local, update)
strictEqual(value, initial)
}))
it.scoped("locally - restores parent's value", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(initial))
const child = yield* $(Effect.locally(fiberRef, update)(FiberRef.get(fiberRef).pipe(Effect.fork)))
const local = yield* $(Fiber.join(child))
const value = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(local, update)
assert.strictEqual(value, initial)
strictEqual(local, update)
strictEqual(value, initial)
}))
it.scoped("locally - restores undefined value", () =>
Effect.gen(function*($) {
@@ -155,47 +156,47 @@ describe("FiberRef", () => {
const fiberRef = yield* $(Fiber.await(child), Effect.flatten)
const localValue = yield* $(Effect.locally(fiberRef, update)(FiberRef.get(fiberRef)))
const value = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(localValue, update)
assert.strictEqual(value, initial)
strictEqual(localValue, update)
strictEqual(value, initial)
}))
it.scoped("initial value is inherited on join", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(initial))
const child = yield* $(Effect.fork(FiberRef.set(fiberRef, update)))
yield* $(Fiber.join(child))
const result = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(result, update)
strictEqual(result, update)
}))
it.scoped("initial value is always available", () =>
Effect.gen(function*($) {
const child = yield* $(Effect.fork(FiberRef.make(initial)))
const fiberRef = yield* $(Fiber.await(child), Effect.flatten)
const result = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(result, initial)
strictEqual(result, initial)
}))
it.scoped("fork function is applied on fork - 1", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(0, { fork: increment }))
const child = yield* $(Effect.fork(Effect.void))
yield* $(Fiber.join(child))
const result = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(result, 1)
strictEqual(result, 1)
}))
it.scoped("fork function is applied on fork - 2", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(0, { fork: increment }))
const child = yield* $(Effect.void, Effect.fork, Effect.flatMap(Fiber.join), Effect.fork)
yield* $(Fiber.join(child))
const result = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(result, 2)
strictEqual(result, 2)
}))
it.scoped("join function is applied on join - 1", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(0, { fork: identity, join: Math.max }))
const child = yield* $(Effect.fork(FiberRef.update(fiberRef, increment)))
yield* $(Fiber.join(child))
const result = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(result, 1)
strictEqual(result, 1)
}))
it.scoped("join function is applied on join - 2", () =>
Effect.gen(function*($) {
@@ -204,7 +205,7 @@ describe("FiberRef", () => {
yield* $(FiberRef.update(fiberRef, (n) => n + 2))
yield* $(Fiber.join(child))
const result = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(result, 2)
strictEqual(result, 2)
}))
it.scopedLive("the value of the loser is inherited in zipPar", () =>
Effect.gen(function*($) {
@@ -217,7 +218,7 @@ describe("FiberRef", () => {
)
yield* $(winner, Effect.zip(loser, { concurrent: true }))
const result = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(result, update2)
strictEqual(result, update2)
}))
it.scoped("nothing gets inherited with a failure in zipPar", () =>
Effect.gen(function*($) {
@@ -231,7 +232,7 @@ describe("FiberRef", () => {
Effect.orElse(() => Effect.void)
)
const result = yield* $(FiberRef.get(fiberRef))
assert.isTrue(result.includes(initial))
assertTrue(result.includes(initial))
}))
it.scoped("the value of all fibers in inherited when running many effects with collectAllPar", () =>
Effect.gen(function*($) {
@@ -245,14 +246,14 @@ describe("FiberRef", () => {
discard: true
}))
const result = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(result, n)
strictEqual(result, n)
}))
it.scoped("its value is inherited after simple race", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(initial))
yield* $(FiberRef.set(fiberRef, update1), Effect.race(FiberRef.set(fiberRef, update2)))
const result = yield* $(FiberRef.get(fiberRef))
assert.isTrue(new RegExp(`${update1}|${update2}`).test(result))
assertTrue(new RegExp(`${update1}|${update2}`).test(result))
}))
it.scopedLive("its value is inherited after a race with a bad winner", () =>
Effect.gen(function*($) {
@@ -267,7 +268,7 @@ describe("FiberRef", () => {
)
yield* $(badWinner, Effect.race(goodLoser))
const result = yield* $(FiberRef.get(fiberRef))
assert.equal(result, update2)
strictEqual(result, update2)
}))
it.scoped("its value is not inherited after a race of losers", () =>
Effect.gen(function*($) {
@@ -276,14 +277,14 @@ describe("FiberRef", () => {
const loser2 = FiberRef.set(fiberRef, update2).pipe(Effect.zipRight(Effect.fail("ups2")))
yield* $(loser1, Effect.race(loser2), Effect.ignore)
const result = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(result, initial)
strictEqual(result, initial)
}))
it.scoped("its value is inherited in a trivial race", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(initial))
yield* $(Effect.raceAll([FiberRef.set(fiberRef, update)]))
const result = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(result, update)
strictEqual(result, update)
}))
it.scoped("the value of the winner is inherited when racing two effects with raceAll", () =>
Effect.gen(function*($) {
@@ -302,8 +303,8 @@ describe("FiberRef", () => {
const loser2 = FiberRef.set(fiberRef, update2).pipe(Effect.zipRight(Effect.fail(":-O")))
yield* $(Effect.raceAll([loser2, winner2]))
const value2 = yield* $(FiberRef.get(fiberRef), Effect.zipLeft(FiberRef.set(fiberRef, initial)))
assert.strictEqual(value1, update1)
assert.strictEqual(value2, update1)
strictEqual(value1, update1)
strictEqual(value2, update1)
}))
it.scoped("the value of the winner is inherited when racing many effects with raceAll", () =>
Effect.gen(function*($) {
@@ -325,16 +326,16 @@ describe("FiberRef", () => {
const losers2 = FiberRef.set(fiberRef, update1).pipe(Effect.zipRight(Effect.fail(":-O")), Effect.replicate(n))
yield* $(Chunk.unsafeFromArray(losers2), Chunk.prepend(winner2), Effect.raceAll)
const value2 = yield* $(FiberRef.get(fiberRef), Effect.zipLeft(FiberRef.set(fiberRef, initial)))
assert.strictEqual(value1, update1)
assert.strictEqual(value2, update1)
strictEqual(value1, update1)
strictEqual(value2, update1)
}))
it.scoped("nothing gets inherited when racing failures with raceAll", () =>
Effect.gen(function*($) {
const fiberRef = yield* $(FiberRef.make(initial))
const loser = FiberRef.set(fiberRef, update).pipe(Effect.zipRight(Effect.fail("darn")))
yield* $(Effect.raceAll([loser, ...Array.from({ length: 63 }, () => loser)]), Effect.orElse(() => Effect.void))
const result = yield* $(FiberRef.get(fiberRef))
assert.strictEqual(result, initial)
strictEqual(result, initial)
}))
it.scoped("fork patch is applied when a fiber is unsafely run", () =>
Effect.gen(function*($) {
@@ -347,7 +348,7 @@ describe("FiberRef", () => {
Effect.sync(() => FiberRef.get(fiberRef).pipe(Effect.intoDeferred(deferred), Runtime.runCallback(runtime)))
)
const result = yield* $(Deferred.await(deferred))
assert.isTrue(result)
assertTrue(result)
}))
it.scoped("fork patch is applied when a fiber is unsafely forked", () =>
Effect.gen(function*($) {
@@ -359,12 +360,12 @@ describe("FiberRef", () => {
)
yield* $(Fiber.join(fiber))
const result = yield* $(Deferred.await(deferred))
assert.isTrue(result)
assertTrue(result)
}))
it.scoped("is subtype of Effect", () =>
Effect.gen(function*() {
const fiberRef = yield* FiberRef.make(initial)
const result = yield* fiberRef
assert.strictEqual(result, initial)
strictEqual(result, initial)
}))
})