Parse reusable workflows up to a depth of 1
This commit is contained in:
@@ -3,6 +3,8 @@ import * as path from "path";
|
||||
import * as YAML from "yaml";
|
||||
import {convertWorkflowTemplate} from "./model/convert";
|
||||
import {TraceWriter} from "./templates/trace-writer";
|
||||
import {File} from "./workflows/file";
|
||||
import {FileProvider} from "./workflows/file-provider";
|
||||
import {parseWorkflow} from "./workflows/workflow-parser";
|
||||
|
||||
interface TestOptions {
|
||||
@@ -41,17 +43,34 @@ describe("x-lang tests", () => {
|
||||
const testOptions: TestOptions = YAML.parse(testDocs[0]);
|
||||
const unsupportedTest = contains(testOptions.skip, "TypeScript");
|
||||
|
||||
const test = () => {
|
||||
let testFileName = ".github/workflows" + fileName.substring(fileName.lastIndexOf("/"));
|
||||
let testInput = testDocs[1];
|
||||
let expectedTemplate = testDocs[2].trim();
|
||||
// TODO: when reusable workflows are implemented, implement correctly
|
||||
const test = async () => {
|
||||
const testFileName = ".github/workflows" + fileName.substring(fileName.lastIndexOf("/"));
|
||||
const testInput = testDocs[1];
|
||||
const expectedTemplate = testDocs[testDocs.length - 1].trim();
|
||||
|
||||
// For reusable workflow tests, additional workflows are passed in as pairs of
|
||||
// file names and file contents
|
||||
const reusableWorkflows: Record<string, File> = {};
|
||||
if (fileName.indexOf("reusable") !== -1) {
|
||||
testFileName = testDocs[1];
|
||||
testInput = testDocs[2];
|
||||
expectedTemplate = testDocs[3].trim();
|
||||
for (let i = 2; i < testDocs.length - 1; i = i + 2) {
|
||||
reusableWorkflows[testDocs[i]] = {
|
||||
name: testDocs[i],
|
||||
content: testDocs[i + 1]
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
const testFileProvider: FileProvider = {
|
||||
getFileContent: async (fileName: string) => {
|
||||
const file = reusableWorkflows[fileName];
|
||||
if (file) {
|
||||
return file;
|
||||
}
|
||||
|
||||
throw new Error("File not found: " + fileName);
|
||||
}
|
||||
};
|
||||
|
||||
const parseResult = parseWorkflow(
|
||||
{
|
||||
name: testFileName,
|
||||
@@ -62,7 +81,15 @@ describe("x-lang tests", () => {
|
||||
|
||||
expect(parseResult.value).not.toBeUndefined();
|
||||
|
||||
const workflowTemplate = convertWorkflowTemplate(parseResult.context, parseResult.value!);
|
||||
const workflowTemplate = await convertWorkflowTemplate(
|
||||
parseResult.context,
|
||||
parseResult.value!,
|
||||
undefined,
|
||||
testFileProvider,
|
||||
{
|
||||
fetchReusableWorkflowDepth: 1
|
||||
}
|
||||
);
|
||||
|
||||
// Unless this tests is only used by TypeScript, remove the events for now.
|
||||
// TODO: Remove this once we parse events everywhere
|
||||
|
||||
Reference in New Issue
Block a user