anchor.diff:  
         // Analyze package:bbb/b.dart and compute summary.
         {
  -        await _doDrive(bDart, uri: bUri, additionalArgs: [
  +        await _doDrive(bDart, fileUri: bUri, additionalArgs: [
             '--build-summary-input=$aSum',
             '--build-summary-output=$bSum'
           ]);
  
positive.code: }
  
  class AbstractBuildModeTest extends BaseTest {
    Future<void> _doDrive(String path,
        {String uri,
        List<String> additionalArgs = const [],
        String dartSdkSummaryPath}) async {
      path = _p(path);
  
      var optionsFileName = AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE;
      var options = _p('data/options_tests_project/' + optionsFileName);
  
      var args = <String>[];
      if (dartSdkSummaryPath != null) {
        args.add('--dart-sdk-summary');
        args.add(dartSdkSummaryPath);
      } else {
        var sdkPath = _findSdkDirForSummaries();
        args.add('--dart-sdk');
        args.add(sdkPath);
      }
      args.add('--build-mode');
      args.add('--format=machine');
      args.addAll(additionalArgs);
  
      uri ??= 'file:///test_file.dart';
      var source = '$uri|$path';
  
      await drive(source, args: args, options: options);
    }
  
    /// Try to find a appropriate directory to pass to "--dart-sdk" that will
    /// allow summaries to be found.
    String _findSdkDirForSummaries() {
      var triedDirectories = <String>{};
      bool isSuitable(String sdkDir) {
        triedDirectories.add(sdkDir);
        return File(path.join(sdkDir, 'lib', '_internal', 'strong.sum'))
            .existsSync();
      }
  
      String makeAbsoluteAndNormalized(String result) {
        result = path.absolute(result);
        result = path.normalize(result);
        return result;
      }
  
      // Usually the sdk directory is the parent of the parent of the "dart"
      // executable.
      var executableParent = File(Platform.executable).parent;
      var executableGrandparent = executableParent.parent;
      if (isSuitable(executableGrandparent.path)) {
        return makeAbsoluteAndNormalized(executableGrandparent.path);
      }
      // During build bot execution, the sdk directory is simply the parent of the
      // "dart" executable.
      if (isSuitable(executableParent.path)) {
        return makeAbsoluteAndNormalized(executableParent.path);
      }
      // If neither of those are suitable, assume we are running locally within the
      // SDK project (e.g. within an IDE). Find the build output directory and
      // search all built configurations.
      var sdkRootDir =
          File(Platform.script.toFilePath()).parent.parent.parent.parent;
      for (var outDirName in ['out', 'xcodebuild']) {
        var outDir = Directory(path.join(sdkRootDir.path, outDirName));
        if (outDir.existsSync()) {
          for (var subdir in outDir.listSync()) {
            if (subdir is Directory) {
              var candidateSdkDir = path.join(subdir.path, 'dart-sdk');
              if (isSuitable(candidateSdkDir)) {
                return makeAbsoluteAndNormalized(candidateSdkDir);
              }
            }
          }
        }
      }
      throw Exception('Could not find an SDK directory containing summaries.'
          '  Tried: ${triedDirectories.toList()}');
    }
  }
  
  
negative.code:       // Analyze package:aaa/a.dart and compute summary.
        {
          await _doDrive(aDart,
              fileUri: aUri, additionalArgs: ['--build-summary-output=$aSum']);
          expect(exitCode, 0);
          var bytes = File(aSum).readAsBytesSync();
          var bundle = PackageBundle.fromBuffer(bytes);
  