[READ-ONLY] Mirror of https://github.com/FoxxMD/komodo-import. Import existing compose stacks into Komodo foxxmd.github.io/komodo-import
compose docker import komodo toml
0

Configure Feed

Select the types of activity you want to include in your feed.

komodo-import / tests / stackCommon.test.ts
4.9 kB 120 lines
1import { describe, it } from 'mocha'; 2import chai, { expect } from 'chai'; 3import { detectGitRepo, parseGitStatus } from '../src/common/utils/git.js'; 4import { stripIndents } from 'common-tags'; 5import withLocalTmpDir from 'with-local-tmp-dir'; 6import { mkdir, writeFile, chmod, constants } from 'node:fs/promises'; 7import path from "path"; 8import { buildGitStack, BuildGitStackOptions } from '../src/builders/stack/gitStack.js'; 9import { loggerTest } from "@foxxmd/logging"; 10import chaiAsPromised from 'chai-as-promised'; 11import git from 'isomorphic-git'; 12import fs from 'fs'; 13import { execa, Options } from 'execa'; 14import { DEFAULT_KOMODO_ENV_NAME, parseEnvConfig } from '../src/builders/stack/stackUtils.js'; 15 16chai.use(chaiAsPromised); 17 18const DEFAULT_SERVER = 'test-server'; 19 20const defaultGitStandaloneConfig: BuildGitStackOptions = { 21 server: DEFAULT_SERVER, 22 logger: loggerTest 23} 24 25describe('#StackCommon', function () { 26 27 describe('#EnvironmentParsing', function () { 28 29 it(`does not include additional_env_files when no env files found`, async function () { 30 await withLocalTmpDir(async () => { 31 const dir = path.join(process.cwd(), 'test_1'); 32 33 await mkdir(dir); 34 const data = await parseEnvConfig(dir, { logger: loggerTest }); 35 36 expect(data.additional_env_files).to.be.undefined; 37 }, { unsafeCleanup: true }); 38 }); 39 40 it(`includes additional_env_files when env files found`, async function () { 41 await withLocalTmpDir(async () => { 42 const dir = path.join(process.cwd(), 'test_1'); 43 44 await mkdir(dir); 45 await writeFile(path.join(dir, '.env'), ''); 46 await mkdir(path.join(dir, 'nested')); 47 await writeFile(path.join(dir, 'nested', 'additional.env'), ''); 48 const data = await parseEnvConfig(dir, { logger: loggerTest }); 49 50 expect(data.additional_env_files).to.not.be.undefined; 51 expect(data.additional_env_files.length).eq(2); 52 expect(data.additional_env_files[0]).eq('.env'); 53 expect(data.additional_env_files[1]).eq('nested/additional.env'); 54 }, { unsafeCleanup: true }); 55 }); 56 57 it(`uses pathPrefix for additional_env_files`, async function () { 58 await withLocalTmpDir(async () => { 59 const dir = path.join(process.cwd(), 'test_1'); 60 61 await mkdir(dir); 62 await writeFile(path.join(dir, '.env'), ''); 63 const data = await parseEnvConfig(dir, { logger: loggerTest, pathPrefix: '/mytest' }); 64 65 expect(data.additional_env_files).to.not.be.undefined; 66 expect(data.additional_env_files.length).eq(1); 67 expect(data.additional_env_files[0]).eq('/mytest/.env'); 68 }, { unsafeCleanup: true }); 69 }); 70 71 it(`uses komodo env name when files found includes .env`, async function () { 72 await withLocalTmpDir(async () => { 73 const dir = path.join(process.cwd(), 'test_1'); 74 75 await mkdir(dir); 76 await writeFile(path.join(dir, '.env'), ''); 77 const data = await parseEnvConfig(dir, { logger: loggerTest }); 78 79 expect(data.env_file_path).eq(DEFAULT_KOMODO_ENV_NAME) 80 }, { unsafeCleanup: true }); 81 }); 82 83 describe('When writeEnv is true', function () { 84 85 it(`writes env contents`, async function () { 86 await withLocalTmpDir(async () => { 87 const dir = path.join(process.cwd(), 'test_1'); 88 89 await mkdir(dir); 90 await writeFile(path.join(dir, '.env'), stripIndents`MY_1ENV=foo 91 MY_2ENV=bar`); 92 const data = await parseEnvConfig(dir, { logger: loggerTest, writeEnv: true }); 93 94 expect(data.env_file_path).to.be.undefined; 95 expect(data.environment).to.eq(`MY_1ENV=foo\nMY_2ENV=bar`) 96 97 }, { unsafeCleanup: true }); 98 }); 99 100 it(`writes multiple env contents`, async function () { 101 await withLocalTmpDir(async () => { 102 const dir = path.join(process.cwd(), 'test_1'); 103 104 await mkdir(dir); 105 await writeFile(path.join(dir, '.env'), stripIndents`MY_1ENV=foo 106 MY_2ENV=bar`); 107 await writeFile(path.join(dir, 'additional.env'), stripIndents`MY_3ENV=foo 108 MY_4ENV=bar`); 109 const data = await parseEnvConfig(dir, { logger: loggerTest, writeEnv: true }); 110 111 expect(data.env_file_path).to.be.undefined; 112 expect(data.environment).to.eq(`MY_3ENV=foo\nMY_4ENV=bar\nMY_1ENV=foo\nMY_2ENV=bar`) 113 114 }, { unsafeCleanup: true }); 115 }); 116 117 }); 118 119 }); 120});