executableRunner function
Returns an executable that can be passed to Process.start and similar APIs
along with the arguments returned by executableArgs to run executable,
which is the name of the executable as listed in the pubspec (or in
pkg.executables).
If node is true, this and executableArgs will run a NodeJS process
using the executable compiled by pkg-npm-dev. Otherwise, they'll run a
Dart VM process using the executable compiled by pkg-standalone-dev if one
exists and running from source otherwise.
For example:
import 'dart:io';
import 'package:cli_pkg/testing.dart' as pkg;
import 'package:test/test.dart';
void main() {
test("hello-world prints a message", () async {
var result = await Process.run(
pkg.executableRunner("hello-world"),
pkg.executableArgs("hello-world"));
expect(result.stdout, equals("Hello, world!\n");
});
}
Note that in practice it's usually easier to use start.
Implementation
String executableRunner(String executable, {bool node = false}) => node
? "node"
: File(p.absolute("build/$executable.native")).existsSync()
? p.join(
sdkDir.path,
"bin/dartaotruntime${CliPlatform.current.binaryExtension}",
)
: Platform.executable;