ruleTest function

  1. @isTest
Future<void> ruleTest(
  1. String description,
  2. String content,
  3. List<ExpectedText> expectedResults, {
  4. String? relativePath,
})

Implementation

@isTest
Future<void> ruleTest(
  String description,
  String content,
  List<ExpectedText> expectedResults, {
  String? relativePath,
}) async {
  assert(expectedResults.every((e) => e.length == null) ||
      expectedResults.every((e) => e.length != null));
  assert(expectedResults.every((e) => e.offset == null) ||
      expectedResults.every((e) => e.offset != null));
  assert(expectedResults.every((e) => e.startColumn == null) ||
      expectedResults.every((e) => e.startColumn != null));
  assert(expectedResults.every((e) => e.startLine == null) ||
      expectedResults.every((e) => e.startLine != null));

  test.test(description, () async {
    final relative =
        relativePath ?? p.join(kDartTool, 'sidecar_tests', 'lib', 'main.dart');
    final path = p.absolute(relative);
    await modifyFile(relative, content: content);

    final resolvedUnit = await _context.currentSession.getResolvedUnit(path)
        as ResolvedUnitResult;

    for (final rule in _registry.rules) {
      rule.setUnitContext(resolvedUnit);
    }

    resolvedUnit.unit.accept(_visitor);

    final results = _visitor.results
        .whereType<LintResult>()
        .map((e) => e.toExpectedText())
        .toList();
    test.expect(results, test.unorderedEquals(expectedResults));
  });
}