Add app source and tests
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
49
test/build_service_test.dart
Normal file
49
test/build_service_test.dart
Normal file
@@ -0,0 +1,49 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:peach/Peach/about/internal/application/ServiceConfig.dart';
|
||||
import 'package:peach/Peach/about/internal/file/BuildService.dart';
|
||||
|
||||
void main() {
|
||||
test('runs custom build command and picks the runnable jar', () async {
|
||||
// Fake Gradle project with several jars in build/libs.
|
||||
final dir = Directory.systemTemp.createTempSync('peachdeploy_build_test');
|
||||
addTearDown(() => dir.deleteSync(recursive: true));
|
||||
|
||||
File('${dir.path}/build.gradle').writeAsStringSync('// fake');
|
||||
final libs = Directory('${dir.path}/build/libs')..createSync(recursive: true);
|
||||
// Distractors that must be excluded, plus the real artifact.
|
||||
File('${libs.path}/app-sources.jar').writeAsStringSync('x');
|
||||
File('${libs.path}/app-plain.jar').writeAsStringSync('x');
|
||||
File('${libs.path}/app.jar').writeAsStringSync('runnable');
|
||||
|
||||
final svc = ServiceConfig(
|
||||
name: 'demo',
|
||||
localProjectPath: dir.path,
|
||||
// Trivial command so we don't need a real Gradle install.
|
||||
buildCommand: Platform.isWindows ? 'echo building' : 'true',
|
||||
);
|
||||
|
||||
final build = BuildService();
|
||||
addTearDown(build.dispose);
|
||||
|
||||
final result = await build.build(svc);
|
||||
|
||||
expect(result.ok, isTrue, reason: result.message);
|
||||
expect(result.jar, isNotNull);
|
||||
expect(result.jar!.path.replaceAll('\\', '/'), endsWith('app.jar'));
|
||||
});
|
||||
|
||||
test('reports a helpful error when no project is detected', () async {
|
||||
final dir = Directory.systemTemp.createTempSync('peachdeploy_empty_test');
|
||||
addTearDown(() => dir.deleteSync(recursive: true));
|
||||
|
||||
final svc = ServiceConfig(name: 'empty', localProjectPath: dir.path);
|
||||
final build = BuildService();
|
||||
addTearDown(build.dispose);
|
||||
|
||||
final result = await build.build(svc);
|
||||
expect(result.ok, isFalse);
|
||||
expect(result.message.toLowerCase(), contains('detect'));
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user