| Index: pkg/analysis_server/test/context_manager_test.dart | 
| diff --git a/pkg/analysis_server/test/context_manager_test.dart b/pkg/analysis_server/test/context_manager_test.dart | 
| index 61a3c092a28e95c3576256d1059198f2d2b30622..244d9c2194466a44c3c7e3a9d3c5c3113deff900 100644 | 
| --- a/pkg/analysis_server/test/context_manager_test.dart | 
| +++ b/pkg/analysis_server/test/context_manager_test.dart | 
| @@ -32,10 +32,17 @@ class ContextManagerTest { | 
| * The name of the 'bin' directory. | 
| */ | 
| static const String BIN_NAME = 'bin'; | 
| + | 
| +  /** | 
| +   * The name of the 'example' directory. | 
| +   */ | 
| +  static const String EXAMPLE_NAME = 'example'; | 
| + | 
| /** | 
| * The name of the 'lib' directory. | 
| */ | 
| static const String LIB_NAME = 'lib'; | 
| + | 
| /** | 
| * The name of the 'src' directory. | 
| */ | 
| @@ -184,6 +191,34 @@ class ContextManagerTest { | 
| expect(filePaths, isEmpty); | 
| } | 
|  | 
| +  void test_setRoots_addFolderWithNestedPubspec() { | 
| +    String examplePath = newFolder([projPath, EXAMPLE_NAME]); | 
| +    String libPath = newFolder([projPath, LIB_NAME]); | 
| + | 
| +    newFile([projPath, PUBSPEC_NAME]); | 
| +    newFile([libPath, 'main.dart']); | 
| +    newFile([examplePath, PUBSPEC_NAME]); | 
| +    newFile([examplePath, 'example.dart']); | 
| + | 
| +    packageMapProvider.packageMap['proj'] = | 
| +        [resourceProvider.getResource(libPath)]; | 
| + | 
| +    manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 
| + | 
| +    expect(manager.currentContextPaths, hasLength(2)); | 
| + | 
| +    expect(manager.currentContextPaths, contains(projPath)); | 
| +    Set<Source> projSources = manager.currentContextSources[projPath]; | 
| +    expect(projSources, hasLength(1)); | 
| +    expect(projSources.first.uri.toString(), 'package:proj/main.dart'); | 
| + | 
| +    expect(manager.currentContextPaths, contains(examplePath)); | 
| +    Set<Source> exampleSources = manager.currentContextSources[examplePath]; | 
| +    expect(exampleSources, hasLength(1)); | 
| +    expect(exampleSources.first.uri.toString(), | 
| +        'file:///my/proj/example/example.dart'); | 
| +  } | 
| + | 
| void test_setRoots_addFolderWithoutPubspec() { | 
| packageMapProvider.packageMap = null; | 
| manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 
| @@ -215,9 +250,8 @@ class ContextManagerTest { | 
| newFile([srcPath, 'internal.dart']); | 
| String testFilePath = newFile([testPath, 'main_test.dart']); | 
|  | 
| -    packageMapProvider.packageMap['proj'] = [ | 
| -      resourceProvider.getResource(libPath) | 
| -    ]; | 
| +    packageMapProvider.packageMap['proj'] = | 
| +        [resourceProvider.getResource(libPath)]; | 
|  | 
| manager.setRoots(<String>[projPath], <String>[], <String, String>{}); | 
| Set<Source> sources = manager.currentContextSources[projPath]; | 
| @@ -276,8 +310,9 @@ class ContextManagerTest { | 
| List<String> excludedPaths = <String>[]; | 
| manager.setRoots(includedPaths, excludedPaths, <String, String>{}); | 
| _checkPackageMap(projPath, equals(packageMapProvider.packageMap)); | 
| -    manager.setRoots(includedPaths, | 
| -        excludedPaths, <String, String>{projPath: packageRootPath}); | 
| +    manager.setRoots(includedPaths, excludedPaths, <String, String>{ | 
| +      projPath: packageRootPath | 
| +    }); | 
| _checkPackageRoot(projPath, equals(packageRootPath)); | 
| } | 
|  | 
| @@ -290,8 +325,9 @@ class ContextManagerTest { | 
| projPath: packageRootPath1 | 
| }); | 
| _checkPackageRoot(projPath, equals(packageRootPath1)); | 
| -    manager.setRoots(includedPaths, | 
| -        excludedPaths, <String, String>{projPath: packageRootPath2}); | 
| +    manager.setRoots(includedPaths, excludedPaths, <String, String>{ | 
| +      projPath: packageRootPath2 | 
| +    }); | 
| _checkPackageRoot(projPath, equals(packageRootPath2)); | 
| } | 
|  | 
| @@ -419,26 +455,6 @@ class ContextManagerTest { | 
| manager.assertContextFiles(project, [fileA, fileB]); | 
| } | 
|  | 
| -  void test_setRoots_ignoreSubContext_ofSubContext() { | 
| -    // prepare paths | 
| -    String root = '/root'; | 
| -    String rootFile = '$root/root.dart'; | 
| -    String subProject = '$root/sub'; | 
| -    String subPubspec = '$subProject/pubspec.yaml'; | 
| -    String subFile = '$subProject/bin/sub.dart'; | 
| -    String subSubPubspec = '$subProject/subsub/pubspec.yaml'; | 
| -    // create files | 
| -    resourceProvider.newFile(rootFile, 'library root;'); | 
| -    resourceProvider.newFile(subPubspec, 'pubspec'); | 
| -    resourceProvider.newFile(subFile, 'library sub;'); | 
| -    resourceProvider.newFile(subSubPubspec, 'pubspec'); | 
| -    // set roots | 
| -    manager.setRoots(<String>[root], <String>[], <String, String>{}); | 
| -    manager.assertContextPaths([root, subProject]); | 
| -    manager.assertContextFiles(root, [rootFile]); | 
| -    manager.assertContextFiles(subProject, [subFile]); | 
| -  } | 
| - | 
| void test_setRoots_newFolderWithPackageRoot() { | 
| String packageRootPath = '/package'; | 
| manager.setRoots(<String>[projPath], <String>[], <String, String>{ | 
|  |