modif comtabilite
This commit is contained in:
+22
@@ -0,0 +1,22 @@
|
||||
import sys
|
||||
import locale
|
||||
|
||||
reload(sys)
|
||||
|
||||
def main():
|
||||
encoding = locale.getdefaultlocale()[1]
|
||||
if not encoding:
|
||||
return False
|
||||
|
||||
sys.setdefaultencoding(encoding)
|
||||
textmap = {
|
||||
'cp936': u'\u4e2d\u6587',
|
||||
'cp1252': u'Lat\u012Bna',
|
||||
'cp932': u'\u306b\u307b\u3093\u3054'
|
||||
}
|
||||
if textmap.has_key(encoding):
|
||||
print textmap[encoding]
|
||||
return True
|
||||
|
||||
if __name__ == '__main__':
|
||||
print main()
|
||||
+138
@@ -0,0 +1,138 @@
|
||||
'use strict'
|
||||
|
||||
var fs = require('graceful-fs')
|
||||
var child_process = require('child_process')
|
||||
|
||||
if (!String.prototype.startsWith) {
|
||||
String.prototype.startsWith = function(search, pos) {
|
||||
return this.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search
|
||||
}
|
||||
}
|
||||
|
||||
function processExecSync(file, args, options) {
|
||||
var child, error, timeout, tmpdir, command, quote
|
||||
command = makeCommand(file, args)
|
||||
|
||||
/*
|
||||
this function emulates child_process.execSync for legacy node <= 0.10.x
|
||||
derived from https://github.com/gvarsanyi/sync-exec/blob/master/js/sync-exec.js
|
||||
*/
|
||||
|
||||
options = options || {}
|
||||
// init timeout
|
||||
timeout = Date.now() + options.timeout
|
||||
// init tmpdir
|
||||
var os_temp_base = '/tmp'
|
||||
var os = determine_os()
|
||||
os_temp_base = '/tmp'
|
||||
|
||||
if (process.env.TMP) {
|
||||
os_temp_base = process.env.TMP
|
||||
}
|
||||
|
||||
if (os_temp_base[os_temp_base.length - 1] !== '/') {
|
||||
os_temp_base += '/'
|
||||
}
|
||||
|
||||
tmpdir = os_temp_base + 'processExecSync.' + Date.now() + Math.random()
|
||||
fs.mkdirSync(tmpdir)
|
||||
|
||||
// init command
|
||||
if (os === 'linux') {
|
||||
command = '(' + command + ' > ' + tmpdir + '/stdout 2> ' + tmpdir +
|
||||
'/stderr); echo $? > ' + tmpdir + '/status'
|
||||
} else {
|
||||
command = '(' + command + ' > ' + tmpdir + '/stdout 2> ' + tmpdir +
|
||||
'/stderr) | echo %errorlevel% > ' + tmpdir + '/status | exit'
|
||||
}
|
||||
|
||||
// init child
|
||||
child = child_process.exec(command, options)
|
||||
|
||||
var maxTry = 100000 // increases the test time by 6 seconds on win-2016-node-0.10
|
||||
var tryCount = 0
|
||||
while (tryCount < maxTry) {
|
||||
try {
|
||||
var x = fs.readFileSync(tmpdir + '/status')
|
||||
if (x.toString() === '0') {
|
||||
break
|
||||
}
|
||||
} catch (ignore) {}
|
||||
tryCount++
|
||||
if (Date.now() > timeout) {
|
||||
error = child
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
['stdout', 'stderr', 'status'].forEach(function (file) {
|
||||
child[file] = fs.readFileSync(tmpdir + '/' + file, options.encoding)
|
||||
setTimeout(unlinkFile, 500, tmpdir + '/' + file)
|
||||
})
|
||||
|
||||
child.status = Number(child.status)
|
||||
if (child.status !== 0) {
|
||||
error = child
|
||||
}
|
||||
|
||||
try {
|
||||
fs.rmdirSync(tmpdir)
|
||||
} catch (ignore) {}
|
||||
if (error) {
|
||||
throw error
|
||||
}
|
||||
return child.stdout
|
||||
}
|
||||
|
||||
function makeCommand(file, args) {
|
||||
var command, quote
|
||||
command = file
|
||||
if (args.length > 0) {
|
||||
for(var i in args) {
|
||||
command = command + ' '
|
||||
if (args[i][0] === '-') {
|
||||
command = command + args[i]
|
||||
} else {
|
||||
if (!quote) {
|
||||
command = command + '\"'
|
||||
quote = true
|
||||
}
|
||||
command = command + args[i]
|
||||
if (quote) {
|
||||
if (args.length === (parseInt(i) + 1)) {
|
||||
command = command + '\"'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return command
|
||||
}
|
||||
|
||||
function determine_os() {
|
||||
var os = ''
|
||||
var tmpVar = ''
|
||||
if (process.env.OSTYPE) {
|
||||
tmpVar = process.env.OSTYPE
|
||||
} else if (process.env.OS) {
|
||||
tmpVar = process.env.OS
|
||||
} else {
|
||||
//default is linux
|
||||
tmpVar = 'linux'
|
||||
}
|
||||
|
||||
if (tmpVar.startsWith('linux')) {
|
||||
os = 'linux'
|
||||
}
|
||||
if (tmpVar.startsWith('win')) {
|
||||
os = 'win'
|
||||
}
|
||||
|
||||
return os
|
||||
}
|
||||
|
||||
function unlinkFile(file) {
|
||||
fs.unlinkSync(file)
|
||||
}
|
||||
|
||||
module.exports = processExecSync
|
||||
+92
-7
@@ -1,10 +1,35 @@
|
||||
'use strict'
|
||||
|
||||
var test = require('tape')
|
||||
var execFile = require('child_process').execFile
|
||||
var path = require('path')
|
||||
var fs = require('graceful-fs')
|
||||
var child_process = require('child_process')
|
||||
var addonPath = path.resolve(__dirname, 'node_modules', 'hello_world')
|
||||
var nodeGyp = path.resolve(__dirname, '..', 'bin', 'node-gyp.js')
|
||||
var execFileSync = child_process.execFileSync || require('./process-exec-sync')
|
||||
var execFile = child_process.execFile
|
||||
|
||||
function runHello() {
|
||||
var testCode = "console.log(require('hello_world').hello())"
|
||||
return execFileSync(process.execPath, ['-e', testCode], { cwd: __dirname }).toString()
|
||||
}
|
||||
|
||||
function getEncoding() {
|
||||
var code = 'import locale;print locale.getdefaultlocale()[1]'
|
||||
return execFileSync('python', ['-c', code]).toString().trim()
|
||||
}
|
||||
|
||||
function checkCharmapValid() {
|
||||
var data
|
||||
try {
|
||||
data = execFileSync('python', ['fixtures/test-charmap.py'],
|
||||
{ cwd: __dirname })
|
||||
} catch (err) {
|
||||
return false
|
||||
}
|
||||
var lines = data.toString().trim().split('\n')
|
||||
return lines.pop() === 'True'
|
||||
}
|
||||
|
||||
test('build simple addon', function (t) {
|
||||
t.plan(3)
|
||||
@@ -16,12 +41,72 @@ test('build simple addon', function (t) {
|
||||
var lastLine = logLines[logLines.length-1]
|
||||
t.strictEqual(err, null)
|
||||
t.strictEqual(lastLine, 'gyp info ok', 'should end in ok')
|
||||
try {
|
||||
var binding = require('hello_world')
|
||||
t.strictEqual(binding.hello(), 'world')
|
||||
} catch (error) {
|
||||
t.error(error, 'load module')
|
||||
}
|
||||
t.strictEqual(runHello().trim(), 'world')
|
||||
})
|
||||
proc.stdout.setEncoding('utf-8')
|
||||
proc.stderr.setEncoding('utf-8')
|
||||
})
|
||||
|
||||
test('build simple addon in path with non-ascii characters', function (t) {
|
||||
t.plan(1)
|
||||
|
||||
if (!checkCharmapValid()) {
|
||||
return t.skip('python console app can\'t encode non-ascii character.')
|
||||
}
|
||||
|
||||
var testDirNames = {
|
||||
'cp936': '文件夹',
|
||||
'cp1252': 'Latīna',
|
||||
'cp932': 'フォルダ'
|
||||
}
|
||||
// Select non-ascii characters by current encoding
|
||||
var testDirName = testDirNames[getEncoding()]
|
||||
// If encoding is UTF-8 or other then no need to test
|
||||
if (!testDirName) {
|
||||
return t.skip('no need to test')
|
||||
}
|
||||
|
||||
t.plan(3)
|
||||
|
||||
var data, configPath = path.join(addonPath, 'build', 'config.gypi')
|
||||
try {
|
||||
data = fs.readFileSync(configPath, 'utf8')
|
||||
} catch (err) {
|
||||
t.error(err)
|
||||
return
|
||||
}
|
||||
var config = JSON.parse(data.replace(/\#.+\n/, ''))
|
||||
var nodeDir = config.variables.nodedir
|
||||
var testNodeDir = path.join(addonPath, testDirName)
|
||||
// Create symbol link to path with non-ascii characters
|
||||
try {
|
||||
fs.symlinkSync(nodeDir, testNodeDir, 'dir')
|
||||
} catch (err) {
|
||||
switch (err.code) {
|
||||
case 'EEXIST': break
|
||||
case 'EPERM':
|
||||
t.error(err, 'Please try to running console as an administrator')
|
||||
return
|
||||
default:
|
||||
t.error(err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
var cmd = [nodeGyp, 'rebuild', '-C', addonPath,
|
||||
'--loglevel=verbose', '-nodedir=' + testNodeDir]
|
||||
var proc = execFile(process.execPath, cmd, function (err, stdout, stderr) {
|
||||
try {
|
||||
fs.unlink(testNodeDir)
|
||||
} catch (err) {
|
||||
t.error(err)
|
||||
}
|
||||
|
||||
var logLines = stderr.toString().trim().split(/\r?\n/)
|
||||
var lastLine = logLines[logLines.length-1]
|
||||
t.strictEqual(err, null)
|
||||
t.strictEqual(lastLine, 'gyp info ok', 'should end in ok')
|
||||
t.strictEqual(runHello().trim(), 'world')
|
||||
})
|
||||
proc.stdout.setEncoding('utf-8')
|
||||
proc.stderr.setEncoding('utf-8')
|
||||
|
||||
+10
-10
@@ -62,7 +62,7 @@ test('find python - python', function (t) {
|
||||
}
|
||||
f.execFile = function(program, args, opts, cb) {
|
||||
t.strictEqual(program, 'python')
|
||||
t.ok(/import platform/.test(args[1]))
|
||||
t.ok(/import sys/.test(args[1]))
|
||||
cb(null, '2.7.0')
|
||||
}
|
||||
f.checkPython()
|
||||
@@ -83,7 +83,7 @@ test('find python - python too old', function (t) {
|
||||
}
|
||||
f.execFile = function(program, args, opts, cb) {
|
||||
t.strictEqual(program, 'python')
|
||||
t.ok(/import platform/.test(args[1]))
|
||||
t.ok(/import sys/.test(args[1]))
|
||||
cb(null, '2.3.4')
|
||||
}
|
||||
f.checkPython()
|
||||
@@ -103,7 +103,7 @@ test('find python - python too new', function (t) {
|
||||
}
|
||||
f.execFile = function(program, args, opts, cb) {
|
||||
t.strictEqual(program, 'python')
|
||||
t.ok(/import platform/.test(args[1]))
|
||||
t.ok(/import sys/.test(args[1]))
|
||||
cb(null, '3.0.0')
|
||||
}
|
||||
f.checkPython()
|
||||
@@ -142,7 +142,7 @@ test('find python - no python2', function (t) {
|
||||
}
|
||||
f.execFile = function(program, args, opts, cb) {
|
||||
t.strictEqual(program, 'python')
|
||||
t.ok(/import platform/.test(args[1]))
|
||||
t.ok(/import sys/.test(args[1]))
|
||||
cb(null, '2.7.0')
|
||||
}
|
||||
f.checkPython()
|
||||
@@ -189,7 +189,7 @@ test('find python - no python, use python launcher', function (t) {
|
||||
f.execFile = function(program, args, opts, cb) {
|
||||
f.execFile = function(program, args, opts, cb) {
|
||||
t.strictEqual(program, 'Z:\\snake.exe')
|
||||
t.ok(/import platform/.test(args[1]))
|
||||
t.ok(/import sys/.test(args[1]))
|
||||
cb(null, '2.7.0')
|
||||
}
|
||||
t.strictEqual(program, 'py.exe')
|
||||
@@ -220,7 +220,7 @@ test('find python - python 3, use python launcher', function (t) {
|
||||
f.execFile = function(program, args, opts, cb) {
|
||||
f.execFile = function(program, args, opts, cb) {
|
||||
t.strictEqual(program, 'Z:\\snake.exe')
|
||||
t.ok(/import platform/.test(args[1]))
|
||||
t.ok(/import sys/.test(args[1]))
|
||||
cb(null, '2.7.0')
|
||||
}
|
||||
t.strictEqual(program, 'py.exe')
|
||||
@@ -229,7 +229,7 @@ test('find python - python 3, use python launcher', function (t) {
|
||||
cb(null, 'Z:\\snake.exe')
|
||||
}
|
||||
t.strictEqual(program, 'python')
|
||||
t.ok(/import platform/.test(args[1]))
|
||||
t.ok(/import sys/.test(args[1]))
|
||||
cb(null, '3.0.0')
|
||||
}
|
||||
f.checkPython()
|
||||
@@ -257,7 +257,7 @@ test('find python - python 3, use python launcher, python 2 too old',
|
||||
f.execFile = function(program, args, opts, cb) {
|
||||
f.execFile = function(program, args, opts, cb) {
|
||||
t.strictEqual(program, 'Z:\\snake.exe')
|
||||
t.ok(/import platform/.test(args[1]))
|
||||
t.ok(/import sys/.test(args[1]))
|
||||
cb(null, '2.3.4')
|
||||
}
|
||||
t.strictEqual(program, 'py.exe')
|
||||
@@ -266,7 +266,7 @@ test('find python - python 3, use python launcher, python 2 too old',
|
||||
cb(null, 'Z:\\snake.exe')
|
||||
}
|
||||
t.strictEqual(program, 'python')
|
||||
t.ok(/import platform/.test(args[1]))
|
||||
t.ok(/import sys/.test(args[1]))
|
||||
cb(null, '3.0.0')
|
||||
}
|
||||
f.checkPython()
|
||||
@@ -291,7 +291,7 @@ test('find python - no python, no python launcher, good guess', function (t) {
|
||||
f.execFile = function(program, args, opts, cb) {
|
||||
f.execFile = function(program, args, opts, cb) {
|
||||
t.ok(re.test(program))
|
||||
t.ok(/import platform/.test(args[1]))
|
||||
t.ok(/import sys/.test(args[1]))
|
||||
cb(null, '2.7.0')
|
||||
}
|
||||
t.strictEqual(program, 'py.exe')
|
||||
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
'use strict'
|
||||
|
||||
var test = require('tape')
|
||||
var install = require('../lib/install').test.install
|
||||
|
||||
test('EACCES retry once', function (t) {
|
||||
t.plan(3)
|
||||
|
||||
var fs = {}
|
||||
fs.stat = function (path, cb) {
|
||||
var err = new Error()
|
||||
err.code = 'EACCES'
|
||||
cb(err)
|
||||
t.ok(true);
|
||||
}
|
||||
|
||||
|
||||
var gyp = {}
|
||||
gyp.devDir = __dirname
|
||||
gyp.opts = {}
|
||||
gyp.opts.ensure = true
|
||||
gyp.commands = {}
|
||||
gyp.commands.install = function (argv, cb) {
|
||||
install(fs, gyp, argv, cb)
|
||||
}
|
||||
gyp.commands.remove = function (argv, cb) {
|
||||
cb()
|
||||
}
|
||||
|
||||
gyp.commands.install([], function (err) {
|
||||
t.ok(true)
|
||||
if (/"pre" versions of node cannot be installed/.test(err.message)) {
|
||||
t.ok(true)
|
||||
t.ok(true)
|
||||
}
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user