Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Fixes for persisting trust #12950

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jul 14, 2020
Merged

Fixes for persisting trust #12950

merged 4 commits into from
Jul 14, 2020

Conversation

joyceerhl
Copy link

@joyceerhl joyceerhl commented Jul 14, 2020

For #12933

  • Don't unnecessarily reorder the notebook json in model.getContent, it interferes with hashing (and also adds unnecessary noise to diffs). This will address this scenario
  • Use model.getContent for checking isNotebookTrusted to make sure we're loading and trusting the same thing always. This will address this scenario
  • Pull request represents a single change (i.e. not fixing disparate/unrelated things in a single PR).
  • Title summarizes what is changing.
  • Has a news entry file (remember to thank yourself!).
  • Appropriate comments and documentation strings in the code.
  • Has sufficient logging.
  • Has telemetry for enhancements.
  • Unit tests & system/integration tests are added/updated.
  • Test plan is updated as appropriate.
  • package-lock.json has been regenerated by running npm install (if dependencies have changed).
  • The wiki is updated with any design decisions/details.

@joyceerhl joyceerhl added the no-changelog No news entry required label Jul 14, 2020
@codecov-commenter
Copy link

Codecov Report

❗ No coverage uploaded for pull request base (master@9d2d4d2). Click here to learn what that means.
The diff coverage is 100.00%.

Impacted file tree graph

@@            Coverage Diff            @@
##             master   #12950   +/-   ##
=========================================
  Coverage          ?   60.01%           
=========================================
  Files             ?      672           
  Lines             ?    36590           
  Branches          ?     5135           
=========================================
  Hits              ?    21958           
  Misses            ?    13534           
  Partials          ?     1098           
Impacted Files Coverage Δ
...rc/client/datascience/notebookStorage/baseModel.ts 55.43% <100.00%> (ø)
...nt/testing/common/services/discoveredTestParser.ts 15.62% <0.00%> (ø)
...c/client/testing/common/services/contextService.ts 92.30% <0.00%> (ø)
.../interpreterSecurity/interpreterSecurityStorage.ts 97.50% <0.00%> (ø)
...application/diagnostics/commands/execVSCCommand.ts 100.00% <0.00%> (ø)
src/client/common/utils/text.ts 69.38% <0.00%> (ø)
src/client/testing/unittest/main.ts 70.58% <0.00%> (ø)
...ent/interpreter/display/shebangCodeLensProvider.ts 94.33% <0.00%> (ø)
src/client/common/experiments/manager.ts 95.94% <0.00%> (ø)
src/client/activation/jedi.ts 21.35% <0.00%> (ø)
... and 663 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 9d2d4d2...35abf6c. Read the comment docs.

@joyceerhl joyceerhl marked this pull request as ready for review July 14, 2020 18:21
@joyceerhl
Copy link
Author

joyceerhl commented Jul 14, 2020

In order to enforce setting and checking trust with the same contents, @rchiodo and I think it would be good to refactor trustNotebook and isNotebookTrusted to take INotebookModel as a sole parameter, and then grab the file URI and contents from the model. (@DonJayamanne I know you suggested doing this at the very beginning, so hopefully this is good news.)

This PR doesn't do that because we're releasing tomorrow and a major refactor is not strictly necessary to submit this bug fix; we just needed to construct the model, check trust with model.getContents, and update trust accordingly. I'll be submitting a separate PR for the refactor.

kind: 'updateTrust',
oldDirty: model.isDirty,
newDirty: model.isDirty,
isNotebookTrusted: await this.trustService.isNotebookTrusted(file, contentsToCheck)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need to perform an update if the notebook is not trusted?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It starts out as trusted I believe.


In reply to: 454653784 [](ancestors = 454653784)

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But we could skip this update if the notebook comes back as already trusted.


In reply to: 454655061 [](ancestors = 454655061,454653784)

Copy link
Author

@joyceerhl joyceerhl Jul 14, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because the notebook trust is defaulted to true: https://github.com/microsoft/vscode-python/pull/12950/files#diff-9023bf28fe1ab2fbf6208e4cad576866R352

That's because it's going to be trusted anyway without calling isNotebookTrusted if contents === undefined || isUntitledFile(file) (which is what we did before this PR). And then if we actually need to check if the notebook is trusted, we update the model with the result of the actual check.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes but if the result comes back as trusted, you don't need to update the model.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes but the model is already trusted at that point. So updating it is redundant.

I'm suggesting this:

if (!(await this.trustService.isNotebookTrusted(file, contentsToCheck))) {
     model.update({
                source: 'user',
                kind: 'updateTrust',
                oldDirty: model.isDirty,
                newDirty: model.isDirty,
                isNotebookTrusted: false

}

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah those changes are already in there

Copy link

@rchiodo rchiodo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🕐

@sonarqubecloud
Copy link

Kudos, SonarCloud Quality Gate passed!

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities (and Security Hotspot 0 Security Hotspots to review)
Code Smell A 0 Code Smells

No Coverage information No Coverage information
0.0% 0.0% Duplication

@joyceerhl joyceerhl merged commit 9c31e46 into microsoft:master Jul 14, 2020
joyceerhl added a commit that referenced this pull request Jul 14, 2020
joyceerhl added a commit that referenced this pull request Jul 15, 2020
* Only allow Enter / NumpadEnter w/o ctrl/shift/alt (#12939)

* Send telemetry for notebook trust prompt selections (#12964)

* Fixes for persisting trust (#12950)
karthiknadig added a commit that referenced this pull request Aug 5, 2020
* Update model.isTrusted on trust change (#12820) (#12823)

* Reduce visual complexity of trust prompt (#12839) (#12847)

* Port python 2.7 fix to release (#12877)

* port color fix on collapse all (#12895) (#12897)

* fix a color on collapse all (#12895)

* update changelog

* Merge fixes into July release (#12889)

Co-authored-by: Timothy Ruscica <[email protected]>

* Merge more fixes into july release (#12918)

Co-authored-by: Joyce Er <[email protected]>

* Port trust fixes (#12929)

* Fix regressions in trusted notebooks (#12902)

* Handle trustAllNotebooks selection

* Fix bug where after trusting, UI didn't update

* Recover from ENOENT due to missing parent directory when trusting notebook (#12913)

* Disable keydown on native cells in untrusted notebooks (#12914)

* Hide editor icons when editor is not a notebook (#12934) (#12935)

* Check for hideFromUser before activating current terminal (#12942) (#12956)

* Check for hideFromUser before activating current terminal

* Add tests

* Tweak logic

* Port final trust fixes for release (#12965)

* Only allow Enter / NumpadEnter w/o ctrl/shift/alt (#12939)

* Send telemetry for notebook trust prompt selections (#12964)

* Fixes for persisting trust (#12950)

* Display survey for native notebooks on/after 1st August (#12961) (#12975)

Co-authored-by: Joyce Er <[email protected]>

Co-authored-by: Joyce Er <[email protected]>

* Contains cherry picks, version updates, change log updates (#12983)

* Update version and change log

* Improve detection when LS is fully loaded for IntelliCode (#12853)

* Fix path

* Actually fix settings

* Add news

* Add test

* Format

* Suppress 'jediEnabled' removal

* Drop survey first launch threshold

* Wait for client ready

* Handle async dispose

* Fix the date

Co-authored-by: Mikhail Arkhipov <[email protected]>

* hide the gather button while a cell is executing (#12984)

* Update date (#13002)

* remove release notes from the start page (#13032)

* Cherry pick, version change and change log update (#13079)

* Ensure languageServer value is valid, send event during activate (#13064)

* Update change log and version

* Activate banner prompt for Pylance (#12817)

* Fix path

* Actually fix settings

* Add news

* Add test

* Format

* Suppress 'jediEnabled' removal

* Drop survey first launch threshold

* Remove LS experiments

* Frequency + tests

* Fix test

* Update message to match spec

* Open workspace for extension rather than changing setting

* Fix localization string

* Show banners asynchronously

* Add experiments

* Formatting

* Typo

* Put back verifyAll

* Remove obsolete experiments, add Pylance

* Suppress experiment if Pylance is installed

* PR feedback

Co-authored-by: Jake Bailey <[email protected]>

* Update change log as per comments

Co-authored-by: Jake Bailey <[email protected]>
Co-authored-by: Mikhail Arkhipov <[email protected]>

* Port fix the gather survey (#13086) (#13105)

* Fix the gather survey (#13086)

* fix the gather survey
added 'gather stats' telemetry
mention the gather comments to update the python ext

* oops

* fix tests and address comments

* update gather stats when resetting the kernel

* set globalstate vars to 0 when we open vs code

* fix gather stats telemetry

* fix tests

* fix tests for real

Co-authored-by: Joyce Er <[email protected]>
Co-authored-by: Ian Huff <[email protected]>
Co-authored-by: David Kutugata <[email protected]>
Co-authored-by: Don Jayamanne <[email protected]>
Co-authored-by: Timothy Ruscica <[email protected]>
Co-authored-by: Mikhail Arkhipov <[email protected]>
Co-authored-by: Jake Bailey <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
no-changelog No news entry required
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants