github / vscode-codeql

An extension for Visual Studio Code that adds rich language support for CodeQL
https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-codeql
MIT License
421 stars 184 forks source link

Fix bug with reimporting test cases #3616

Closed aeisenberg closed 4 months ago

aeisenberg commented 4 months ago

When re-importing a test database, if the source archive for that database is not in the workspace, then old source code will be seen when inspected.

To reproduce:

  1. Run a ql test file with a failure (I'm using a javascript DB).
  2. Right click and import on the db that sticks around.
  3. Change the JS source file for the test.
  4. Re-run and still have a failure.
  5. Re-import the database
  6. Run the query under test
  7. Click on a result item
  8. BUG: The source code is old

The problem is that the source archive cache is not being flushed in this case. I added a case to flush the source archive when the archive was imported into the workspace as a folder, but not when the archive is external.

The fix is to listen for database remove events in the archive filesystem provider and flush the associated database source archive.

There is a complication:

The database remove event didn't emit the removed database. This is because the only place that consumed the event didn't need it.

To get around this, I changed the structure of the events. I added a new fullRefresh boolean. If true, then the original database change handler will ensure the entire tree is refreshed. If false, only the selected database.

Replace this with a description of the changes your pull request makes.

Checklist