anchor.diff:      return null;
     }
     if (requestedBuilder != null &&
  -      requestedNamedConfigurations == null &&
  -      namedConfigurations.isEmpty) {
  +      requestedNamedConfigurations.isEmpty &&
  +      testedConfigurations.isEmpty) {
       stderr.writeln("error: Builder $requestedBuilder isn't testing any named "
           "configurations");
       return null;
     }
  -  if (requestedBuilder != null &&
  -      requestedNamedConfigurations != null &&
  -      namedConfigurations.isEmpty) {
  -    stderr.writeln("error: The builder $requestedBuilder isn't testing the "
  -        "named configuration $requestedNamedConfigurations");
  -    return null;
  -  }
  -  if (requestedNamedConfigurations != null && builders.isEmpty) {
  -    stderr.writeln("error: The named configuration "
  -        "$requestedNamedConfigurations isn't tested on any builders");
  -    return null;
  -  }
  -
  -  return ResolvedConfigurations(namedConfigurations, builders);
  +  if (requestedNamedConfigurations.isNotEmpty) {
  +    var hasUntestedConfiguration = false;
  +    for (final requestedConfiguration in requestedNamedConfigurations) {
  +      if (!testedConfigurations.containsKey(requestedConfiguration)) {
  +        final builder = requestedBuilder != null
  +            ? "builder $requestedBuilder"
  +            : "any builder";
  +        stderr.writeln("error: The named configuration "
  +            "$requestedConfiguration isn't tested on $builder");
  +        hasUntestedConfiguration = true;
  +      }
  +    }
  +    if (hasUntestedConfiguration) {
  +      return null;
  +    }
  +  }
  +
  +  return testedConfigurations;
   }
   
   /// Locates the merge base between head and the [branch] on the given [remote].
  
positive.code:     final tasks = <Future>[];
      bool needsConfigurationOverride = localConfiguration != null &&
          localConfiguration != namedConfigurations.single;
      bool needsMerge = configurations.builders.length > 1;
      final inexactBuilds = <String, String>{};
      var previousFileName = "previous.json";
      var flakyFileName = "flaky.json";
      var downloadNumber = 0;
      // Download the previous results and flakiness info from cloud storage.
      for (final builder in configurations.builders) {
        if (needsMerge) {
          previousFileName = "previous-$downloadNumber.json";
          flakyFileName = "flaky-$downloadNumber.json";
  
negative.code:       testMatrix["builder_configurations"] as List<dynamic>;
    // Determine what named configuration to run and which builders to download
    // existing results from.
    final testedConfigurations = resolveNamedConfigurations(
        branches,
        buildersConfigurations,
        options["branch"],
        requestedNamedConfigurations,
        requestedBuilder);
    if (testedConfigurations == null) {
      // No valid configuration could be found. The error has already been
      // reported by [resolveConfigurations].
      exitCode = 1;
      return;
    }
    final namedConfigurations = testedConfigurations.keys.toSet();
    final builders =
        testedConfigurations.values.expand((builders) => builders).toSet();
    // Print information about the resolved builders to compare with.
    for (final namedConfiguration in namedConfigurations) {
      final testedBuilders = testedConfigurations[namedConfiguration];
      final onWhichBuilders = testedBuilders.length == 1
          ? "builder ${testedBuilders.single}"
          : "builders${testedBuilders.map((b) => "\n  $b").join()}";
      if (localConfiguration != null) {
        print("Testing named configuration $localConfiguration "
            "compared with configuration ${namedConfiguration} "
            "on $onWhichBuilders");
      } else {
        print("Testing named configuration $namedConfiguration "
            "compared with $onWhichBuilders");
      }
    }
    // Use given commit or find out where the current HEAD branched.
  