UNPKG

singularci

Version:

SingularCI is a DSL transpiler used to generate CI/CD configuration files for existing CI platforms

96 lines 4.53 kB
"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