diff --git a/build_runner/CHANGELOG.md b/build_runner/CHANGELOG.md index aa4d4c328a..d8bad17629 100644 --- a/build_runner/CHANGELOG.md +++ b/build_runner/CHANGELOG.md @@ -3,6 +3,7 @@ - Bug fix: with `build_runner serve`, special handling of paths containing `/packages/` was hiding actual folders called `packages`. Serve the actual folders first, before trying the package lookup. +- Remove `build_script_generate.dart`. ## 2.7.0 diff --git a/build_runner/lib/build_script_generate.dart b/build_runner/lib/build_script_generate.dart deleted file mode 100644 index c3d67020c6..0000000000 --- a/build_runner/lib/build_script_generate.dart +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -export 'src/build_script_generate/bootstrap.dart' show generateAndRun; -export 'src/build_script_generate/build_script_generate.dart' - show findBuilderApplications, generateBuildScript, scriptLocation; diff --git a/build_runner/lib/src/build_script_generate/bootstrap.dart b/build_runner/lib/src/build_script_generate/bootstrap.dart index dd82680a1b..894a803b92 100644 --- a/build_runner/lib/src/build_script_generate/bootstrap.dart +++ b/build_runner/lib/src/build_script_generate/bootstrap.dart @@ -18,38 +18,29 @@ import 'build_script_generate.dart'; /// Generates the build script, precompiles it if needed, and runs it. /// -/// The [handleUncaughtError] function will be invoked when the build script -/// terminates with an uncaught error. -/// /// Will retry once on [IsolateSpawnException]s to handle SDK updates. /// /// Returns the exit code from running the build script. /// /// If an exit code of 75 is returned, this function should be re-ran. +/// +/// Pass [script] to override the default build script for testing. Future generateAndRun( List args, { List? experiments, Logger? logger, - Future Function() generateBuildScript = generateBuildScript, - void Function(Object error, StackTrace stackTrace) handleUncaughtError = - _defaultHandleUncaughtError, + String? script, }) { return buildLog.runWithLoggerDisplay( logger, - () => _generateAndRun( - args, - experiments, - generateBuildScript, - handleUncaughtError, - ), + () => _generateAndRun(args, experiments, script), ); } Future _generateAndRun( List args, List? experiments, - Future Function() generateBuildScript, - void Function(Object error, StackTrace stackTrace) handleUncaughtError, + String? script, ) async { experiments ??= []; ReceivePort? exitPort; @@ -72,7 +63,7 @@ Future _generateAndRun( if (buildScript.existsSync()) { oldContents = buildScript.readAsStringSync(); } - var newContents = await generateBuildScript(); + var newContents = script ?? await generateBuildScript(); // Only trigger a build script update if necessary. if (newContents != oldContents) { buildScript @@ -101,7 +92,7 @@ Future _generateAndRun( final error = e[0] ?? TypeError(); final trace = Trace.parse(e[1] as String? ?? '').terse; - handleUncaughtError(error, trace); + _handleUncaughtError(error, trace); if (buildProcessState.isolateExitCode == null || buildProcessState.isolateExitCode == 0) { buildProcessState.isolateExitCode = 1; @@ -273,7 +264,7 @@ Future _checkImportantPackageDepsAndExperiments( return true; } -void _defaultHandleUncaughtError(Object error, StackTrace stackTrace) { +void _handleUncaughtError(Object error, StackTrace stackTrace) { stderr ..writeln('\n\nYou have hit a bug in build_runner') ..writeln( diff --git a/build_runner/test/build_script_generate/bootstrap_test.dart b/build_runner/test/build_script_generate/bootstrap_test.dart index 27fbb17cb7..857d36cd7d 100644 --- a/build_runner/test/build_script_generate/bootstrap_test.dart +++ b/build_runner/test/build_script_generate/bootstrap_test.dart @@ -6,7 +6,7 @@ library; import 'dart:io'; -import 'package:build_runner/build_script_generate.dart'; +import 'package:build_runner/src/build_script_generate/bootstrap.dart'; import 'package:build_runner/src/build_script_generate/build_process_state.dart'; import 'package:build_runner/src/build_script_generate/build_script_generate.dart'; import 'package:build_runner_core/build_runner_core.dart'; @@ -28,8 +28,7 @@ void main() { test('writes dill', () async { await generateAndRun( [], - generateBuildScript: - () async => ''' + script: ''' import 'dart:isolate'; import 'package:build_runner/src/build_script_generate/build_process_state.dart'; @@ -55,9 +54,9 @@ void main(_, [SendPort? sendPort]) async { '''; buildProcessState.isolateExitCode = 6; - await generateAndRun([], generateBuildScript: () async => script); + await generateAndRun([], script: script); expect(buildProcessState.isolateExitCode, 7); - await generateAndRun([], generateBuildScript: () async => script); + await generateAndRun([], script: script); expect(buildProcessState.isolateExitCode, 8); }); @@ -65,8 +64,7 @@ void main(_, [SendPort? sendPort]) async { expect( await generateAndRun( [], - generateBuildScript: - () async => ''' + script: ''' import 'dart:isolate'; import 'package:build_runner/src/build_script_generate/build_process_state.dart'; @@ -84,8 +82,7 @@ void main(_, [SendPort? sendPort]) async { expect( await generateAndRun( [], - generateBuildScript: - () async => ''' + script: ''' import 'dart:isolate'; import 'package:build_runner/src/build_script_generate/build_process_state.dart'; @@ -109,8 +106,7 @@ void main(_, [SendPort? sendPort]) async { expect( await generateAndRun( [], - generateBuildScript: - () async => ''' + script: ''' import 'dart:isolate'; import 'package:build_runner/src/build_script_generate/build_process_state.dart'; @@ -132,8 +128,7 @@ void main(_, [SendPort? sendPort]) async { expect( await generateAndRun( [], - generateBuildScript: - () async => ''' + script: ''' import 'dart:isolate'; import 'package:build_runner/src/build_script_generate/build_process_state.dart'; @@ -148,35 +143,5 @@ void main(_, [SendPort? sendPort]) async { ); }, ); - - test('invokes custom error function', () async { - Object? error; - StackTrace? stackTrace; - - await expectLater( - generateAndRun( - [], - generateBuildScript: () async { - return ''' -import 'dart:isolate'; -import 'package:build_runner/src/build_script_generate/build_process_state.dart'; - -void main(_, [SendPort? sendPort]) async { - await buildProcessState.receive(sendPort); - throw 'expected error'; -} -'''; - }, - handleUncaughtError: (err, trace) { - error = err; - stackTrace = trace; - }, - ), - completion(1), - ); - - expect(error, 'expected error'); - expect(stackTrace, isNotNull); - }); }); } diff --git a/build_runner/test/build_script_generate/experiments_test.dart b/build_runner/test/build_script_generate/experiments_test.dart index 2b81fde92c..b77b9d14de 100644 --- a/build_runner/test/build_script_generate/experiments_test.dart +++ b/build_runner/test/build_script_generate/experiments_test.dart @@ -6,7 +6,7 @@ @TestOn('vm') library; -import 'package:build_runner/build_script_generate.dart'; +import 'package:build_runner/src/build_script_generate/bootstrap.dart'; import 'package:logging/logging.dart'; import 'package:test/test.dart'; @@ -17,8 +17,7 @@ void main() { final exitCode = await generateAndRun( [], experiments: ['records'], - generateBuildScript: () async { - return ''' + script: ''' // @dart=3.0 import 'dart:io'; import 'dart:isolate'; @@ -30,8 +29,7 @@ void main() { buildProcessState.isolateExitCode = (x.\$2); buildProcessState.send(sendPort); } - '''; - }, + ''', logger: logger, ); expect(exitCode, 2);