UNPKG

neft

Version:

Universal Platform

82 lines (68 loc) 2.6 kB
'use strict' fs = require 'fs' testsFile = require '../cli/testsFile' config = require '../cli/config' childProcess = require 'child_process' pathUtils = require 'path' nodeEnv = require './node' nvmEnv = require './nvm' {log} = Neft TARGET = 'npm' PROCESS_OPTIONS = silent: true PACKAGE_FILENAME = do -> packageFile = require fs.realpathSync './package.json' "#{packageFile.name}-#{packageFile.version}.tgz" getInitPath = -> pathUtils.join __dirname, './local/initFile.js' buildProject = (logsReader, callback) -> logsReader.log "creating npm package" childProcess.exec 'npm pack', (err) -> if err return callback err logsReader.log "npm package created" callback null installProjectOnNode = (env, logsReader, callback) -> logsReader.log "installing npm package" cmd = "npm install #{PACKAGE_FILENAME}" if env.global cmd += " -g" childProcess.exec cmd, (err, stdout, stderr) -> log.error stderr log stdout fs.unlinkSync PACKAGE_FILENAME logsReader.log "npm package installed" callback null installProjectOnNvm = (env, logsReader, callback) -> logsReader.log "installing npm package on nvm" cmd = "npm install #{PACKAGE_FILENAME}" if env.global cmd += " -g" nvmEnv.execCommand env.nodeVersion, cmd, null, (err) -> fs.unlinkSync PACKAGE_FILENAME logsReader.log "npm package on nvm installed" callback null runTestsInNodeProcess = (env, logsReader, callback) -> logsReader.log 'running npm tests' nodeEnv.execFile getInitPath(), logsReader, (err) -> logsReader.log 'npm tests terminated' callback err runTestsInNvmProcess = (env, logsReader, callback) -> {nodeVersion} = env log.info "running npm tests on nvm using node #{nodeVersion}" nvmEnv.execCommand nodeVersion, "node #{getInitPath()}", logsReader, (err) -> log.info "npm tests on nvm using node #{nodeVersion} terminated" callback err exports.getName = (env) -> "NVM tests on #{env.nodeVersion} Node" exports.run = (env, logsReader, callback) -> useNvm = env.nodeVersion isnt 'current' installProject = if useNvm then installProjectOnNvm else installProjectOnNode runTestsInProcess = if useNvm then runTestsInNvmProcess else runTestsInNodeProcess buildProject logsReader, (err) -> if err return callback err installProject env, logsReader, (err) -> if err return callback err runTestsInProcess env, logsReader, callback