Raise the declared minimums in pubspec.yaml to what our deps already require: Flutter >=3.35.0 / Dart >=3.9.0 (was 3.19.0 / 3.5.0). alchemist 0.12 needs Flutter 3.32; Dart 3.9 first ships in Flutter 3.35, so 3.35 is the binding floor. Pin the exact build toolchain in .fvmrc (Flutter 3.44.1). Moving to the Dart 3.9 language level switches `dart format` to the new "tall" style and enables two new lints. This commit is the resulting mechanical churn, isolated from any behaviour change: - whole-tree `dart format` reformat (tall style) - `dart fix` for unnecessary_underscores + use_null_aware_elements No runtime behaviour change; `make test` green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
61 lines
1.8 KiB
Dart
61 lines
1.8 KiB
Dart
import 'package:clide/extension/extension.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
void main() {
|
|
group('ExtensionManifest.fromYamlString', () {
|
|
test('parses the minimum viable manifest', () {
|
|
final m = ExtensionManifest.fromYamlString('''
|
|
id: ext.postmeridiem.linear
|
|
title: Linear
|
|
version: 1.2.3
|
|
entry: main.lua
|
|
schema_version: 1
|
|
''');
|
|
expect(m.id, 'ext.postmeridiem.linear');
|
|
expect(m.title, 'Linear');
|
|
expect(m.version, '1.2.3');
|
|
expect(m.entry, 'main.lua');
|
|
expect(m.schemaVersion, 1);
|
|
expect(m.dependsOn, isEmpty);
|
|
});
|
|
|
|
test('title defaults to id when absent', () {
|
|
final m = ExtensionManifest.fromYamlString('id: ext.x');
|
|
expect(m.title, 'ext.x');
|
|
expect(m.version, '0.0.0');
|
|
expect(m.entry, 'extension.lua');
|
|
expect(m.schemaVersion, 1);
|
|
});
|
|
|
|
test('depends_on list is captured', () {
|
|
final m = ExtensionManifest.fromYamlString('''
|
|
id: ext.a
|
|
depends_on:
|
|
- builtin.git
|
|
- builtin.diff
|
|
''');
|
|
expect(m.dependsOn, ['builtin.git', 'builtin.diff']);
|
|
});
|
|
|
|
test('non-string depends_on entries are filtered out', () {
|
|
final m = ExtensionManifest.fromYamlString('''
|
|
id: ext.x
|
|
depends_on: [builtin.git, 42, builtin.diff]
|
|
''');
|
|
expect(m.dependsOn, ['builtin.git', 'builtin.diff']);
|
|
});
|
|
|
|
test('missing id throws FormatException', () {
|
|
expect(() => ExtensionManifest.fromYamlString('title: Floating'), throwsA(isA<FormatException>()));
|
|
});
|
|
|
|
test('empty id throws FormatException', () {
|
|
expect(() => ExtensionManifest.fromYamlString('id: ""'), throwsA(isA<FormatException>()));
|
|
});
|
|
|
|
test('non-map root throws FormatException', () {
|
|
expect(() => ExtensionManifest.fromYamlString('- just a list'), throwsA(isA<FormatException>()));
|
|
});
|
|
});
|
|
}
|