CodeVetter · Repo Unpack · Testing signals
gcanti/fp-ts
Tests and CI were inspected, not executed; no passing result, coverage percentage, or benchmark result is established by this investigation. Runtime examples use Vitest globals and Node assertions, while dtslint separately checks inferred public types. The inspected cases exercise conversion boundaries, cleanup branches, traversal execution, references, serialization, and barrel exports. Coverage remains bounded, and several source-level limitations require distinguishing test intent from actual assertions.
- Vitest discovers test files under test/, excludes util.ts as a test entry, enables globals, and uses Istanbul for coverage; test/util.ts wraps Node assert.deepStrictEqual and assert.strictEqual.
- Inspected CI runs npm install → npm run build --if-present → npm test on Node 20.12.2; npm test includes lint, formatting, dtslint, runtime tests, and docs, but the shown workflow does not invoke the separate coverage script.
- dtslint/TaskEither.ts uses $ExpectType assertions for fallback unions and error transformations; dtslint has its own config extending the root config and disabling noUnusedLocals.
- TaskEither tests cover taskify's null/undefined error callbacks, callback errors, and repeated invocation; tryCatchK tests separately cover resolved Promises, rejected Promises, and synchronous throws.
- bracket tests enumerate acquisition, use, and release Left branches and release precedence; the case named 'body throws' actually supplies useFailure returning Left, so it does not demonstrate cleanup after a rejected Promise.
- TaskEither traversal tests assert that parallel execution still runs a later Right after an earlier Left, while sequential execution skips it; shared timing helpers also assert ApplicativePar versus ApplicativeSeq ordering.
- IORef tests cover read/write/modify and bound-method piping; Json tests cover valid/invalid parsing, circular serialization, and undefined; the index test checks that source modules other than internal/index appear in the barrel.
- Array and ReadonlyArray include fast-check chunksOf properties, but their generated predicates discard isDeepStrictEqual's result; the examined performance file constructs a Benchmark.Suite, and its historical comments were not treated as verified measurements.