Skip to content
This repository was archived by the owner on Apr 14, 2022. It is now read-only.

Commit 2ecca5a

Browse files
committed
- More test fixes
- Server.OnDocumentChangeProcessingComplete correctly handles server dispose
1 parent 7ba4ccd commit 2ecca5a

2 files changed

Lines changed: 12 additions & 13 deletions

File tree

src/Analysis/Engine/Test/AnalysisTest.cs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2573,7 +2573,7 @@ public async Task SequenceMultiply() {
25732573
using (var server = await CreateServerAsync(PythonVersions.LatestAvailable2X)) {
25742574
var analysis = await server.OpenDefaultDocumentAndGetAnalysisAsync(text);
25752575
analysis.Should().HaveVariable("y").WithDescription("tuple")
2576-
.And.HaveVariable("y1").WithDescription("tuple[int]")
2576+
.And.HaveVariable("y1").WithDescription("tuple[int, int, int]")
25772577
.And.HaveVariable("oar").WithDescription("list[int]")
25782578
.And.HaveVariable("oar2").WithDescription("list");
25792579
}
@@ -2597,7 +2597,7 @@ public async Task SequenceMultiply_2() {
25972597
using (var server = await CreateServerAsync(PythonVersions.LatestAvailable2X)) {
25982598
var analysis = await server.OpenDefaultDocumentAndGetAnalysisAsync(text);
25992599
analysis.Should().HaveVariable("y").WithDescription("tuple")
2600-
.And.HaveVariable("y1").WithDescription("tuple[int]")
2600+
.And.HaveVariable("y1").WithDescription("tuple[int, int, int]")
26012601
.And.HaveVariable("oar").WithDescription("list[int]")
26022602
.And.HaveVariable("oar2").WithDescription("list");
26032603
}
@@ -3629,7 +3629,7 @@ def f(z):
36293629
analysis = await server.ChangeDefaultDocumentAndGetAnalysisAsync(code);
36303630
analysis.Should().HaveVariable("fob")
36313631
.OfType(BuiltinTypeId.Tuple)
3632-
.WithDescription("tuple[int]");
3632+
.WithDescription("tuple[int, int]");
36333633

36343634
// dict methods which return a list of key/value tuple
36353635
code = @"x = {}
@@ -3645,8 +3645,8 @@ def f(z):
36453645
print(itm)";
36463646

36473647
analysis = await server.ChangeDefaultDocumentAndGetAnalysisAsync(code);
3648-
analysis.Should().HaveVariable("iter").OfType(BuiltinTypeId.Tuple).WithDescription("tuple[int]")
3649-
.And.HaveVariable("itm").OfType(BuiltinTypeId.Tuple).WithDescription("tuple[int]");
3648+
analysis.Should().HaveVariable("iter").OfType(BuiltinTypeId.Tuple).WithDescription("tuple[int, int]")
3649+
.And.HaveVariable("itm").OfType(BuiltinTypeId.Tuple).WithDescription("tuple[int, int]");
36503650
}
36513651
}
36523652
/*
@@ -3866,7 +3866,7 @@ def f(self):
38663866
a = C()
38673867
b = a.f
38683868
");
3869-
analysis.Should().HaveVariable("b").WithDescription("method f of test-module.C objects");
3869+
analysis.Should().HaveVariable("b").WithDescription("method f of module.C objects");
38703870

38713871
await server.ChangeDefaultDocumentAndGetAnalysisAsync(@"
38723872
class C(object):
@@ -3876,7 +3876,7 @@ def f(self):
38763876
a = C()
38773877
b = a.f
38783878
");
3879-
analysis.Should().HaveVariable("b").WithDescription("method f of test-module.C objects");
3879+
analysis.Should().HaveVariable("b").WithDescription("method f of module.C objects");
38803880
}
38813881
}
38823882

@@ -5332,11 +5332,9 @@ public async Task CancelAnalysis() {
53325332
var analysisCompleteTask = Task.CompletedTask;
53335333
try {
53345334
server = await CreateServerAsync(configuration);
5335-
await Task.WhenAny(Task.Delay(15000), Task.Run(async () => {
5336-
for (var i = 0; i < files.Length; i++) {
5337-
await server.SendDidOpenTextDocument(new Uri(files[i]), contentTasks[i].Result);
5338-
}
5339-
}));
5335+
for (var i = 0; i < files.Length && server.AnalysisQueue.Count < 50; i++) {
5336+
await server.SendDidOpenTextDocument(new Uri(files[i]), contentTasks[i].Result);
5337+
}
53405338

53415339
server.AnalysisQueue.Count.Should().NotBe(0);
53425340
} finally {

src/LanguageServer/Impl/Implementation/Server.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -644,8 +644,8 @@ internal void EnqueueItem(IDocument doc, AnalysisPriority priority = AnalysisPri
644644
}
645645

646646
private void OnDocumentChangeProcessingComplete(IDocument doc, VersionCookie vc, bool enqueueForAnalysis, AnalysisPriority priority, IDisposable disposeWhenEnqueued) {
647-
_disposableBag.ThrowIfDisposed();
648647
try {
648+
_disposableBag.ThrowIfDisposed();
649649
if (vc != null) {
650650
foreach (var kv in vc.GetAllParts(doc.DocumentUri)) {
651651
ParseComplete(kv.Key, kv.Value.Version);
@@ -665,6 +665,7 @@ private void OnDocumentChangeProcessingComplete(IDocument doc, VersionCookie vc,
665665
_editorFiles.GetDocument(doc.DocumentUri).UpdateParseDiagnostics(vc, doc.DocumentUri);
666666
}
667667
} catch (BadSourceException) {
668+
} catch (ObjectDisposedException) when (_disposableBag.IsDisposed) {
668669
} catch (OperationCanceledException ex) {
669670
LogMessage(MessageType.Warning, $"Parsing {doc.DocumentUri} cancelled");
670671
TraceMessage($"{ex}");

0 commit comments

Comments
 (0)