export async function expandTestPreset()

in src/preset.ts [1281:1371]


export async function expandTestPreset(folder: string,
    name: string,
    workspaceFolder: string,
    sourceDir: string,
    preferredGeneratorName: string | undefined,
    allowUserPreset: boolean = false,
    configurePreset?: string): Promise<TestPreset | null> {
    const refs = referencedTestPresets.get(folder);
    if (!refs) {
        referencedTestPresets.set(folder, new Set());
    } else {
        refs.clear();
    }

    const preset = await expandTestPresetImpl(folder, name, workspaceFolder, sourceDir, preferredGeneratorName, allowUserPreset, configurePreset);
    if (!preset) {
        return null;
    }

    const expandedPreset: TestPreset = { name };
    const expansionOpts: ExpansionOptions = await getExpansionOptions(folder, workspaceFolder, sourceDir, preset);

    // Expand environment vars first since other fields may refer to them
    if (preset.environment) {
        expandedPreset.environment = EnvironmentUtils.createPreserveNull();
        for (const key in preset.environment) {
            if (preset.environment[key]) {
                expandedPreset.environment[key] = await expandString(preset.environment[key]!, expansionOpts);
            }
        }
    }

    expansionOpts.envOverride = expandedPreset.environment;

    // Expand other fields
    if (preset.overwriteConfigurationFile) {
        expandedPreset.overwriteConfigurationFile = [];
        for (let index = 0; index < preset.overwriteConfigurationFile.length; index++) {
            expandedPreset.overwriteConfigurationFile[index] = await expandString(preset.overwriteConfigurationFile[index], expansionOpts);
        }
    }
    if (preset.output?.outputLogFile) {
        expandedPreset.output = { outputLogFile: util.lightNormalizePath(await expandString(preset.output.outputLogFile, expansionOpts)) };
        merge(expandedPreset.output, preset.output);
    }
    if (preset.filter) {
        expandedPreset.filter = {};
        if (preset.filter.include) {
            expandedPreset.filter.include = {};
            if (preset.filter.include.name) {
                expandedPreset.filter.include.name = await expandString(preset.filter.include.name, expansionOpts);
            }
            if (util.isString(preset.filter.include.index)) {
                expandedPreset.filter.include.index = await expandString(preset.filter.include.index, expansionOpts);
            }
            merge(expandedPreset.filter.include, preset.filter.include);
        }
        if (preset.filter.exclude) {
            expandedPreset.filter.exclude = {};
            if (preset.filter.exclude.label) {
                expandedPreset.filter.exclude.label = await expandString(preset.filter.exclude.label, expansionOpts);
            }
            if (preset.filter.exclude.name) {
                expandedPreset.filter.exclude.name = await expandString(preset.filter.exclude.name, expansionOpts);
            }
            if (preset.filter.exclude.fixtures) {
                expandedPreset.filter.exclude.fixtures = {};
                if (preset.filter.exclude.fixtures.any) {
                    expandedPreset.filter.exclude.fixtures.any = await expandString(preset.filter.exclude.fixtures.any, expansionOpts);
                }
                if (preset.filter.exclude.fixtures.setup) {
                    expandedPreset.filter.exclude.fixtures.setup = await expandString(preset.filter.exclude.fixtures.setup, expansionOpts);
                }
                if (preset.filter.exclude.fixtures.cleanup) {
                    expandedPreset.filter.exclude.fixtures.cleanup = await expandString(preset.filter.exclude.fixtures.cleanup, expansionOpts);
                }
                merge(expandedPreset.filter.exclude.fixtures, preset.filter.exclude.fixtures);
            }
            merge(expandedPreset.filter.exclude, preset.filter.exclude);
        }
        merge(expandedPreset.filter, preset.filter);
    }
    if (preset.execution?.resourceSpecFile) {
        expandedPreset.execution = { resourceSpecFile: util.lightNormalizePath(await expandString(preset.execution.resourceSpecFile, expansionOpts)) };
        merge(expandedPreset.execution, preset.execution);
    }

    merge(expandedPreset, preset);

    return expandedPreset;
}