Skip to content

Commit

Permalink
Move to a shared utility
Browse files Browse the repository at this point in the history
  • Loading branch information
natebosch committed Jun 17, 2024
1 parent 9bb4a2c commit 7262095
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 62 deletions.
47 changes: 4 additions & 43 deletions pkgs/test_core/lib/src/runner/vm/platform.dart
Original file line number Diff line number Diff line change
Expand Up @@ -299,10 +299,11 @@ stderr: ${processResult.stderr}''');
if (!file.existsSync()) {
file
..createSync(recursive: true)
..writeAsStringSync(_bootstrapIsolateTestContents(
..writeAsStringSync(testBootstrapContents(
testUri: await absoluteUri(testPath),
languageVersionComment: languageVersionComment,
packageConfigUri: await Isolate.packageConfig,
bootstrapType: 'Vm',
));
}
return file.uri;
Expand All @@ -319,57 +320,17 @@ stderr: ${processResult.stderr}''');
if (!file.existsSync()) {
file
..createSync(recursive: true)
..writeAsStringSync(_bootstrapNativeTestContents(
..writeAsStringSync(testBootstrapContents(
testUri: await absoluteUri(testPath),
languageVersionComment: languageVersionComment,
packageConfigUri: await Isolate.packageConfig,
bootstrapType: 'Native',
));
}
return file.path;
}
}

/// Creates bootstrap file contents for running [testUri] in a VM isolate.
String _bootstrapIsolateTestContents({
required Uri testUri,
required String languageVersionComment,
required Uri? packageConfigUri,
}) =>
'''
$languageVersionComment
import 'dart:isolate';
import 'package:test_core/src/bootstrap/vm.dart';
import '$testUri' as test;
const packageConfigLocation = '$packageConfigUri';
void main(_, SendPort sendPort) {
internalBootstrapVmTest(() => test.main, sendPort);
}
''';

/// Creates bootstrap file contents for running [testUri] as a native
/// executable.
String _bootstrapNativeTestContents({
required Uri testUri,
required String languageVersionComment,
required Uri? packageConfigUri,
}) =>
'''
$languageVersionComment
import 'dart:isolate';
import 'package:test_core/src/bootstrap/vm.dart';
import '$testUri' as test;
const packageConfigLocation = '$packageConfigUri';
void main(List<String> args) {
internalBootstrapNativeTest(() => test.main, args);
}
''';

Future<Map<String, dynamic>> _gatherCoverage(Environment environment) async {
final isolateId = Uri.parse(environment.observatoryUrl!.fragment)
.queryParameters['isolateId'];
Expand Down
48 changes: 29 additions & 19 deletions pkgs/test_core/lib/src/runner/vm/test_compiler.dart
Original file line number Diff line number Diff line change
Expand Up @@ -86,23 +86,6 @@ class _TestCompilerForLanguageVersion {
: _dillCachePath = '$dillCachePrefix.'
'${_dillCacheSuffix(_languageVersionComment, enabledExperiments)}';

String _generateEntrypoint(Uri testUri, Uri? packageConfigUri) {
return '''
$_languageVersionComment
import "dart:isolate";
import "package:test_core/src/bootstrap/vm.dart";
import "$testUri" as test;
const packageConfigLocation = '$packageConfigUri';
void main(_, SendPort sendPort) {
internalBootstrapVmTest(() => test.main, sendPort);
}
''';
}

Future<CompilationResponse> compile(Uri mainUri) =>
_compilePool.withResource(() => _compile(mainUri));

Expand All @@ -111,8 +94,12 @@ class _TestCompilerForLanguageVersion {
if (_closeMemo.hasRun) return CompilationResponse._wasShutdown;
CompileResult? compilerOutput;
final tempFile = File(p.join(_outputDillDirectory.path, 'test.dart'))
..writeAsStringSync(
_generateEntrypoint(mainUri, await Isolate.packageConfig));
..writeAsStringSync(testBootstrapContents(
testUri: mainUri,
packageConfigUri: await Isolate.packageConfig,
languageVersionComment: _languageVersionComment,
bootstrapType: 'Vm',
));
final testCache = File(_dillCachePath);

try {
Expand Down Expand Up @@ -215,3 +202,26 @@ String _dillCacheSuffix(
}
return base64.encode(utf8.encode(identifierString.toString()));
}

/// Creates bootstrap file contents for running [testUri] in a VM isolate.
String testBootstrapContents({
required Uri testUri,
required String languageVersionComment,
required Uri? packageConfigUri,
required String bootstrapType,
}) =>
'''
$languageVersionComment
import 'dart:isolate';
import 'package:test_core/src/bootstrap/vm.dart';
import '$testUri' as test;
const packageConfigLocation = '$packageConfigUri';
void main(_, SendPort sendPort) {
internalBootstrap${bootstrapType}Test(() => test.main, sendPort);
}
''';

0 comments on commit 7262095

Please sign in to comment.