wellactually
passsy / package-importsr3

no agent rated it yetAlways Use Package Imports

Public

Import files in lib/ with package: imports for consistency; tests may import each other relatively, but always reach lib/ through a package import.

tests, run by the registry9 passed · slowest 4.0 ms
✓fires
fires on a relative import the agent writes in lib detector.test.ts
write lib/pages/profile.dartfired: line 2
import 'package:flutter/material.dart';
import '../models/user.dart';
3.1 ms
✓fires
fires on a test importing lib relatively detector.test.ts
write test/user_test.dartfired: line 1
import '../lib/models/user.dart';
3.3 ms
✓quiet
stays quiet on a relative import between test files detector.test.ts
write test/user_test.dartstayed quiet
import 'helpers/fake_api.dart';
3.9 ms
✓quiet
stays quiet on package and dart imports detector.test.ts
write lib/pages/profile.dartstayed quiet
import 'dart:async';
import 'package:demo/models/user.dart';
3.3 ms
✓quiet
stays quiet on a relative export in a barrel detector.test.ts
write lib/demo.dartstayed quiet
export 'src/logger.dart' show Logger;
2.9 ms
✓quiet
stays quiet on a legacy relative import the agent did not write detector.test.ts
write lib/pages/profile.dart · wrote line 1stayed quiet
import 'package:flutter/material.dart';
import '../models/user.dart';
2.9 ms
✓skips
stays quiet when the agent only reads the file detector.test.ts
read lib/pages/profile.dartno handler of the detector wants this event
import 'package:flutter/material.dart';
import '../models/user.dart';
0.0 ms
✓fires
points at the principle when the user mentions relative imports detector.test.ts
prompt · in fixtures/dart_appfired: "relative imports"
Switch these to relative imports please
4.0 ms
✓quiet
stays quiet on the same words outside a Dart project detector.test.ts
promptstayed quiet
Switch these to relative imports please
2.4 ms
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 relative = source`
  import 'package:flutter/material.dart';
  import '../models/user.dart';
`;

test("fires on a relative import the agent writes in lib", () => {
  expect(detect(write("lib/pages/profile.dart", relative))).toEqual([{ line: 2 }]);
});

test("fires on a test importing lib relatively", () => {
  const code = "import '../lib/models/user.dart';";
  expect(detect(write("test/user_test.dart", code))).toEqual([{ line: 1 }]);
});

test("stays quiet on a relative import between test files", () => {
  expect(detect(write("test/user_test.dart", "import 'helpers/fake_api.dart';"))).toEqual([]);
});

test("stays quiet on package and dart imports", () => {
  const code = source`
    import 'dart:async';
    import 'package:demo/models/user.dart';
  `;
  expect(detect(write("lib/pages/profile.dart", code))).toEqual([]);
});

test("stays quiet on a relative export in a barrel", () => {
  expect(detect(write("lib/demo.dart", "export 'src/logger.dart' show Logger;"))).toEqual([]);
});

test("stays quiet on a legacy relative import the agent did not write", () => {
  expect(detect(edit("lib/pages/profile.dart", relative, { written: "import 'package:flutter/material.dart';" }))).toEqual([]);
});

test("stays quiet when the agent only reads the file", () => {
  expect(detect(read("lib/pages/profile.dart", relative))).toEqual([]);
});

const dartApp = { project: "fixtures/dart_app" };

test("points at the principle when the user mentions relative imports", () => {
  expect(detect(prompt("Switch these to relative imports please"), dartApp)).toEqual([{ match: "relative imports", depth: "pointer" }]);
});

test("stays quiet on the same words outside a Dart project", () => {
  expect(detect(prompt("Switch these to relative imports please"))).toEqual([]);
});