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:       orElse: () => "master");
  }
  
  class ResolvedConfigurations {
    final Set<String> configurationNames;
    final Set<String> builders;
    ResolvedConfigurations(this.configurationNames, this.builders);
  }
  
  /// Finds the named configuration to test according to the test matrix
  /// information and the command line options.
  ResolvedConfigurations resolveNamedConfigurations(
      List<String> branches,
      List<dynamic> buildersConfigurations,
      String requestedBranch,
      List<String> requestedNamedConfigurations,
      String requestedBuilder) {
    Set<String> namedConfigurations = {};
    Set<String> builders = {};
    bool foundBuilder = false;
    for (final builderConfiguration in buildersConfigurations) {
      for (final builder in builderConfiguration["builders"]) {
        if (requestedBuilder != null && builder != requestedBuilder) {
  
negative.code:         final arguments = step["arguments"]
              .map((argument) => expandVariables(argument, builder))
              .toList();
          final namedConfiguration = arguments
              .firstWhere((argument) => (argument as String).startsWith("-n"))
              .substring(2);
          if (namedConfiguration.contains(",")) {
  