anchor.diff:      bool isWebTest = optionsFromFile['containsDomImport'];
       bool isLibraryDefinition = optionsFromFile['isLibraryDefinition'];
       if (!isLibraryDefinition && optionsFromFile['containsSourceOrImport']) {
  -      print('Warning for $filename: Browser tests require #library ' +
  +      print('Warning for $filename: Browser tests require #library '
               'in any file that uses #import, #source, or #resource');
       }
   
  
positive.code:    * We use a subdirectory of the build directory that is the same number
     * of levels down in the checkout as the original path of the web test.
     */
    Directory createOutputDirectory(String testPath, String optionsName) {
      String testUniqueName =
          testPath.substring(dartDir.length + 1, testPath.length - 5);
      testUniqueName = testUniqueName.replaceAll('/', '_');
      if (!optionsName.isEmpty()) {
        testUniqueName += '-$optionsName';
      }
  
      // Create '[build dir]/generated_tests/$compiler-$runtime/$testUniqueName',
      // including any intermediate directories that don't exist.
      var generatedTestPath = ['generated_tests',
                               configuration['compiler'] + '-' +
                               configuration['runtime'],
                               testUniqueName];
  
      String tempDirPath = TestUtils.buildDir(configuration);
      Directory tempDir = new Directory(tempDirPath);
      if (!tempDir.existsSync()) {
        // TODO(whesse): Replace this with mkdirRecursive.
        // Dartium tests can be run with no build step, with no output directory.
        // This special case builds the build directory that should be there.
        var buildPath = tempDirPath.split('/');
        tempDirPath = buildPath[0];
        if (tempDirPath == '') {
          throw new Exception(
              'Non-relative path to build directory in test_suite.dart');
        }
        if (buildPath.length > 1) {
          buildPath.removeRange(0, 1);
          if (buildPath.last() == '') buildPath.removeLast();
          buildPath.addAll(generatedTestPath);
          generatedTestPath = buildPath;
        }
        tempDir = new Directory(tempDirPath);
        if (!tempDir.existsSync()) {
          tempDir.createSync();
        }
      }
      tempDirPath = new File(tempDirPath).fullPathSync().replaceAll('\\', '/');
      return TestUtils.mkdirRecursive(tempDirPath,
                                      Strings.join(generatedTestPath, '/'));
    }
  
    String get scriptType() {
  
negative.code:       args = new List.from(args);
        String testPath =
            new File(info.filename).fullPathSync().replaceAll('\\', '/');
        String tempDir = createOutputDirectory(testPath, '');
        args.add('--out=$tempDir/out.js');
        List<Command> commands = <Command>[new Command(shellPath(), args)];
        if (configuration['runtime'] == 'd8') {
          var d8 = TestUtils.d8FileName(configuration);
          commands.add(new Command(d8, ['$tempDir/out.js']));
        }
        return commands;
      } else {
  