vscode-codeql icon indicating copy to clipboard operation
vscode-codeql copied to clipboard

Fix bug with reimporting test cases

Open aeisenberg opened this issue 1 year ago • 0 comments

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

  • [ ] CHANGELOG.md has been updated to incorporate all user visible changes made by this pull request.
  • [x] Issues have been created for any UI or other user-facing changes made by this pull request.
  • [x] [Maintainers only] If this pull request makes user-facing changes that require documentation changes, open a corresponding docs pull request in the github/codeql repo and add the ready-for-doc-review label there.

aeisenberg avatar May 17 '24 23:05 aeisenberg