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");
}