1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- var assert = require('assert');
- var fs = require('fs');
- var sudo = require('./');
- var exec = require('child_process').exec;
-
- function kill(end) {
- if (process.platform === 'win32') return end();
- exec('sudo -k', end);
- }
-
- function icns() {
- if (process.platform !== 'darwin') return undefined;
- var path = '/Applications/Electron.app/Contents/Resources/Electron.icns';
- try {
- fs.statSync(path);
- return path;
- } catch (error) {}
- return undefined;
- }
-
- kill(
- function() {
- var options = {
- env: { 'SUDO_PROMPT_TEST_ENV': 'hello world' },
- icns: icns(),
- name: 'Electron'
- };
- if (process.platform === 'win32') {
- var command = 'echo %SUDO_PROMPT_TEST_ENV%';
- var expected = 'hello world\r\n';
- } else {
- // We use double quotes to tell echo to preserve internal space:
- var command = 'echo "$SUDO_PROMPT_TEST_ENV"';
- var expected = 'hello world\n';
- }
- console.log(
- 'sudo.exec(' +
- JSON.stringify(command) + ', ' +
- JSON.stringify(options) +
- ')'
- );
- sudo.exec(command, options,
- function(error, stdout, stderr) {
- console.log('error:', error);
- console.log('stdout: ' + JSON.stringify(stdout));
- console.log('stderr: ' + JSON.stringify(stderr));
- assert(error === undefined || typeof error === 'object');
- assert(stdout === undefined || typeof stdout === 'string');
- assert(stderr === undefined || typeof stderr === 'string');
- kill(
- function() {
- if (error) throw error;
- if (stdout !== expected) {
- throw new Error('stdout != ' + JSON.stringify(expected));
- }
- if (stderr !== '') {
- throw new Error('stderr != ""');
- }
- console.log('OK');
- }
- );
- }
- );
- }
- );
|