test-configure-python.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. 'use strict'
  2. const test = require('tap').test
  3. const path = require('path')
  4. const devDir = require('./common').devDir()
  5. const gyp = require('../lib/node-gyp')
  6. const requireInject = require('require-inject')
  7. const configure = requireInject('../lib/configure', {
  8. 'graceful-fs': {
  9. openSync: function () { return 0 },
  10. closeSync: function () { },
  11. writeFile: function (file, data, cb) { cb() },
  12. stat: function (file, cb) { cb(null, {}) }
  13. }
  14. })
  15. const EXPECTED_PYPATH = path.join(__dirname, '..', 'gyp', 'pylib')
  16. const SEPARATOR = process.platform === 'win32' ? ';' : ':'
  17. const SPAWN_RESULT = { on: function () { } }
  18. require('npmlog').level = 'warn'
  19. test('configure PYTHONPATH with no existing env', function (t) {
  20. t.plan(1)
  21. delete process.env.PYTHONPATH
  22. var prog = gyp()
  23. prog.parseArgv([])
  24. prog.spawn = function () {
  25. t.equal(process.env.PYTHONPATH, EXPECTED_PYPATH)
  26. return SPAWN_RESULT
  27. }
  28. prog.devDir = devDir
  29. configure(prog, [], t.fail)
  30. })
  31. test('configure PYTHONPATH with existing env of one dir', function (t) {
  32. t.plan(2)
  33. var existingPath = path.join('a', 'b')
  34. process.env.PYTHONPATH = existingPath
  35. var prog = gyp()
  36. prog.parseArgv([])
  37. prog.spawn = function () {
  38. t.equal(process.env.PYTHONPATH, [EXPECTED_PYPATH, existingPath].join(SEPARATOR))
  39. var dirs = process.env.PYTHONPATH.split(SEPARATOR)
  40. t.deepEqual(dirs, [EXPECTED_PYPATH, existingPath])
  41. return SPAWN_RESULT
  42. }
  43. prog.devDir = devDir
  44. configure(prog, [], t.fail)
  45. })
  46. test('configure PYTHONPATH with existing env of multiple dirs', function (t) {
  47. t.plan(2)
  48. var pythonDir1 = path.join('a', 'b')
  49. var pythonDir2 = path.join('b', 'c')
  50. var existingPath = [pythonDir1, pythonDir2].join(SEPARATOR)
  51. process.env.PYTHONPATH = existingPath
  52. var prog = gyp()
  53. prog.parseArgv([])
  54. prog.spawn = function () {
  55. t.equal(process.env.PYTHONPATH, [EXPECTED_PYPATH, existingPath].join(SEPARATOR))
  56. var dirs = process.env.PYTHONPATH.split(SEPARATOR)
  57. t.deepEqual(dirs, [EXPECTED_PYPATH, pythonDir1, pythonDir2])
  58. return SPAWN_RESULT
  59. }
  60. prog.devDir = devDir
  61. configure(prog, [], t.fail)
  62. })