singularci
Version:
SingularCI is a DSL transpiler used to generate CI/CD configuration files for existing CI platforms
96 lines • 4.53 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
require("reflect-metadata");
const typedi_1 = require("typedi");
const GitHubModule_1 = require("../../src/Targets/GitHubModule");
const GitLabModule_1 = require("../../src/Targets/GitLabModule");
const Pipeline_1 = __importDefault(require("../../src/SemanticModel/Pipeline"));
const BuildDockerImage_1 = require("../../src/SemanticModel/Tasks/BuildDockerImage");
const Trigger_1 = require("../../src/SemanticModel/Trigger");
const Variables_1 = __importDefault(require("../../src/SemanticModel/Variables"));
const Targets_1 = require("../../src/SemanticModel/Targets");
const Stage_1 = __importDefault(require("../../src/SemanticModel/Stage"));
const Run_1 = __importDefault(require("../../src/SemanticModel/Tasks/Run"));
const Job_1 = __importDefault(require("../../src/SemanticModel/Job"));
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
let parser;
let expectedPipeline;
beforeAll(() => {
typedi_1.Container.import([
GitHubModule_1.GitHubConfigGenerator,
GitLabModule_1.GitLabConfigGenerator,
Pipeline_1.default,
BuildDockerImage_1.BuildDockerImageFactory,
Trigger_1.TriggerFactory
]);
setupExpectedPipeline();
});
const setupExpectedPipeline = () => {
const triggerFactory = new Trigger_1.TriggerFactory();
const variablesFactory = new Variables_1.default();
const platformTargets = new Targets_1.TargetsFactory();
const stageFactory = new Stage_1.default();
const runFactory = new Run_1.default();
const trigger = triggerFactory.createTrigger();
const variables = variablesFactory.createVariables();
const targets = platformTargets.createTargets();
targets.addTarget('GitHub');
targets.addTarget('GitLab');
trigger.addBranch('master');
trigger.addBranch('main');
trigger.addType('push');
variables.addVariable('testKey', 'testValue');
expectedPipeline = new Pipeline_1.default(trigger, targets, variables);
const environment = "ubuntu-latest";
const task1_stage1 = runFactory.createRunTask(['apt-get update -y', 'apt-get install -y nodejs', 'npm install', 'npm run lint']);
const job1_stage1 = new Job_1.default('Lint', [task1_stage1]);
const stage1 = stageFactory.createStage("lintstage", [job1_stage1], [], environment);
const task1_stage2 = runFactory.createRunTask(['echo build done']);
const job1_stage2 = new Job_1.default("build", [task1_stage2]);
const needs = "lintstage";
const stage2 = stageFactory.createStage("buildstage", [job1_stage2], [needs], environment);
expectedPipeline.addStage(stage1);
expectedPipeline.addStage(stage2);
};
test('Comparing Pipeline to expected Pipeline', () => {
typedi_1.Container.set('dslparser.inputFileName', './test/Parser/testfile.yml');
parser = typedi_1.Container.get('dslparser');
const resultPipeline = parser.parse();
expect(resultPipeline).toEqual(expectedPipeline);
});
test('Attempting to parse an input file without the triggers key throws an error', () => {
typedi_1.Container.set('dslparser.inputFileName', './test/Parser/testfile_missing_triggers.yml');
parser = typedi_1.Container.get('dslparser');
expect(() => {
parser.parse();
}).toThrow();
});
test('Attempting to parse an input file without the targets key throws an error', () => {
typedi_1.Container.set('dslparser.inputFileName', './test/Parser/testfile_missing_targets.yml');
parser = typedi_1.Container.get('dslparser');
expect(() => {
parser.parse();
}).toThrow();
});
test('Attempting to parse an input file without the pipeline key throws an error', () => {
typedi_1.Container.set('dslparser.inputFileName', './test/Parser/testfile_missing_pipeline.yml');
parser = typedi_1.Container.get('dslparser');
expect(() => {
parser.parse();
}).toThrow();
});
afterEach(() => {
typedi_1.Container.reset();
});
afterAll(() => {
setTimeout(() => {
if (fs_1.default.existsSync(path_1.default.join(process.cwd(), ".singularci-copy.yml"))) {
fs_1.default.rmSync(path_1.default.join(process.cwd(), ".singularci-copy.yml"));
}
}, 100);
});
//# sourceMappingURL=DSLParser.test.js.map