blob: 603a1c2b620c188fe266cbec1d84b37997417bc0 [file] [log] [blame]
// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
library test.services.completion.contributor.dart.importuri;
import 'package:analysis_server/plugin/protocol/protocol.dart';
import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
import 'package:analysis_server/src/services/completion/dart/uri_contributor.dart';
import 'package:analyzer/file_system/memory_file_system.dart';
import 'package:path/path.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import 'completion_contributor_util.dart';
main() {
defineReflectiveSuite(() {
defineReflectiveTests(UriContributorTest);
defineReflectiveTests(UriContributorWindowsTest);
defineReflectiveTests(UriContributorTest_Driver);
defineReflectiveTests(UriContributorWindowsTest_Driver);
});
}
@reflectiveTest
class UriContributorTest extends DartCompletionContributorTest {
@override
DartCompletionContributor createContributor() {
return new UriContributor();
}
test_after_import() async {
addTestSource('import "p"^');
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertNoSuggestions();
}
test_after_import_raw() async {
addTestSource('import r"p"^');
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertNoSuggestions();
}
test_before_import() async {
addTestSource('import ^"p"');
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertNoSuggestions();
}
test_before_import_raw() async {
addTestSource('import ^r"p"');
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertNoSuggestions();
}
test_before_import_raw2() async {
addTestSource('import r^"p"');
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertNoSuggestions();
}
test_export_package2() async {
addPackageSource('foo', 'foo.dart', 'library foo;');
addPackageSource('foo', 'baz/too.dart', 'library too;');
addPackageSource('bar', 'bar.dart', 'library bar;');
addTestSource('export "package:foo/baz/^" import');
await computeSuggestions();
assertSuggest('package:foo/baz/too.dart',
csKind: CompletionSuggestionKind.IMPORT);
}
test_import() async {
addTestSource('import "^"');
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
}
test_import2() async {
addTestSource('import "^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
}
test_import3() async {
addTestSource('import "^ import');
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 7);
assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
}
test_import_dart() async {
addTestSource('import "d^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset - 1);
expect(replacementLength, 1);
assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('dart:core',
csKind: CompletionSuggestionKind.IMPORT, relevance: DART_RELEVANCE_LOW);
assertNotSuggested('dart:_internal');
assertSuggest('dart:async', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('dart:math', csKind: CompletionSuggestionKind.IMPORT);
}
test_import_dart2() async {
addTestSource('import "dart:async"; import "d^"');
await computeSuggestions();
expect(replacementOffset, completionOffset - 1);
expect(replacementLength, 1);
assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('dart:core',
csKind: CompletionSuggestionKind.IMPORT, relevance: DART_RELEVANCE_LOW);
assertNotSuggested('dart:_internal');
assertSuggest('dart:async', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('dart:math', csKind: CompletionSuggestionKind.IMPORT);
}
test_import_file() async {
testFile = '/proj/completion.dart';
addSource('/proj/other.dart', 'library other;');
addSource('/proj/foo/bar.dart', 'library bar;');
addSource('/blat.dart', 'library blat;');
addTestSource('import "^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertNotSuggested('completion.dart');
assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('foo');
assertSuggest('foo/', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('foo/bar.dart');
assertNotSuggested('../blat.dart');
}
test_import_file2() async {
testFile = '/proj/completion.dart';
addSource('/proj/other.dart', 'library other;');
addSource('/proj/foo/bar.dart', 'library bar;');
addSource('/blat.dart', 'library blat;');
addTestSource('import "..^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset - 2);
expect(replacementLength, 2);
assertNotSuggested('completion.dart');
assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('foo');
assertSuggest('foo/', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('foo/bar.dart');
assertNotSuggested('../blat.dart');
}
test_import_file_child() async {
testFile = '/proj/completion.dart';
addSource('/proj/other.dart', 'library other;');
addSource('/proj/foo/bar.dart', 'library bar;');
addSource('/blat.dart', 'library blat;');
addTestSource('import "foo/^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset - 4);
expect(replacementLength, 4);
assertNotSuggested('completion.dart');
assertNotSuggested('other.dart');
assertNotSuggested('foo');
assertNotSuggested('foo/');
assertSuggest('foo/bar.dart', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('../blat.dart');
}
test_import_file_outside_lib() async {
testFile = '/proj/lib/completion.dart';
addSource('/proj/lib/other.dart', 'library other;');
addSource('/proj/lib/foo/bar.dart', 'library bar;');
addSource('/proj/blat.dart', 'library blat;');
addSource('/proj/bin/boo.dart', 'library boo;');
addTestSource('import "../^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset - 3);
expect(replacementLength, 3);
assertNotSuggested('completion.dart');
assertNotSuggested('other.dart');
assertNotSuggested('foo');
assertNotSuggested('foo/');
assertNotSuggested('foo/bar.dart');
assertNotSuggested('../bin');
assertNotSuggested('../bin/');
assertNotSuggested('../blat.dart');
}
test_import_file_parent() async {
testFile = '/proj/completion.dart';
addSource('/proj/other.dart', 'library other;');
addSource('/proj/foo/bar.dart', 'library bar;');
addSource('/blat.dart', 'library blat;');
addSource('/proj2/boo.dart', 'library boo;');
addTestSource('import "../^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset - 3);
expect(replacementLength, 3);
assertNotSuggested('completion.dart');
assertNotSuggested('other.dart');
assertNotSuggested('foo');
assertNotSuggested('foo/');
assertNotSuggested('foo/bar.dart');
assertSuggest('../blat.dart', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('../proj2/', csKind: CompletionSuggestionKind.IMPORT);
}
test_import_file_parent2() async {
testFile = '/proj/completion.dart';
addSource('/proj/other.dart', 'library other;');
addSource('/proj/foo/bar.dart', 'library bar;');
addSource('/blat.dart', 'library blat;');
addTestSource('import "../b^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset - 4);
expect(replacementLength, 4);
assertNotSuggested('completion.dart');
assertNotSuggested('other.dart');
assertNotSuggested('foo');
assertNotSuggested('foo/');
assertNotSuggested('foo/bar.dart');
assertSuggest('../blat.dart', csKind: CompletionSuggestionKind.IMPORT);
}
test_import_package() async {
addPackageSource('foo', 'foo.dart', 'library foo;');
addPackageSource('foo', 'baz/too.dart', 'library too;');
addPackageSource('bar', 'bar.dart', 'library bar;');
addTestSource('import "p^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset - 1);
expect(replacementLength, 1);
assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('package:foo/', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('package:foo/foo.dart',
csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('package:foo/baz/', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('package:foo/baz/too.dart');
assertSuggest('package:bar/', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('package:bar/bar.dart',
csKind: CompletionSuggestionKind.IMPORT);
}
test_import_package2() async {
addPackageSource('foo', 'foo.dart', 'library foo;');
addPackageSource('foo', 'baz/too.dart', 'library too;');
addPackageSource('bar', 'bar.dart', 'library bar;');
addTestSource('import "package:foo/baz/^" import');
await computeSuggestions();
assertSuggest('package:foo/baz/too.dart',
csKind: CompletionSuggestionKind.IMPORT);
}
test_import_package2_raw() async {
addPackageSource('foo', 'foo.dart', 'library foo;');
addPackageSource('foo', 'baz/too.dart', 'library too;');
addPackageSource('bar', 'bar.dart', 'library bar;');
addTestSource('import r"package:foo/baz/^" import');
await computeSuggestions();
assertSuggest('package:foo/baz/too.dart',
csKind: CompletionSuggestionKind.IMPORT);
}
test_import_package2_with_trailing() async {
addPackageSource('foo', 'foo.dart', 'library foo;');
addPackageSource('foo', 'baz/too.dart', 'library too;');
addPackageSource('bar', 'bar.dart', 'library bar;');
addTestSource('import "package:foo/baz/^.dart" import');
await computeSuggestions();
assertSuggest('package:foo/baz/too.dart',
csKind: CompletionSuggestionKind.IMPORT);
expect(replacementOffset, completionOffset - 16);
expect(replacementLength, 5 + 16);
}
test_import_package_missing_lib() async {
var pkgSrc = addPackageSource('bar', 'bar.dart', 'library bar;');
provider.deleteFolder(dirname(pkgSrc.fullName));
addTestSource('import "p^" class');
await computeSuggestions();
expect(replacementOffset, completionOffset - 1);
expect(replacementLength, 1);
assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('package:bar/', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('package:bar/bar.dart');
}
test_import_package_raw() async {
addPackageSource('foo', 'foo.dart', 'library foo;');
addPackageSource('foo', 'baz/too.dart', 'library too;');
addPackageSource('bar', 'bar.dart', 'library bar;');
addTestSource('import r"p^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset - 1);
expect(replacementLength, 1);
assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('package:foo/', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('package:foo/foo.dart',
csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('package:foo/baz/', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('package:foo/baz/too.dart');
assertSuggest('package:bar/', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('package:bar/bar.dart',
csKind: CompletionSuggestionKind.IMPORT);
}
test_import_raw() async {
addTestSource('import r"^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
}
test_import_without_any_quotes() async {
addTestSource('import ^ import');
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertNoSuggestions();
}
test_import_without_any_quotes_eof() async {
addTestSource('import ^');
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertNoSuggestions();
}
test_import_without_closing_quote_eof() async {
addTestSource('import "^');
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
}
test_import_without_closing_quote_eof2() async {
addTestSource('import "^d');
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 1);
assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
}
test_import_without_closing_quote_eof3() async {
addTestSource('import "d^');
await computeSuggestions();
expect(replacementOffset, completionOffset - 1);
expect(replacementLength, 1);
assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
}
test_import_without_closing_quote_eof4() async {
addTestSource('import "d^"');
await computeSuggestions();
expect(replacementOffset, completionOffset - 1);
expect(replacementLength, 1);
assertSuggest('dart:', csKind: CompletionSuggestionKind.IMPORT);
assertSuggest('package:', csKind: CompletionSuggestionKind.IMPORT);
}
test_outside_import() async {
addTestSource('import ^"d" import');
await computeSuggestions();
assertNoSuggestions();
}
test_outside_import2() async {
addTestSource('import "d"^ import');
await computeSuggestions();
assertNoSuggestions();
}
test_part_file() async {
testFile = '/proj/completion.dart';
addSource('/proj/other.dart', 'library other;');
addSource('/proj/foo/bar.dart', 'library bar;');
addSource('/blat.dart', 'library blat;');
addTestSource('library x; part "^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertNotSuggested('completion.dart');
assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('foo');
assertSuggest('foo/', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('foo/bar.dart');
assertNotSuggested('../blat.dart');
}
test_part_file2() async {
testFile = '/proj/completion.dart';
addSource('/proj/other.dart', 'library other;');
addSource('/proj/foo/bar.dart', 'library bar;');
addSource('/blat.dart', 'library blat;');
addTestSource('library x; part "..^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset - 2);
expect(replacementLength, 2);
assertNotSuggested('completion.dart');
assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('foo');
assertSuggest('foo/', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('foo/bar.dart');
assertNotSuggested('../blat.dart');
}
test_part_file_child() async {
testFile = '/proj/completion.dart';
addSource('/proj/other.dart', 'library other;');
addSource('/proj/foo/bar.dart', 'library bar;');
addSource('/blat.dart', 'library blat;');
addTestSource('library x; part "foo/^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset - 4);
expect(replacementLength, 4);
assertNotSuggested('completion.dart');
assertNotSuggested('other.dart');
assertNotSuggested('foo');
assertNotSuggested('foo/');
assertSuggest('foo/bar.dart', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('../blat.dart');
}
test_part_file_parent() async {
testFile = '/proj/completion.dart';
addSource('/proj/other.dart', 'library other;');
addSource('/proj/foo/bar.dart', 'library bar;');
addSource('/blat.dart', 'library blat;');
addTestSource('library x; part "../^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset - 3);
expect(replacementLength, 3);
assertNotSuggested('completion.dart');
assertNotSuggested('other.dart');
assertNotSuggested('foo');
assertNotSuggested('foo/');
assertNotSuggested('foo/bar.dart');
assertSuggest('../blat.dart', csKind: CompletionSuggestionKind.IMPORT);
}
}
@reflectiveTest
class UriContributorTest_Driver extends UriContributorTest {
@override
bool get enableNewAnalysisDriver => true;
@failingTest
@override
test_part_file() {
// NoSuchMethodError: The getter 'uri' was called on null.
// Receiver: null
// Tried calling: uri
// dart:core Object.noSuchMethod
// package:analyzer/src/summary/resynthesize.dart 233:40 SummaryResynthesizer.getLibraryElement.<fn>
// dart:collection _HashVMBase&MapMixin&&_LinkedHashMapMixin.putIfAbsent
// package:analyzer/src/summary/resynthesize.dart 209:36 SummaryResynthesizer.getLibraryElement
// package:analyzer/src/summary/package_bundle_reader.dart 206:27 ResynthesizerResultProvider.compute
// package:analyzer/src/context/context.dart 573:52 AnalysisContextImpl.aboutToComputeResult.<fn>
// package:analyzer/src/generated/utilities_general.dart 189:15 _PerformanceTagImpl.makeCurrentWhile
// package:analyzer/src/context/context.dart 571:42 AnalysisContextImpl.aboutToComputeResult
// package:analyzer/src/task/driver.dart 746:21 WorkItem.gatherInputs
// package:analyzer/src/task/driver.dart 879:17 _WorkOrderDependencyWalker.getNextInput
// package:analyzer/src/task/driver.dart 414:35 CycleAwareDependencyWalker.getNextStronglyConnectedComponent
// package:analyzer/src/task/driver.dart 845:31 WorkOrder.moveNext.<fn>
// package:analyzer/src/generated/utilities_general.dart 189:15 _PerformanceTagImpl.makeCurrentWhile
// package:analyzer/src/task/driver.dart 837:44 WorkOrder.moveNext
// package:analyzer/src/task/driver.dart 108:30 AnalysisDriver.computeResult
// package:analyzer/src/context/context.dart 723:14 AnalysisContextImpl.computeResult
// package:analyzer/src/context/context.dart 1292:12 AnalysisContextImpl.resolveCompilationUnit2
// package:analyzer/src/dart/analysis/driver.dart 656:56 AnalysisDriver._computeAnalysisResult.<fn>
// package:analyzer/src/dart/analysis/driver.dart 1427:15 PerformanceLog.run
// package:analyzer/src/dart/analysis/driver.dart 643:20 AnalysisDriver._computeAnalysisResult
// package:analyzer/src/dart/analysis/driver.dart 910:33 AnalysisDriver._performWork.<async>
return super.test_part_file();
}
@failingTest
@override
test_part_file2() {
// Task failed: BuildCompilationUnitElementTask for source /
// Unexpected exception while performing BuildCompilationUnitElementTask for source /
// #0 AnalysisTask._safelyPerform (package:analyzer/task/model.dart:333:7)
// #1 AnalysisTask.perform (package:analyzer/task/model.dart:220:7)
// #2 AnalysisDriver.performWorkItem (package:analyzer/src/task/driver.dart:284:10)
// #3 AnalysisDriver.computeResult (package:analyzer/src/task/driver.dart:109:22)
// #4 AnalysisContextImpl.computeResult (package:analyzer/src/context/context.dart:723:14)
// #5 AnalysisContextImpl.computeErrors (package:analyzer/src/context/context.dart:665:12)
// #6 AnalysisDriver._computeAnalysisResult.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:658:54)
// #7 PerformanceLog.run (package:analyzer/src/dart/analysis/driver.dart:1427:15)
// #8 AnalysisDriver._computeAnalysisResult (package:analyzer/src/dart/analysis/driver.dart:643:20)
// #9 AnalysisDriver._performWork.<_performWork_async_body> (package:analyzer/src/dart/analysis/driver.dart:910:33)
// #10 Future.Future.microtask.<anonymous closure> (dart:async/future.dart:184)
// #11 _rootRun (dart:async/zone.dart:1146)
// #12 _CustomZone.run (dart:async/zone.dart:1026)
// #13 _CustomZone.runGuarded (dart:async/zone.dart:924)
// #14 _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:951)
// #15 _rootRun (dart:async/zone.dart:1150)
// #16 _CustomZone.run (dart:async/zone.dart:1026)
// #17 _CustomZone.runGuarded (dart:async/zone.dart:924)
// #18 _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:951)
// #19 _microtaskLoop (dart:async/schedule_microtask.dart:41)
// #20 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50)
// #21 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:394)
// #22 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:414)
// #23 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)
//
// Caused by Exception: Unit element not found in summary: file:///proj/completion.dart;file:///
// #0 SummaryResynthesizer.getElement (package:analyzer/src/summary/resynthesize.dart:124:9)
// #1 ResynthesizerResultProvider.compute (package:analyzer/src/summary/package_bundle_reader.dart:265:53)
// #2 AnalysisContextImpl.aboutToComputeResult.<anonymous closure> (package:analyzer/src/context/context.dart:573:52)
// #3 _PerformanceTagImpl.makeCurrentWhile (package:analyzer/src/generated/utilities_general.dart:189:15)
// #4 AnalysisContextImpl.aboutToComputeResult (package:analyzer/src/context/context.dart:571:42)
// #5 BuildCompilationUnitElementTask.internalPerform (package:analyzer/src/task/dart.dart:1071:27)
// #6 AnalysisTask._safelyPerform (package:analyzer/task/model.dart:321:9)
// #7 AnalysisTask.perform (package:analyzer/task/model.dart:220:7)
// #8 AnalysisDriver.performWorkItem (package:analyzer/src/task/driver.dart:284:10)
// #9 AnalysisDriver.computeResult (package:analyzer/src/task/driver.dart:109:22)
// #10 AnalysisContextImpl.computeResult (package:analyzer/src/context/context.dart:723:14)
// #11 AnalysisContextImpl.computeErrors (package:analyzer/src/context/context.dart:665:12)
// #12 AnalysisDriver._computeAnalysisResult.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:658:54)
// #13 PerformanceLog.run (package:analyzer/src/dart/analysis/driver.dart:1427:15)
// #14 AnalysisDriver._computeAnalysisResult (package:analyzer/src/dart/analysis/driver.dart:643:20)
// #15 AnalysisDriver._performWork.<_performWork_async_body> (package:analyzer/src/dart/analysis/driver.dart:910:33)
// #16 Future.Future.microtask.<anonymous closure> (dart:async/future.dart:184)
// #17 _rootRun (dart:async/zone.dart:1146)
// #18 _CustomZone.run (dart:async/zone.dart:1026)
// #19 _CustomZone.runGuarded (dart:async/zone.dart:924)
// #20 _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:951)
// #21 _rootRun (dart:async/zone.dart:1150)
// #22 _CustomZone.run (dart:async/zone.dart:1026)
// #23 _CustomZone.runGuarded (dart:async/zone.dart:924)
// #24 _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:951)
// #25 _microtaskLoop (dart:async/schedule_microtask.dart:41)
// #26 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50)
// #27 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:394)
// #28 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:414)
// #29 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)
// return super.test_part_file2();
fail('Throws background exception.');
}
@failingTest
@override
test_part_file_child() {
// expected foo/bar.dart CompletionSuggestionKind.IMPORT null
// found
return super.test_part_file_child();
}
@failingTest
@override
test_part_file_parent() {
// expected foo/bar.dart CompletionSuggestionKind.IMPORT null
// found
return super.test_part_file_parent();
}
}
@reflectiveTest
class UriContributorWindowsTest extends DartCompletionContributorTest {
@override
DartCompletionContributor createContributor() {
return new UriContributor();
}
@override
void setupResourceProvider() {
provider = new _TestWinResourceProvider();
}
test_import_file() async {
testFile = '\\proj\\completion.dart';
addSource('\\proj\\other.dart', 'library other;');
addSource('\\proj\\foo\\bar.dart', 'library bar;');
addSource('\\blat.dart', 'library blat;');
addTestSource('import "^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertNotSuggested('completion.dart');
assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('foo');
assertSuggest('foo/', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('foo/bar.dart');
assertNotSuggested('../blat.dart');
}
test_import_file2() async {
testFile = '\\proj\\completion.dart';
addSource('\\proj\\other.dart', 'library other;');
addSource('\\proj\\foo\\bar.dart', 'library bar;');
addSource('\\blat.dart', 'library blat;');
addTestSource('import "..^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset - 2);
expect(replacementLength, 2);
assertNotSuggested('completion.dart');
assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('foo');
assertSuggest('foo/', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('foo/bar.dart');
assertNotSuggested('../blat.dart');
}
test_import_file_child() async {
testFile = '\\proj\\completion.dart';
addSource('\\proj\\other.dart', 'library other;');
addSource('\\proj\\foo\\bar.dart', 'library bar;');
addSource('\\blat.dart', 'library blat;');
addTestSource('import "foo/^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset - 4);
expect(replacementLength, 4);
assertNotSuggested('completion.dart');
assertNotSuggested('other.dart');
assertNotSuggested('foo');
assertNotSuggested('foo/');
assertSuggest('foo/bar.dart', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('../blat.dart');
}
test_import_file_parent() async {
testFile = '\\proj\\completion.dart';
addSource('\\proj\\other.dart', 'library other;');
addSource('\\proj\\foo\\bar.dart', 'library bar;');
addSource('\\blat.dart', 'library blat;');
addTestSource('import "../^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset - 3);
expect(replacementLength, 3);
assertNotSuggested('completion.dart');
assertNotSuggested('other.dart');
assertNotSuggested('foo');
assertNotSuggested('foo/');
assertNotSuggested('foo/bar.dart');
assertSuggest('../blat.dart', csKind: CompletionSuggestionKind.IMPORT);
}
test_import_file_parent2() async {
testFile = '\\proj\\completion.dart';
addSource('\\proj\\other.dart', 'library other;');
addSource('\\proj\\foo\\bar.dart', 'library bar;');
addSource('\\blat.dart', 'library blat;');
addTestSource('import "../b^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset - 4);
expect(replacementLength, 4);
assertNotSuggested('completion.dart');
assertNotSuggested('other.dart');
assertNotSuggested('foo');
assertNotSuggested('foo/');
assertNotSuggested('foo/bar.dart');
assertSuggest('../blat.dart', csKind: CompletionSuggestionKind.IMPORT);
}
test_part_file() async {
testFile = '\\proj\\completion.dart';
addSource('\\proj\\other.dart', 'library other;');
addSource('\\proj\\foo\\bar.dart', 'library bar;');
addSource('\\blat.dart', 'library blat;');
addTestSource('library x; part "^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset);
expect(replacementLength, 0);
assertNotSuggested('completion.dart');
assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('foo');
assertSuggest('foo/', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('foo/bar.dart');
assertNotSuggested('../blat.dart');
}
test_part_file2() async {
testFile = '\\proj\\completion.dart';
addSource('\\proj\\other.dart', 'library other;');
addSource('\\proj\\foo\\bar.dart', 'library bar;');
addSource('\\blat.dart', 'library blat;');
addTestSource('library x; part "..^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset - 2);
expect(replacementLength, 2);
assertNotSuggested('completion.dart');
assertSuggest('other.dart', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('foo');
assertSuggest('foo/', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('foo/bar.dart');
assertNotSuggested('../blat.dart');
}
test_part_file_child() async {
testFile = '\\proj\\completion.dart';
addSource('\\proj\\other.dart', 'library other;');
addSource('\\proj\\foo\\bar.dart', 'library bar;');
addSource('\\blat.dart', 'library blat;');
addTestSource('library x; part "foo/^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset - 4);
expect(replacementLength, 4);
assertNotSuggested('completion.dart');
assertNotSuggested('other.dart');
assertNotSuggested('foo');
assertNotSuggested('foo/');
assertSuggest('foo/bar.dart', csKind: CompletionSuggestionKind.IMPORT);
assertNotSuggested('../blat.dart');
}
test_part_file_parent() async {
testFile = '\\proj\\completion.dart';
addSource('\\proj\\other.dart', 'library other;');
addSource('\\proj\\foo\\bar.dart', 'library bar;');
addSource('\\blat.dart', 'library blat;');
addTestSource('library x; part "../^" import');
await computeSuggestions();
expect(replacementOffset, completionOffset - 3);
expect(replacementLength, 3);
assertNotSuggested('completion.dart');
assertNotSuggested('other.dart');
assertNotSuggested('foo');
assertNotSuggested('foo/');
assertNotSuggested('foo/bar.dart');
assertSuggest('../blat.dart', csKind: CompletionSuggestionKind.IMPORT);
}
}
@reflectiveTest
class UriContributorWindowsTest_Driver extends UriContributorWindowsTest {
@override
bool get enableNewAnalysisDriver => true;
@failingTest
@override
test_part_file() {
// NoSuchMethodError: The getter 'uri' was called on null.
// Receiver: null
// Tried calling: uri
// dart:core Object.noSuchMethod
// package:analyzer/src/summary/resynthesize.dart 233:40 SummaryResynthesizer.getLibraryElement.<fn>
// dart:collection _HashVMBase&MapMixin&&_LinkedHashMapMixin.putIfAbsent
// package:analyzer/src/summary/resynthesize.dart 209:36 SummaryResynthesizer.getLibraryElement
// package:analyzer/src/summary/package_bundle_reader.dart 206:27 ResynthesizerResultProvider.compute
// package:analyzer/src/context/context.dart 573:52 AnalysisContextImpl.aboutToComputeResult.<fn>
// package:analyzer/src/generated/utilities_general.dart 189:15 _PerformanceTagImpl.makeCurrentWhile
// package:analyzer/src/context/context.dart 571:42 AnalysisContextImpl.aboutToComputeResult
// package:analyzer/src/task/driver.dart 746:21 WorkItem.gatherInputs
// package:analyzer/src/task/driver.dart 879:17 _WorkOrderDependencyWalker.getNextInput
// package:analyzer/src/task/driver.dart 414:35 CycleAwareDependencyWalker.getNextStronglyConnectedComponent
// package:analyzer/src/task/driver.dart 845:31 WorkOrder.moveNext.<fn>
// package:analyzer/src/generated/utilities_general.dart 189:15 _PerformanceTagImpl.makeCurrentWhile
// package:analyzer/src/task/driver.dart 837:44 WorkOrder.moveNext
// package:analyzer/src/task/driver.dart 108:30 AnalysisDriver.computeResult
// package:analyzer/src/context/context.dart 723:14 AnalysisContextImpl.computeResult
// package:analyzer/src/context/context.dart 1292:12 AnalysisContextImpl.resolveCompilationUnit2
// package:analyzer/src/dart/analysis/driver.dart 656:56 AnalysisDriver._computeAnalysisResult.<fn>
// package:analyzer/src/dart/analysis/driver.dart 1427:15 PerformanceLog.run
// package:analyzer/src/dart/analysis/driver.dart 643:20 AnalysisDriver._computeAnalysisResult
// package:analyzer/src/dart/analysis/driver.dart 910:33 AnalysisDriver._performWork.<async>
return super.test_part_file();
}
@failingTest
@override
test_part_file2() {
// Task failed: BuildCompilationUnitElementTask for source /
// Unexpected exception while performing BuildCompilationUnitElementTask for source /
// #0 AnalysisTask._safelyPerform (package:analyzer/task/model.dart:333:7)
// #1 AnalysisTask.perform (package:analyzer/task/model.dart:220:7)
// #2 AnalysisDriver.performWorkItem (package:analyzer/src/task/driver.dart:284:10)
// #3 AnalysisDriver.computeResult (package:analyzer/src/task/driver.dart:109:22)
// #4 AnalysisContextImpl.computeResult (package:analyzer/src/context/context.dart:723:14)
// #5 AnalysisContextImpl.computeErrors (package:analyzer/src/context/context.dart:665:12)
// #6 AnalysisDriver._computeAnalysisResult.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:658:54)
// #7 PerformanceLog.run (package:analyzer/src/dart/analysis/driver.dart:1427:15)
// #8 AnalysisDriver._computeAnalysisResult (package:analyzer/src/dart/analysis/driver.dart:643:20)
// #9 AnalysisDriver._performWork.<_performWork_async_body> (package:analyzer/src/dart/analysis/driver.dart:910:33)
// #10 Future.Future.microtask.<anonymous closure> (dart:async/future.dart:184)
// #11 _rootRun (dart:async/zone.dart:1146)
// #12 _CustomZone.run (dart:async/zone.dart:1026)
// #13 _CustomZone.runGuarded (dart:async/zone.dart:924)
// #14 _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:951)
// #15 _rootRun (dart:async/zone.dart:1150)
// #16 _CustomZone.run (dart:async/zone.dart:1026)
// #17 _CustomZone.runGuarded (dart:async/zone.dart:924)
// #18 _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:951)
// #19 _microtaskLoop (dart:async/schedule_microtask.dart:41)
// #20 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50)
// #21 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:394)
// #22 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:414)
// #23 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)
//
// Caused by Exception: Unit element not found in summary: file:///proj/completion.dart;file:///
// #0 SummaryResynthesizer.getElement (package:analyzer/src/summary/resynthesize.dart:124:9)
// #1 ResynthesizerResultProvider.compute (package:analyzer/src/summary/package_bundle_reader.dart:265:53)
// #2 AnalysisContextImpl.aboutToComputeResult.<anonymous closure> (package:analyzer/src/context/context.dart:573:52)
// #3 _PerformanceTagImpl.makeCurrentWhile (package:analyzer/src/generated/utilities_general.dart:189:15)
// #4 AnalysisContextImpl.aboutToComputeResult (package:analyzer/src/context/context.dart:571:42)
// #5 BuildCompilationUnitElementTask.internalPerform (package:analyzer/src/task/dart.dart:1071:27)
// #6 AnalysisTask._safelyPerform (package:analyzer/task/model.dart:321:9)
// #7 AnalysisTask.perform (package:analyzer/task/model.dart:220:7)
// #8 AnalysisDriver.performWorkItem (package:analyzer/src/task/driver.dart:284:10)
// #9 AnalysisDriver.computeResult (package:analyzer/src/task/driver.dart:109:22)
// #10 AnalysisContextImpl.computeResult (package:analyzer/src/context/context.dart:723:14)
// #11 AnalysisContextImpl.computeErrors (package:analyzer/src/context/context.dart:665:12)
// #12 AnalysisDriver._computeAnalysisResult.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:658:54)
// #13 PerformanceLog.run (package:analyzer/src/dart/analysis/driver.dart:1427:15)
// #14 AnalysisDriver._computeAnalysisResult (package:analyzer/src/dart/analysis/driver.dart:643:20)
// #15 AnalysisDriver._performWork.<_performWork_async_body> (package:analyzer/src/dart/analysis/driver.dart:910:33)
// #16 Future.Future.microtask.<anonymous closure> (dart:async/future.dart:184)
// #17 _rootRun (dart:async/zone.dart:1146)
// #18 _CustomZone.run (dart:async/zone.dart:1026)
// #19 _CustomZone.runGuarded (dart:async/zone.dart:924)
// #20 _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:951)
// #21 _rootRun (dart:async/zone.dart:1150)
// #22 _CustomZone.run (dart:async/zone.dart:1026)
// #23 _CustomZone.runGuarded (dart:async/zone.dart:924)
// #24 _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:951)
// #25 _microtaskLoop (dart:async/schedule_microtask.dart:41)
// #26 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50)
// #27 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:394)
// #28 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:414)
// #29 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)
// return super.test_part_file2();
fail('Throws background exception.');
}
@failingTest
@override
test_part_file_child() {
// expected foo/bar.dart CompletionSuggestionKind.IMPORT null
// found
return super.test_part_file_child();
}
@failingTest
@override
test_part_file_parent() {
// expected foo/bar.dart CompletionSuggestionKind.IMPORT null
// found
return super.test_part_file_parent();
}
}
class _TestWinResourceProvider extends MemoryResourceProvider {
@override
Context get pathContext => windows;
}