Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 0 additions & 13 deletions .github/workflows/dart_skills_lint_workflow.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -75,19 +75,6 @@ jobs:
min_coverage: 73
exclude: '**/*.g.dart'

validate_skills:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dart-lang/setup-dart@v1
with:
sdk: stable

- run: dart pub get

- name: Validate skills
run: dart run dart_skills_lint:cli

formatting:
runs-on: ubuntu-latest
steps:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ When evaluating the impact of pull requests on downstream repositories, check ag
- **Primary Consumer Location**: Root skill sets or tooling harnesses.
- **Tooling Engine**: `dart pub get` and `dart test`

### 6. `kevmoo/dart-best-practices`
- **Repository URL**: [kevmoo/dart-best-practices](https://github.com/kevmoo/dart-best-practices)
- **Primary Consumer Location**: Root tooling verification tests.
### 6. `kevmoo/dash_skills`
- **Repository URL**: [kevmoo/dash_skills](https://github.com/kevmoo/dash_skills)
- **Primary Consumer Location**: `tool/`
- **Tooling Engine**: `dart pub get` and `dart test`
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,11 @@ test('Validate Repository Skills', () async {
final Configuration config = await ConfigParser.loadConfig(
path: path.join(repoRoot.path, 'path', 'to', _configFileName),
);
expect(
config.directoryConfigs,
isNotEmpty,
reason: 'Configuration directoryConfigs should not be empty.',
);
final bool isValid = await validateSkills(
skillDirPaths: [skillsDirectory], // Explicit absolute targeting
config: config,
Expand Down
5 changes: 5 additions & 0 deletions tool/dart_skills_lint/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,11 @@ void main() {
// share configuration. Pass `customRules: [...]` to inject any
// custom SkillRule implementations.
final config = await ConfigParser.loadConfig();
expect(
config.directoryConfigs,
isNotEmpty,
reason: 'Configuration directoryConfigs should not be empty.',
);
await validateSkills(config: config);
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,11 @@ import 'package:test/test.dart';
void main() {
test('skills pass with deprecated-skill custom rule', () async {
final config = await ConfigParser.loadConfig();
expect(
config.directoryConfigs,
isNotEmpty,
reason: 'Configuration directoryConfigs should not be empty.',
);
await validateSkills(
config: config,
customRules: [DeprecatedSkillRule()],
Expand Down
5 changes: 5 additions & 0 deletions tool/dart_skills_lint/test/dart_skills_lint_skills_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ void main() {
// Load configuration from the default file (dart_skills_lint.yaml)
// to mirror what is configured in the repository.
final Configuration config = await ConfigParser.loadConfig();
expect(
config.directoryConfigs,
isNotEmpty,
reason: 'Configuration directoryConfigs should not be empty.',
);

final bool isValid = await validateSkills(config: config);
expect(isValid, isTrue, reason: 'Skills validation failed. See above for details.');
Expand Down
6 changes: 6 additions & 0 deletions tool/generator/dart_skills_lint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
dart_skills_lint:
rules:
check-relative-paths: error
check-absolute-paths: error
directories:
- path: "../../skills"
33 changes: 25 additions & 8 deletions tool/generator/test/lint_skills_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'dart:io';

import 'package:dart_skills_lint/dart_skills_lint.dart';
import 'package:logging/logging.dart';
import 'package:path/path.dart' as p;
import 'package:test/test.dart';

import 'custom_skill_rules/last_modified_rule.dart';
Expand All @@ -15,19 +18,33 @@ void main() {
printOnFailure('${record.level.name}: ${record.message}');
});

final originalDir = Directory.current;
final parts = p.split(originalDir.path);
final isRoot =
!(parts.length >= 2 &&
parts[parts.length - 2] == 'tool' &&
parts.last == 'generator');

if (isRoot) {
Directory.current = Directory(p.join('tool', 'generator'));
}

try {
final config = await ConfigParser.loadConfig();
expect(
config.directoryConfigs,
isNotEmpty,
reason: 'Configuration directoryConfigs should not be empty.',
);

expect(
await validateSkills(
skillDirPaths: ['../../skills'],
resolvedRules: {
'check-relative-paths': AnalysisSeverity.error,
'check-absolute-paths': AnalysisSeverity.error,
},
customRules: [LastModifiedRule()],
),
await validateSkills(config: config, customRules: [LastModifiedRule()]),
isTrue,
);
} finally {
if (isRoot) {
Directory.current = originalDir;
}
await subscription.cancel();
}
});
Expand Down
Loading