theia
theia copied to clipboard
No test controller with Id ... found in test-main.ts
Bug Description:
Steps to Reproduce:
- There is already a discussion on https://community.theia-ide.org/t/do-you-plan-to-fix-maximum-call-stack-size-exceeded/3318
- the problem is that the invoke order in test-main.ts
why $notifyTestRunProfileCreated was invoked first and then $registerTestController being invoked, this will always throw an error, because the controller is registered in $registerTestController.
@tsmaeder do you know why this happened in testing Explorer?
Additional Information
- Operating System: Windows10
- Theia Version: 1.45.0
Hi @wss29 the only way this seems possible if one of these things happen:
- The message that notifies about the new run profile overtakes the message that registers the controller somehow. That seems unlikely, since we have no other indication of this ever happening.
- The test controller is disposed before the run profile is added
- Something goes wrong registering the TestController on the browser side. Could you provide the relevant parts of the back end and browser logs in order to verify this? Since we have to return a TestController instance from the API synchronously, we can't guard against this.
Hi @tsmaeder
I check the backend and browser log, there is no error. so I made a little change to bypass the current no-test controller problem and see whether it worked, The code change is as follows
after the above change I can open file in text editor and run the test cases correctly, in the meantime, Test Explorer can show and execute the test correctly.
almost everything looks ok, except for one little problem
- when I click open a robot file in the text editor, the children node in test explorer disappears, like the simple.robot file in the following image.
- I debug the code and find when I open a file the deltaBuilder flush event trigger and $notifyDelta method are called,
- you can see the type is DeltaKind, value 2 means removed, the $notifyDelta finally called applyDeltaToCollection method in test-main.ts, and the child is removed in there when type is 2.
- this situation is strange, why does opening a robot file in the text editor cause Test Explorer children node to be removed from the parent node, where does the type value come from?