77 lines
2.4 KiB
Dart
77 lines
2.4 KiB
Dart
|
|
import 'dart:io';
|
||
|
|
|
||
|
|
import 'package:test/test.dart';
|
||
|
|
|
||
|
|
import '../../apps/learn/release.dart';
|
||
|
|
import '../../tool/src/release/apps.dart';
|
||
|
|
import '../../tool/src/release/version.dart';
|
||
|
|
import 'fixtures.dart';
|
||
|
|
|
||
|
|
void main() {
|
||
|
|
test("an app's release names its files and tags by its id", () {
|
||
|
|
expect(testApp.tagPrefix, 'notes-v');
|
||
|
|
expect(testApp.pubspec, 'apps/notes/halkyon_notes_flutter/pubspec.yaml');
|
||
|
|
expect(testApp.instance, 'notes.halkyon.eu');
|
||
|
|
expect(
|
||
|
|
testApp.apkFile(const Version(0, 19, 0)),
|
||
|
|
'halkyon-notes-0.19.0.apk',
|
||
|
|
);
|
||
|
|
expect(
|
||
|
|
testApp.snapFile(const Version(0, 19, 0)),
|
||
|
|
'halkyon-notes_0.19.0_amd64.snap',
|
||
|
|
);
|
||
|
|
});
|
||
|
|
|
||
|
|
test('a configuration that would release something wrong is refused', () {
|
||
|
|
expect(testApp.problems(), isEmpty);
|
||
|
|
expect(
|
||
|
|
testApp.copyWith(id: 'Notes App').problems(),
|
||
|
|
contains('The id "Notes App" is not lower-case letters and digits.'),
|
||
|
|
);
|
||
|
|
expect(
|
||
|
|
testApp.copyWith(serverUrl: 'http://notes.halkyon.eu/').problems(),
|
||
|
|
contains("The server URL http://notes.halkyon.eu/ isn't HTTPS."),
|
||
|
|
);
|
||
|
|
expect(
|
||
|
|
testApp.copyWith(serverUrl: 'https://notes.halkyon.eu').problems(),
|
||
|
|
contains(
|
||
|
|
"The server URL https://notes.halkyon.eu doesn't end with a slash, "
|
||
|
|
'as the app is built with it.',
|
||
|
|
),
|
||
|
|
);
|
||
|
|
expect(
|
||
|
|
testApp
|
||
|
|
.copyWith(flutterPackage: 'apps/todo/halkyon_todo_flutter')
|
||
|
|
.problems(),
|
||
|
|
contains(
|
||
|
|
"The Flutter package apps/todo/halkyon_todo_flutter isn't in "
|
||
|
|
'apps/notes.',
|
||
|
|
),
|
||
|
|
);
|
||
|
|
expect(
|
||
|
|
testApp.copyWith(applicationId: 'notes').problems(),
|
||
|
|
contains("The application ID notes isn't one Android takes."),
|
||
|
|
);
|
||
|
|
});
|
||
|
|
|
||
|
|
test("Learn's release is registered, sound, and names files that exist", () {
|
||
|
|
expect(releasedApps['learn'], same(learnRelease));
|
||
|
|
expect(learnRelease.problems(), isEmpty);
|
||
|
|
// The test runs in the repository's root, as `dart test` does.
|
||
|
|
for (final path in [
|
||
|
|
learnRelease.pubspec,
|
||
|
|
learnRelease.android.certificateFile,
|
||
|
|
...learnRelease.releaseFiles,
|
||
|
|
]) {
|
||
|
|
expect(
|
||
|
|
FileSystemEntity.typeSync(path),
|
||
|
|
isNot(FileSystemEntityType.notFound),
|
||
|
|
reason: path,
|
||
|
|
);
|
||
|
|
}
|
||
|
|
expect(
|
||
|
|
File('${learnRelease.snap!.directory}/snapcraft.yaml').readAsStringSync(),
|
||
|
|
contains('name: ${learnRelease.snap!.name}\n'),
|
||
|
|
);
|
||
|
|
});
|
||
|
|
}
|