void generateTests()

in LanguageFeatures/Subtyping/generator/generator.dart [113:181]


void generateTests(Directory testCasesDir, Directory testTypesDir,
    Directory outputDir, String testsType, {bool clear = true}) {
  // First, clear output directory
  if (clear) {
    List<FileSystemEntity> existing = outputDir.listSync();
    for (int i = 0; i < existing.length; i++) {
      existing[i].deleteSync();
    }
  }

  // Generate tests
  List<FileSystemEntity> testCases = testCasesDir.listSync();
  List<FileSystemEntity> testTypes = [];
  if (testTypesDir.existsSync()) {
    testTypes = testTypesDir.listSync();
  }
  int generatedCount = 0;
  for (int i = 0; i < testTypes.length; i++) {
    File testType = testTypes[i] as File;
    bool isFailTest = isFail(testType);
    String testTypeText = testType.readAsStringSync();
    List<String> testTypeTextStrings = testTypeText.split("\n");
    bool hasMainFunc = hasMain(testTypeTextStrings);
    bool isGenericFunctionType = findIsGenericFunctionType(testTypeTextStrings);
    Map<String, String> replacement = findReplacements(testTypeTextStrings);
    if (replacement.length == 0) {
      continue;
    }
    if (testsType != "static") {
      testTypeTextStrings = addImport(testTypeTextStrings, isFailTest);
    }
    for (int j = 0; j < testCases.length; j++) {
      File testCase = testCases[j] as File;
      if (isFailTest) {
        if (!isFail(testCase)) {
          continue;
        }
      } else {
        if (isFail(testCase)) {
          continue;
        }
      }
      String testCaseText = testCase.readAsStringSync();
      testCaseText = removeNotGenericFunctionTypePart(isGenericFunctionType,
          testCaseText);
      testCaseText = replace(testCaseText, replacement);
      String testTypeText = removeReplacements(testTypeTextStrings);

      String header = getGeneratedTestHeader(testTypeText, testCaseText,
          getGeneratedFileComment(testType, testCase));
      testCaseText = removeHeader(testCaseText);
      testTypeText = removeHeader(testTypeText);
      String generatedTestText = "";
      if (hasMainFunc) {
        String beforeMain = getBeforeMain(testCaseText);
        String mainContent = getMainContent(testCaseText);
        generatedTestText = header + testTypeText.replaceFirst(
            new RegExp(r"\/\/#\s*<!--\s*Global\s*variables\s*&\s*classes\s*definition\s*-->"),
            beforeMain).replaceFirst(new RegExp(r"\/\/#\s*<!--\s*Test\s*body\s*-->"), mainContent);
      } else {
        generatedTestText = header + removeHeader(testTypeText) + testCaseText;
      }
      File generatedTest = getGeneratedTestFile(testType, testCase, outputDir);
      generatedTest.writeAsStringSync(generatedTestText);
      generatedCount++;
    }
  }
  print("$generatedCount $testsType tests generated successfully");
}