halkyon/test/check_files_test.dart
Tizian 「ティツィアーン」 af1dbee509
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>
2026-10-22 18:11:04 +02:00

57 lines
2.2 KiB
Dart

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',
]);
});
}