diff options
author | Leonid Logvinov <logvinov.leon@gmail.com> | 2018-03-26 19:00:56 +0800 |
---|---|---|
committer | Leonid Logvinov <logvinov.leon@gmail.com> | 2018-03-27 23:47:04 +0800 |
commit | a2e4aaa9a394c359b9bf817ff154572eb33d4fb5 (patch) | |
tree | f8a034c2fcec9a83d9f83ed50dfd220b3965e33e /packages/monorepo-scripts/src/test_installation.ts | |
parent | 26e9696ddb004759a4a7c5f4a8901dc3255a70f9 (diff) | |
download | dexon-sol-tools-a2e4aaa9a394c359b9bf817ff154572eb33d4fb5.tar dexon-sol-tools-a2e4aaa9a394c359b9bf817ff154572eb33d4fb5.tar.gz dexon-sol-tools-a2e4aaa9a394c359b9bf817ff154572eb33d4fb5.tar.bz2 dexon-sol-tools-a2e4aaa9a394c359b9bf817ff154572eb33d4fb5.tar.lz dexon-sol-tools-a2e4aaa9a394c359b9bf817ff154572eb33d4fb5.tar.xz dexon-sol-tools-a2e4aaa9a394c359b9bf817ff154572eb33d4fb5.tar.zst dexon-sol-tools-a2e4aaa9a394c359b9bf817ff154572eb33d4fb5.zip |
Add clean-state tests
Diffstat (limited to 'packages/monorepo-scripts/src/test_installation.ts')
-rw-r--r-- | packages/monorepo-scripts/src/test_installation.ts | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/packages/monorepo-scripts/src/test_installation.ts b/packages/monorepo-scripts/src/test_installation.ts new file mode 100644 index 000000000..116b70f3a --- /dev/null +++ b/packages/monorepo-scripts/src/test_installation.ts @@ -0,0 +1,57 @@ +#!/usr/bin/env node + +import * as fs from 'fs'; +import lernaGetPackages = require('lerna-get-packages'); +import * as _ from 'lodash'; +import * as path from 'path'; +import { exec as execAsync } from 'promisify-child-process'; +import * as rimraf from 'rimraf'; + +import { utils } from './utils'; + +(async () => { + const monorepoRootPath = path.join(__dirname, '../../..'); + const lernaPackages = lernaGetPackages(monorepoRootPath); + const installablePackages = _.filter( + lernaPackages, + lernaPackage => + !lernaPackage.package.private && + !_.isUndefined(lernaPackage.package.main) && + lernaPackage.package.main.endsWith('.js'), + ); + for (const installableLernaPackage of installablePackages) { + const packagePath = installableLernaPackage.location; + const packageName = installableLernaPackage.package.name; + utils.log(`Testing ${packageName}`); + let result = await execAsync('npm pack', { cwd: packagePath }); + const packedPackageFileName = result.stdout.trim(); + const testDirectory = path.join(monorepoRootPath, '../test-env'); + fs.mkdirSync(testDirectory); + result = await execAsync('yarn init --yes', { cwd: testDirectory }); + utils.log(`Installing ${packedPackageFileName}`); + result = await execAsync(`yarn add ${packagePath}/${packedPackageFileName}`, { cwd: testDirectory }); + const indexFilePath = path.join(testDirectory, 'index.ts'); + fs.writeFileSync(indexFilePath, `import * as Package from '${packageName}'`); + const tsConfig = { + compilerOptions: { + module: 'commonjs', + target: 'es5', + lib: ['es2017', 'dom'], + declaration: true, + noImplicitReturns: true, + pretty: true, + strict: true, + }, + include: ['index.ts'], + }; + const tsconfigFilePath = path.join(testDirectory, 'tsconfig.json'); + fs.writeFileSync(tsconfigFilePath, JSON.stringify(tsConfig, null, 4)); + utils.log(`Compiling ${packageName}`); + await execAsync('../node_modules/typescript/bin/tsc', { cwd: testDirectory }); + utils.log(`Successfully compiled with ${packageName} as a dependency`); + rimraf.sync(testDirectory); + } +})().catch(err => { + utils.log(err.stdout); + process.exit(1); +}); |