Blame view

node_modules/node-gyp/test/test-configure-python.js 1.94 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
  'use strict'
  
  var test = require('tape')
  var path = require('path')
  var gyp = require('../lib/node-gyp')
  var requireInject = require('require-inject')
  var configure = requireInject('../lib/configure', {
    'graceful-fs': {
      'openSync': function (file, mode) { return 0; },
      'closeSync': function (fd) { },
      'writeFile': function (file, data, cb) { cb() },
      'stat': function (file, cb) { cb(null, {}) }
    }
  })
  
  var EXPECTED_PYPATH = path.join(__dirname, '..', 'gyp', 'pylib')
  var SEPARATOR = process.platform == 'win32' ? ';' : ':'
  var SPAWN_RESULT = { on: function () { } }
  
  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)
  })