-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
gyp: update xml string encoding conversion #1203
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,18 @@ | ||
'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') | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. question to @nodejs/node-gyp const { execFileSync, execFile } = require('child_process') Or do we test on pre ES6 versions? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I believe the CI still tests 0.10 and 0.12. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Not any more 😄 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @refack There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
var addonPath = path.resolve(__dirname, 'node_modules', 'hello_world') | ||
var nodeGyp = path.resolve(__dirname, '..', 'bin', 'node-gyp.js') | ||
var execFileSync = child_process.execFileSync | ||
var execFile = child_process.execFile | ||
|
||
function runHello() { | ||
var testCode = "console.log(require('hello_world').hello())" | ||
return execFileSync('node', ['-e', testCode], { cwd: __dirname }).toString() | ||
} | ||
|
||
test('build simple addon', function (t) { | ||
t.plan(3) | ||
|
@@ -16,12 +24,56 @@ 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') | ||
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(3) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @refack OK, this test has been able to run successfully.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 👍 |
||
|
||
var data, config, nodeDir, testNodeDir | ||
var configPath = path.join(addonPath, 'build', 'config.gypi') | ||
|
||
try { | ||
data = fs.readFileSync(configPath, 'utf8') | ||
} catch (err) { | ||
t.error(err) | ||
return | ||
} | ||
config = JSON.parse(data.replace(/\#.+\n/, '')) | ||
nodeDir = config.variables.nodedir | ||
// Create path with non-ascii characters | ||
testNodeDir = path.join(addonPath, '非英文字符') | ||
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 { | ||
var binding = require('hello_world') | ||
t.strictEqual(binding.hello(), 'world') | ||
} catch (error) { | ||
t.error(error, 'load module') | ||
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') | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should test
default_encoding and default_encoding.upper() != encoding.upper():