import 'dart:async';
import 'dart:io';
import 'package:path/path.dart' as p;
Future<void> main(List<String> args) async {
if (!Platform.isLinux) {
print('Skipping for non-Linux host');
exit(0);
}
final Directory packageDir = Directory(
p.dirname(Platform.script.path),
).parent;
final String testingAppDirPath = p.join(
packageDir.path,
'testing',
'test_app',
);
int status = await _runProcess('flutter', <String>[
'pub',
'get',
], workingDirectory: testingAppDirPath);
if (status != 0) {
exit(status);
}
status = await _runProcess('flutter', <String>[
'test',
'testing',
], workingDirectory: packageDir.path);
exit(status);
}
Future<Process> _streamOutput(Future<Process> processFuture) async {
final Process process = await processFuture;
await Future.wait(<Future<void>>[
stdout.addStream(process.stdout),
stderr.addStream(process.stderr),
]);
return process;
}
Future<int> _runProcess(
String command,
List<String> arguments, {
String? workingDirectory,
}) async {
final Process process = await _streamOutput(
Process.start(command, arguments, workingDirectory: workingDirectory),
);
return process.exitCode;
}