import { tap, expect } from '@push.rocks/tapbundle'; import * as path from 'path'; import * as smartpath from '@push.rocks/smartpath'; process.env.NPMTS_TEST = 'true'; process.env.NPMCI_URL_CLOUDLY = 'localhost'; // set up environment process.env.CI_REPOSITORY_URL = 'https://yyyyyy:xxxxxxxx@gitlab.com/mygroup/myrepo.git'; process.env.CI_BUILD_TOKEN = 'kjlkjfiudofiufs'; // Docker process.env.NPMCI_LOGIN_DOCKER = 'docker.io|someuser|somepass'; // SSH env process.env.NPMCI_SSHKEY_1 = 'hostString|somePrivKey|##'; process.cwd = () => { return path.join(smartpath.get.dirnameFromImportMetaUrl(import.meta.url), 'assets/'); }; import type * as npmciTypes from '../ts/index.js'; const npmci = await import('../ts/index.js'); // ====== // Docker // ====== let dockerfile1: npmciTypes.Dockerfile; let dockerfile2: npmciTypes.Dockerfile; let sortableArray: npmciTypes.Dockerfile[]; tap.test('should return valid Dockerfiles', async () => { const npmciInstance = new npmci.Npmci(); await npmciInstance.start(); dockerfile1 = new npmci.Dockerfile(npmciInstance.dockerManager, { filePath: './Dockerfile', read: true, }); dockerfile2 = new npmci.Dockerfile(npmciInstance.dockerManager, { filePath: './Dockerfile_sometag1', read: true, }); expect(dockerfile1.version).toEqual('latest'); return expect(dockerfile2.version).toEqual('sometag1'); }); tap.test('should read a directory of Dockerfiles', async () => { const npmciInstance = new npmci.Npmci(); await npmciInstance.start(); return npmci.Dockerfile.readDockerfiles(npmciInstance.dockerManager).then( async (readDockerfilesArrayArg: npmciTypes.Dockerfile[]) => { sortableArray = readDockerfilesArrayArg; return expect(readDockerfilesArrayArg[1].version).toEqual('sometag1'); } ); }); tap.test('should sort an array of Dockerfiles', async () => { return npmci.Dockerfile.sortDockerfiles(sortableArray).then( async (sortedArrayArg: npmciTypes.Dockerfile[]) => { console.log(sortedArrayArg); } ); }); tap.test('should build all Dockerfiles', async () => { const npmciInstance = new npmci.Npmci(); await npmciInstance.start(); return npmciInstance.dockerManager.handleCli({ _: ['docker', 'build'], }); }); tap.test('should test all Dockerfiles', async () => { const npmciInstance = new npmci.Npmci(); await npmciInstance.start(); return npmciInstance.dockerManager.handleCli({ _: ['docker', 'test'], }); }); tap.test('should test dockerfiles', async () => { const npmciInstance = new npmci.Npmci(); await npmciInstance.start(); return npmciInstance.dockerManager.handleCli({ _: ['docker', 'test'], }); }); tap.test('should login docker daemon', async () => { const npmciInstance = new npmci.Npmci(); await npmciInstance.start(); return npmciInstance.dockerManager.handleCli({ _: ['docker', 'login'], }); }); // === // SSH // === tap.test('should prepare SSH keys', async () => { const npmciModSsh = await import('../ts/mod_ssh/index.js'); return await npmciModSsh.handleCli({ _: ['ssh', 'prepare'], }); }); // ==== // node // ==== tap.test('should install a certain version of node', async () => { const npmciInstance = new npmci.Npmci(); await npmciInstance.start(); await npmciInstance.nodejsManager.handleCli({ _: ['node', 'install', 'stable'], }); await npmciInstance.nodejsManager.handleCli({ _: ['node', 'install', 'lts'], }); await npmciInstance.nodejsManager.handleCli({ _: ['node', 'install', 'legacy'], }); }); // make sure test ends all right tap.test('reset paths', async () => { process.cwd = () => { return path.join(__dirname, '../'); }; }); tap.start();