forked from DonJayamanne/pythonVSCode
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Closed
Labels
area-editor-*User-facing catch-allUser-facing catch-allbugIssue identified by VS Code Team member as probable bugIssue identified by VS Code Team member as probable buggood first issueverification-neededVerification of issue is requestedVerification of issue is requestedverifiedVerification succeededVerification succeeded
Milestone
Description
Environment data
- VS Code version: 1.37.1
- Extension version (available under the Extensions sidebar): master 39cf9e0
- OS and version: macOS Mojave 10.14.6
Expected behaviour
Python commands should only be displayed once in the "Python" output channel.
Actual behaviour
Some Python commands (for example linting or formatting) are displayed twice.
Steps to reproduce:
- Start debugging the extension
- Open a python file and enable linting or formatting on save
- Set 2 breakpoints:
const argsList = args.reduce((accumulator, current, index) => { this.emit('exec', file, args, options);
- Save the file
- Notice that
this.emit('exec', file, args, options);
is only hit once, but the debugger stops twice onlogger.logProcess()
.
Cause
We register 2 'exec' listeners to the python process:
- In the
create
orcreateActivatedEnvironment
method inPythonExecutionFactory
:
vscode-python/src/client/common/process/pythonExecutionFactory.ts
Lines 31 to 37 in 39cf9e0
public async create(options: ExecutionFactoryCreationOptions): Promise<IPythonExecutionService> { const pythonPath = options.pythonPath ? options.pythonPath : this.configService.getSettings(options.resource).pythonPath; const processService: IProcessService = await this.processServiceFactory.create(options.resource); const processLogger = this.serviceContainer.get<IProcessLogger>(IProcessLogger); processService.on('exec', processLogger.logProcess.bind(processLogger)); return new PythonExecutionService(this.serviceContainer, processService, pythonPath); } - But also in the call to
await this.processServiceFactory.create
:
vscode-python/src/client/common/process/processFactory.ts
Lines 21 to 26 in 39cf9e0
public async create(resource?: Uri): Promise<IProcessService> { const customEnvVars = await this.envVarsService.getEnvironmentVariables(resource); const proc: IProcessService = new ProcessService(this.decoder, customEnvVars); this.disposableRegistry.push(proc); return proc.on('exec', this.processLogger.logProcess.bind(this.processLogger)); }
RobHelgeson, Spenhouet, DanielNoord, kbd and chuanhao01
6DC4
Metadata
Metadata
Assignees
Labels
area-editor-*User-facing catch-allUser-facing catch-allbugIssue identified by VS Code Team member as probable bugIssue identified by VS Code Team member as probable buggood first issueverification-neededVerification of issue is requestedVerification of issue is requestedverifiedVerification succeededVerification succeeded