passsy / avoid-setup-teardownr4
Avoid setUp()/tearDown() in Tests
PublicAvoid setUp and tearDown in tests; create state locally or in factory functions and register cleanup with addTearDown next to the resource.
tests, run by the registry6 passed · slowest 5.4 ms
✓fires3.5 ms
fires on setUp and tearDown the agent writes in a test
write test/loader_test.dartfired: line 6, line 10
import 'package:test/test.dart';
void main() {
late Loader loader;
setUp(() {
loader = Loader();
});
tearDown(() {
loader.close();
});
test('loads', () {
expect(loader.load(), isNotNull);
});
}✓quiet2.8 ms
stays quiet on addTearDown
write test/loader_test.dartstayed quiet
test('loads', () {
final loader = Loader();
addTearDown(loader.close);
expect(loader.load(), isNotNull);
});✓skips0.0 ms
stays quiet outside a test file
write lib/harness.dartno handler of the detector wants this event
void configure() {
setUp(() {});
}
✓quiet2.5 ms
stays quiet on a legacy setUp when the agent edits elsewhere or reads
write test/loader_test.dart · wrote line 15stayed quiet
import 'package:test/test.dart';
void main() {
late Loader loader;
setUp(() {
loader = Loader();
});
tearDown(() {
loader.close();
});
test('loads', () {
expect(loader.load(), isNotNull);
});
}read test/loader_test.dartno handler of the detector wants this event
import 'package:test/test.dart';
void main() {
late Loader loader;
setUp(() {
loader = Loader();
});
tearDown(() {
loader.close();
});
test('loads', () {
expect(loader.load(), isNotNull);
});
}✓fires4.7 ms
points at the principle when the user mentions tearDown in a Dart project
prompt · in fixtures/dart_appfired: "tearDown"
Move the cleanup into a tearDown please✓quiet5.4 ms
stays quiet on an everyday setup
prompt · in fixtures/dart_appstayed quiet
What is the setup for the staging server?detector.test.tseach detect() call runs the real detectorEdit
import { expect, test } from "vitest";
import { detect, edit, prompt, read, source, write } from "@wellactually/sdk/v3/test";
const loaderTest = source`
import 'package:test/test.dart';
void main() {
late Loader loader;
setUp(() {
loader = Loader();
});
tearDown(() {
loader.close();
});
test('loads', () {
expect(loader.load(), isNotNull);
});
}
`;
test("fires on setUp and tearDown the agent writes in a test", () => {
expect(detect(write("test/loader_test.dart", loaderTest))).toEqual([
{ line: 6 },
{ line: 10 },
]);
});
test("stays quiet on addTearDown", () => {
const code = source`
test('loads', () {
final loader = Loader();
addTearDown(loader.close);
expect(loader.load(), isNotNull);
});
`;
expect(detect(write("test/loader_test.dart", code))).toEqual([]);
});
test("stays quiet outside a test file", () => {
expect(detect(write("lib/harness.dart", "void configure() {\n setUp(() {});\n}\n"))).toEqual([]);
});
test("stays quiet on a legacy setUp when the agent edits elsewhere or reads", () => {
expect(detect(edit("test/loader_test.dart", loaderTest, { written: " expect(loader.load(), isNotNull);" }))).toEqual([]);
expect(detect(read("test/loader_test.dart", loaderTest))).toEqual([]);
});
const dartApp = { project: "fixtures/dart_app" };
test("points at the principle when the user mentions tearDown in a Dart project", () => {
expect(detect(prompt("Move the cleanup into a tearDown please"), dartApp)).toEqual([{ match: "tearDown", depth: "pointer" }]);
});
test("stays quiet on an everyday setup", () => {
expect(detect(prompt("What is the setup for the staging server?"), dartApp)).toEqual([]);
});