fix: app.relaunch loses args when execPath specified (#35108)
This commit is contained in:
parent
34b985c556
commit
91f9436ad8
3 changed files with 15 additions and 7 deletions
|
@ -1151,7 +1151,9 @@ bool App::Relaunch(gin::Arguments* js_args) {
|
|||
|
||||
gin_helper::Dictionary options;
|
||||
if (js_args->GetNext(&options)) {
|
||||
if (options.Get("execPath", &exec_path) || options.Get("args", &args))
|
||||
bool has_exec_path = options.Get("execPath", &exec_path);
|
||||
bool has_args = options.Get("args", &args);
|
||||
if (has_exec_path || has_args)
|
||||
override_argv = true;
|
||||
}
|
||||
|
||||
|
|
|
@ -370,9 +370,11 @@ describe('app module', () => {
|
|||
server!.once('error', error => done(error));
|
||||
server!.on('connection', client => {
|
||||
client.once('data', data => {
|
||||
if (String(data) === 'false' && state === 'none') {
|
||||
if (String(data) === '--first' && state === 'none') {
|
||||
state = 'first-launch';
|
||||
} else if (String(data) === 'true' && state === 'first-launch') {
|
||||
} else if (String(data) === '--second' && state === 'first-launch') {
|
||||
state = 'second-launch';
|
||||
} else if (String(data) === '--third' && state === 'second-launch') {
|
||||
done();
|
||||
} else {
|
||||
done(`Unexpected state: "${state}", data: "${data}"`);
|
||||
|
@ -381,7 +383,7 @@ describe('app module', () => {
|
|||
});
|
||||
|
||||
const appPath = path.join(fixturesPath, 'api', 'relaunch');
|
||||
const child = cp.spawn(process.execPath, [appPath]);
|
||||
const child = cp.spawn(process.execPath, [appPath, '--first']);
|
||||
child.stdout.on('data', (c) => console.log(c.toString()));
|
||||
child.stderr.on('data', (c) => console.log(c.toString()));
|
||||
child.on('exit', (code, signal) => {
|
||||
|
|
10
spec/fixtures/api/relaunch/main.js
vendored
10
spec/fixtures/api/relaunch/main.js
vendored
|
@ -11,11 +11,15 @@ app.whenReady().then(() => {
|
|||
const lastArg = process.argv[process.argv.length - 1];
|
||||
const client = net.connect(socketPath);
|
||||
client.once('connect', () => {
|
||||
client.end(String(lastArg === '--second'));
|
||||
client.end(lastArg);
|
||||
});
|
||||
client.once('end', () => {
|
||||
if (lastArg !== '--second') {
|
||||
app.relaunch({ args: process.argv.slice(1).concat('--second') });
|
||||
if (lastArg === '--first') {
|
||||
// Once without execPath specified
|
||||
app.relaunch({ args: process.argv.slice(1, -1).concat('--second') });
|
||||
} else if (lastArg === '--second') {
|
||||
// And once with execPath specified
|
||||
app.relaunch({ execPath: process.argv[0], args: process.argv.slice(1, -1).concat('--third') });
|
||||
}
|
||||
app.exit(0);
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue