@@ -7,6 +7,7 @@ import { default as assert } from 'assert';
77import { createSandbox , SinonSandbox } from 'sinon' ;
88import * as vscode from 'vscode' ;
99import { RemoteOnlyRepository } from '../../api/remoteOnlyRepository' ;
10+ import { OPEN_PULL_LINKS , PR_SETTINGS_NAMESPACE } from '../../common/settingKeys' ;
1011import { CredentialStore } from '../../github/credentials' ;
1112import { registerGitHubIssueOrPullRequestExternalUriOpener } from '../../github/externalUriOpener' ;
1213import { FolderRepositoryManager } from '../../github/folderRepositoryManager' ;
@@ -32,7 +33,11 @@ describe('GitHubIssueOrPullRequestExternalUriOpener', () => {
3233 const credentialStore = new CredentialStore ( telemetry , context ) ;
3334 const repositoriesManager = new RepositoriesManager ( credentialStore , telemetry ) ;
3435 const folderRepositoryManagerResolver = new FolderRepositoryManagerResolver ( context , repositoriesManager , telemetry ) ;
36+ const configuration = vscode . workspace . getConfiguration ( PR_SETTINGS_NAMESPACE ) ;
37+ const previousSettingValue = configuration . inspect < boolean > ( OPEN_PULL_LINKS ) ?. globalValue ;
3538 let opener : vscode . ExternalUriOpener | undefined ;
39+ let registration : vscode . Disposable | undefined ;
40+ let cancellation : vscode . CancellationTokenSource | undefined ;
3641 sandbox . stub ( vscode . window , 'registerExternalUriOpener' ) . callsFake ( ( _id , value ) => {
3742 opener = value ;
3843 return new vscode . Disposable ( ( ) => undefined ) ;
@@ -43,22 +48,28 @@ describe('GitHubIssueOrPullRequestExternalUriOpener', () => {
4348 } ) ;
4449 sandbox . stub ( vscode . window , 'showErrorMessage' ) . resolves ( undefined ) ;
4550
46- const registration = registerGitHubIssueOrPullRequestExternalUriOpener (
47- context ,
48- folderRepositoryManagerResolver ,
49- telemetry ,
50- ) ;
51- const uri = vscode . Uri . parse ( 'https://github.com/microsoft/vscode/issues/1' ) ;
52- assert . ok ( opener ) ;
53- const cancellation = new vscode . CancellationTokenSource ( ) ;
54- await opener . openExternalUri ( uri , { sourceUri : uri } , cancellation . token ) ;
55- cancellation . dispose ( ) ;
51+ try {
52+ await configuration . update ( OPEN_PULL_LINKS , true , vscode . ConfigurationTarget . Global ) ;
53+ registration = registerGitHubIssueOrPullRequestExternalUriOpener (
54+ context ,
55+ folderRepositoryManagerResolver ,
56+ telemetry ,
57+ ) ;
58+ const uri = vscode . Uri . parse ( 'https://github.com/microsoft/vscode/issues/1' ) ;
59+ assert . ok ( opener ) ;
60+ cancellation = new vscode . CancellationTokenSource ( ) ;
61+ await opener . openExternalUri ( uri , { sourceUri : uri } , cancellation . token ) ;
5662
57- assert . strictEqual ( repositoriesManager . folderManagers . length , 0 ) ;
58- assert . strictEqual ( resolveIssue . callCount , 1 ) ;
59- registration . dispose ( ) ;
60- folderRepositoryManagerResolver . dispose ( ) ;
61- repositoriesManager . dispose ( ) ;
62- credentialStore . dispose ( ) ;
63+ assert . strictEqual ( repositoriesManager . folderManagers . length , 0 ) ;
64+ assert . strictEqual ( resolveIssue . callCount , 1 ) ;
65+ } finally {
66+ cancellation ?. dispose ( ) ;
67+ registration ?. dispose ( ) ;
68+ await configuration . update ( OPEN_PULL_LINKS , previousSettingValue , vscode . ConfigurationTarget . Global ) ;
69+ folderRepositoryManagerResolver . dispose ( ) ;
70+ repositoriesManager . dispose ( ) ;
71+ credentialStore . dispose ( ) ;
72+ context . dispose ( ) ;
73+ }
6374 } ) ;
6475} ) ;
0 commit comments