diff --git a/apps/remix-ide/src/app/tabs/test-tab.js b/apps/remix-ide/src/app/tabs/test-tab.js index a316756c4f..277abab11d 100644 --- a/apps/remix-ide/src/app/tabs/test-tab.js +++ b/apps/remix-ide/src/app/tabs/test-tab.js @@ -44,6 +44,7 @@ module.exports = class TestTab extends ViewPlugin { this.offsetToLineColumnConverter = offsetToLineColumnConverter this.allFilesInvolved = [] this.isDebugging = false + this.currentErrors = [] appManager.event.on('activate', (name) => { if (name === 'solidity') this.updateRunAction() @@ -117,6 +118,14 @@ module.exports = class TestTab extends ViewPlugin { } async updateForNewCurrent (file) { + // Ensure that when someone clicks on compilation error and that opens a new file + // Test result, which is compilation error in this case, is not cleared + if (this.currentErrors) { + if (Array.isArray(this.currentErrors) && this.currentErrors.length > 0) { + const errFiles = this.currentErrors.map(err => { if (err.sourceLocation && err.sourceLocation.file) return err.sourceLocation.file }) + if (errFiles.includes(file)) return + } else if (this.currentErrors.sourceLocation && this.currentErrors.sourceLocation.file && this.currentErrors.sourceLocation.file === file) return + } // if current file is changed while debugging and one of the files imported in test file are opened // do not clear the test results in SUT plugin if (this.isDebugging && this.allFilesInvolved.includes(file)) return @@ -377,6 +386,7 @@ module.exports = class TestTab extends ViewPlugin { this.testsOutput.hidden = false if (!result && (_errors && (_errors.errors || (Array.isArray(_errors) && (_errors[0].message || _errors[0].formattedMessage))))) { this.testCallback({ type: 'contract', filename }) + this.currentErrors = _errors.errors this.setHeader(false) } if (_errors && _errors.errors) {