'use strict' const test = require('tap').test const path = require('path') const gyp = require('../lib/node-gyp') const requireInject = require('require-inject') const configure = requireInject('../lib/configure', { 'graceful-fs': { 'openSync': function () { return 0 }, 'closeSync': function () { }, 'writeFile': function (file, data, cb) { cb() }, 'stat': function (file, cb) { cb(null, {}) } } }) const EXPECTED_PYPATH = path.join(__dirname, '..', 'gyp', 'pylib') const SEPARATOR = process.platform === 'win32' ? ';' : ':' const SPAWN_RESULT = { on: function () { } } require('npmlog').level = 'warn' test('configure PYTHONPATH with no existing env', function (t) { t.plan(1) delete process.env.PYTHONPATH var prog = gyp() prog.parseArgv([]) prog.spawn = function () { t.equal(process.env.PYTHONPATH, EXPECTED_PYPATH) return SPAWN_RESULT } configure(prog, [], t.fail) }) test('configure PYTHONPATH with existing env of one dir', function (t) { t.plan(2) var existingPath = path.join('a', 'b') process.env.PYTHONPATH = existingPath var prog = gyp() prog.parseArgv([]) prog.spawn = function () { t.equal(process.env.PYTHONPATH, [ EXPECTED_PYPATH, existingPath ].join(SEPARATOR)) var dirs = process.env.PYTHONPATH.split(SEPARATOR) t.deepEqual(dirs, [ EXPECTED_PYPATH, existingPath ]) return SPAWN_RESULT } configure(prog, [], t.fail) }) test('configure PYTHONPATH with existing env of multiple dirs', function (t) { t.plan(2) var pythonDir1 = path.join('a', 'b') var pythonDir2 = path.join('b', 'c') var existingPath = [ pythonDir1, pythonDir2 ].join(SEPARATOR) process.env.PYTHONPATH = existingPath var prog = gyp() prog.parseArgv([]) prog.spawn = function () { t.equal(process.env.PYTHONPATH, [ EXPECTED_PYPATH, existingPath ].join(SEPARATOR)) var dirs = process.env.PYTHONPATH.split(SEPARATOR) t.deepEqual(dirs, [ EXPECTED_PYPATH, pythonDir1, pythonDir2 ]) return SPAWN_RESULT } configure(prog, [], t.fail) })