build: Melos, a Dart check and every path for the single repository
- Melos 8.9 as the root's dev dependency, with scripts across the workspace (analyze, test:dart, test:flutter, generate, check) and its filters (--diff, --include-dependents); cli_util overridden to 0.5.2 for it, since Learn's flutter_launcher_icons asks for 0.4 and uses only its logger, unchanged in 0.5. - tool/check.dart in place of tool/check.sh: packages, formatting of our own files, analysis, the tools' tests, then every package's tests through Melos (--changed-since=<commit> for only what changed and what depends on it). tool/pre-push is the hook: the signature check, then the checks. CI generates every server's code and runs the same check. - The images build from the root with a workspace narrowed to what they need (tool/workspace_only.sh); compose, the deploy's migration test, the snap, the release script, the editor's launch files and Learn's asset tools (run from apps/learn) follow the new layout. - The project's source is named as project-halkyon/halkyon (source link, snap, F-Droid listing, release uploads); the AGPL packages carry the licence's own text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
9643412be9
commit
af1dbee509
1 changed files with 3771 additions and 792 deletions
57
test/check_files_test.dart
Normal file
57
test/check_files_test.dart
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
import 'package:test/test.dart';
|
||||
|
||||
import '../tool/src/check_files.dart';
|
||||
|
||||
void main() {
|
||||
test("our own Dart files are formatted: the apps', the shared packages', the "
|
||||
"tools'", () {
|
||||
for (final path in [
|
||||
'apps/learn/halkyon_learn_flutter/lib/main.dart',
|
||||
'apps/learn/halkyon_learn_server/lib/server.dart',
|
||||
'apps/learn/halkyon_learn_server/test/integration/auth/account_test.dart',
|
||||
'apps/todo/halkyon_todo_flutter/lib/main.dart',
|
||||
'packages/halkyon_app/lib/halkyon_app.dart',
|
||||
'packages/halkyon_base_server/lib/src/auth/email.dart',
|
||||
'tool/check.dart',
|
||||
]) {
|
||||
expect(isOwnDartFile(path), isTrue, reason: path);
|
||||
}
|
||||
});
|
||||
|
||||
test('what a generator writes is left as it wrote it', () {
|
||||
for (final path in [
|
||||
// The client packages, Serverpod's from top to bottom.
|
||||
'apps/learn/halkyon_learn_client/lib/src/protocol/client.dart',
|
||||
'apps/todo/halkyon_todo_client/lib/halkyon_todo_client.dart',
|
||||
'packages/halkyon_base_client/lib/src/protocol/protocol.dart',
|
||||
// A server's generated sources and test tools.
|
||||
'apps/learn/halkyon_learn_server/lib/src/generated/protocol.dart',
|
||||
'packages/halkyon_base_server/lib/src/generated/endpoints.dart',
|
||||
'apps/learn/halkyon_learn_server/test/integration/test_tools/serverpod_test_tools.dart',
|
||||
// gen-l10n's localizations, the app's and the shared packages'.
|
||||
'apps/learn/halkyon_learn_flutter/lib/l10n/app_localizations.dart',
|
||||
'apps/learn/halkyon_learn_flutter/lib/l10n/app_localizations_de.dart',
|
||||
'packages/halkyon_ui/lib/l10n/halkyon_ui_localizations_en.dart',
|
||||
'packages/halkyon_app/lib/l10n/halkyon_app_localizations.dart',
|
||||
]) {
|
||||
expect(isOwnDartFile(path), isFalse, reason: path);
|
||||
}
|
||||
});
|
||||
|
||||
test('the files of other languages are no Dart files', () {
|
||||
expect(isOwnDartFile('apps/learn/tool/app_icons.py'), isFalse);
|
||||
expect(
|
||||
isOwnDartFile('packages/halkyon_app/lib/l10n/halkyon_app_en.arb'),
|
||||
isFalse,
|
||||
);
|
||||
});
|
||||
|
||||
test("Melos' filters take only what changed since a commit, and what depends "
|
||||
'on it, when asked', () {
|
||||
expect(melosFilters(), isEmpty);
|
||||
expect(melosFilters(changedSince: 'origin/main'), [
|
||||
'--diff=origin/main',
|
||||
'--include-dependents',
|
||||
]);
|
||||
});
|
||||
}
|
||||
Loading…
Reference in a new issue