Skip to content

Commit 3c4faaf

Browse files
committed
test: add ignores test
1 parent 85f3e5b commit 3c4faaf

File tree

8 files changed

+57
-17
lines changed

8 files changed

+57
-17
lines changed

lib/src/lint.dart

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
import 'is_ignored.dart';
23
import 'parse.dart';
34
import 'rules.dart';
@@ -29,7 +30,7 @@ Future<LintOutcome> lint(String message, Map<String, Rule> rules,
2930
if (missing.isNotEmpty) {
3031
final names = [...allRules.keys];
3132
throw RangeError(
32-
'Found invalid rule names: ${missing.join(', ')}. Supported rule names are: ${names.join(', ')}');
33+
'Found invalid rule names: ${missing.join(', ')}. \nSupported rule names are: ${names.join(', ')}');
3334
}
3435

3536
/// Validate against all rules

lib/src/load.dart

+7-10
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,14 @@ Future<CommitLint> load(
2828
if (file != null && file.existsSync()) {
2929
final yaml = loadYaml(await file.readAsString());
3030
final include = yaml?['include'] as String?;
31-
final rulesMap = yaml?['rules'] as Map?;
32-
Map<String, Rule> rules = {};
33-
if (rulesMap != null) {
34-
for (var entry in rulesMap.entries) {
35-
rules[entry.key] = _extractRule(entry.value);
36-
}
37-
}
31+
final rules = yaml?['rules'] as YamlMap?;
32+
final ignores = yaml?['ignores'] as YamlList?;
33+
final defaultIgnores = yaml?['defaultIgnores'] as bool?;
3834
final config = CommitLint(
39-
rules: rules,
40-
deafultIgnores: yaml?['deafultIgnores'] as bool?,
41-
ignores: yaml?['ignores'] as Iterable<String>?);
35+
rules: rules?.map((key, value) => MapEntry(key, _extractRule(value))) ??
36+
{},
37+
ignores: ignores?.cast(),
38+
defaultIgnores: defaultIgnores);
4239
if (include != null) {
4340
final upstream = await load(include, directory: file.parent);
4441
return config.inherit(upstream);

lib/src/runner.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class CommitLintRunner extends CommandRunner {
4747
final config = await load(topLevelResults['config']);
4848
final results = (await Future.wait(messages.map((message) async =>
4949
await lint(message, config.rules,
50-
defaultIgnores: config.deafultIgnores, ignores: config.ignores))));
50+
defaultIgnores: config.defaultIgnores, ignores: config.ignores))));
5151
if (config.rules.isEmpty) {
5252
String input = '';
5353
if (results.isNotEmpty) {

lib/src/types/commitlint.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import 'rule.dart';
22

33
class CommitLint {
4-
CommitLint({this.rules = const {}, this.deafultIgnores, this.ignores});
4+
CommitLint({this.rules = const {}, this.defaultIgnores, this.ignores});
55

66
final Map<String, Rule> rules;
77

8-
final bool? deafultIgnores;
8+
final bool? defaultIgnores;
99

1010
final Iterable<String>? ignores;
1111

@@ -15,7 +15,7 @@ class CommitLint {
1515
...other.rules,
1616
...rules,
1717
},
18-
deafultIgnores: other.deafultIgnores ?? deafultIgnores,
18+
defaultIgnores: defaultIgnores ?? other.defaultIgnores,
1919
ignores: [
2020
...?other.ignores,
2121
...?ignores,

test/__fixtures__/include-package.yaml

+4-1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,7 @@ rules:
44
type-case:
55
- 2
66
- always
7-
- 'upper-case'
7+
- 'upper-case'
8+
9+
ignores:
10+
- r'^fixup'

test/__fixtures__/include-path.yaml

+5-1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,8 @@ rules:
44
type-case:
55
- 2
66
- always
7-
- 'upper-case'
7+
- 'upper-case'
8+
9+
defaultIgnores: false
10+
ignores:
11+
- r'^fixup'

test/lint_test.dart

+29
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,33 @@ void main() {
6262
defaultIgnores: false);
6363
expect(result.valid, false);
6464
});
65+
66+
test('positive on custom ignored message and broken rule', () async {
67+
final ignoredMessage = 'some ignored custom message';
68+
final result = await lint(ignoredMessage, {
69+
'type-empty': Rule(
70+
severity: RuleSeverity.error,
71+
condition: RuleCondition.never,
72+
),
73+
}, ignores: [
74+
ignoredMessage
75+
]);
76+
expect(result.valid, true);
77+
expect(result.input, equals(ignoredMessage));
78+
});
79+
80+
test('throws for invalid rule names', () async {
81+
await expectLater(
82+
lint('foo', {
83+
'foo': Rule(
84+
severity: RuleSeverity.error,
85+
condition: RuleCondition.always,
86+
),
87+
'bar': Rule(
88+
severity: RuleSeverity.warning,
89+
condition: RuleCondition.never,
90+
),
91+
}),
92+
throwsRangeError);
93+
});
6594
}

test/load_test.dart

+6
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ void main() {
1717
expect((config.rules['type-case'] as CaseRule).type, Case.lower);
1818
expect((config.rules['type-enum'] as EnumRule).allowed,
1919
equals(['feat', 'fix', 'docs', 'chore']));
20+
expect(config.defaultIgnores, equals(null));
21+
expect(config.ignores, equals(null));
2022
});
2123
test('include relative path should work', () async {
2224
final config = await load('test/__fixtures__/include-path.yaml');
@@ -25,6 +27,8 @@ void main() {
2527
expect(config.rules['type-case'], isA<CaseRule>());
2628
expect(config.rules['type-enum'], isA<EnumRule>());
2729
expect((config.rules['type-case'] as CaseRule).type, Case.upper);
30+
expect(config.defaultIgnores, equals(false));
31+
expect(config.ignores, equals(["r'^fixup'"]));
2832
});
2933
test('include package path should work', () async {
3034
final config = await load('test/__fixtures__/include-package.yaml');
@@ -33,5 +37,7 @@ void main() {
3337
expect(config.rules['type-case'], isA<CaseRule>());
3438
expect(config.rules['type-enum'], isA<EnumRule>());
3539
expect((config.rules['type-case'] as CaseRule).type, Case.upper);
40+
expect(config.defaultIgnores, equals(null));
41+
expect(config.ignores, equals(["r'^fixup'"]));
3642
});
3743
}

0 commit comments

Comments
 (0)