diff --git a/lib/src/io_utils.dart b/lib/src/io_utils.dart index 1a66311bc3..c2cbbcf429 100644 --- a/lib/src/io_utils.dart +++ b/lib/src/io_utils.dart @@ -12,22 +12,10 @@ import 'dart:io' as io; import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/file_system/physical_file_system.dart'; -// ignore: implementation_imports -import 'package:analyzer/src/generated/sdk.dart' show SdkLibrary; -// ignore: implementation_imports -import 'package:analyzer/src/test_utilities/mock_sdk.dart' show MockSdkLibrary; import 'package:path/path.dart' as path show Context; Encoding utf8AllowMalformed = Utf8Codec(allowMalformed: true); -bool isSdkLibraryDocumented(SdkLibrary library) { - if (library is MockSdkLibrary) { - // Not implemented in [MockSdkLibrary]. - return true; - } - return library.isDocumented; -} - extension PathExtensions on path.Context { /// Returns a canonicalized path including the home directory in place of /// tilde references. diff --git a/lib/src/model/library.dart b/lib/src/model/library.dart index acd5c27a01..e756f1ddba 100644 --- a/lib/src/model/library.dart +++ b/lib/src/model/library.dart @@ -15,7 +15,6 @@ import 'package:analyzer/src/dart/element/inheritance_manager3.dart' show InheritanceManager3; // ignore: implementation_imports import 'package:analyzer/src/generated/sdk.dart' show SdkLibrary; -import 'package:dartdoc/src/io_utils.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; import 'package:dartdoc/src/model/model.dart'; import 'package:dartdoc/src/package_meta.dart' show PackageMeta; @@ -199,8 +198,7 @@ class Library extends ModelElement with Categorization, TopLevelContainer { @override bool get isPublic { if (!super.isPublic) return false; - if (sdkLib != null && - (sdkLib.isInternal || !isSdkLibraryDocumented(sdkLib))) { + if (sdkLib != null && (sdkLib.isInternal || !sdkLib.isDocumented)) { return false; } if (config.isLibraryExcluded(name) || diff --git a/pubspec.yaml b/pubspec.yaml index ac7724910e..c5c36e2479 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -7,7 +7,7 @@ environment: sdk: '>=2.11.99 <3.0.0' dependencies: - analyzer: ^2.4.0 + analyzer: ^2.7.0 args: ^2.3.0 charcode: ^1.3.1 collection: ^1.15.0 diff --git a/test/documentation_comment_test.dart b/test/documentation_comment_test.dart index bacfea1cfb..fc1d09c4cc 100644 --- a/test/documentation_comment_test.dart +++ b/test/documentation_comment_test.dart @@ -4,6 +4,7 @@ import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/file_system/memory_file_system.dart'; +import 'package:analyzer/src/dart/sdk/sdk.dart'; import 'package:analyzer/src/test_utilities/mock_sdk.dart'; import 'package:dartdoc/src/dartdoc_options.dart'; import 'package:dartdoc/src/model/model.dart'; @@ -18,8 +19,6 @@ void main() { MemoryResourceProvider resourceProvider; PackageMetaProvider packageMetaProvider; FakePackageConfigProvider packageConfigProvider; - MockSdk mockSdk; - Folder sdkFolder; Folder projectRoot; String projectPath; var packageName = 'my_package'; @@ -40,16 +39,22 @@ void main() { group('documentation_comment tests', () { setUp(() async { resourceProvider = MemoryResourceProvider(); - mockSdk = MockSdk(resourceProvider: resourceProvider); - sdkFolder = utils.writeMockSdkFiles(mockSdk); + final sdkRoot = resourceProvider.getFolder( + resourceProvider.convertPath('/sdk'), + ); + createMockSdk( + resourceProvider: resourceProvider, + root: sdkRoot, + ); + utils.writeMockSdkFiles(sdkRoot); packageMetaProvider = PackageMetaProvider( PubPackageMeta.fromElement, PubPackageMeta.fromFilename, PubPackageMeta.fromDir, resourceProvider, - sdkFolder, - defaultSdk: mockSdk, + sdkRoot, + defaultSdk: FolderBasedDartSdk(resourceProvider, sdkRoot), messageForMissingPackageMeta: PubPackageMeta.messageForMissingPackageMeta); var optionSet = await DartdocOptionSet.fromOptionGenerators( @@ -59,7 +64,7 @@ void main() { // To build the package graph, we always ask package_config for a // [PackageConfig] for the SDK directory. Put a dummy entry in. packageConfigProvider.addPackageToConfigFor( - sdkFolder.path, 'analyzer', Uri.file('/sdk/pkg/analyzer/')); + sdkRoot.path, 'analyzer', Uri.file('/sdk/pkg/analyzer/')); projectRoot = utils.writePackage( packageName, resourceProvider, packageConfigProvider); diff --git a/test/src/utils.dart b/test/src/utils.dart index 8e9d696485..b00a6f1b9b 100644 --- a/test/src/utils.dart +++ b/test/src/utils.dart @@ -8,6 +8,7 @@ import 'dart:io'; import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/file_system/memory_file_system.dart'; +import 'package:analyzer/src/dart/sdk/sdk.dart'; import 'package:analyzer/src/test_utilities/mock_sdk.dart'; import 'package:dartdoc/src/dartdoc_options.dart'; import 'package:dartdoc/src/markdown_processor.dart'; @@ -82,50 +83,35 @@ PackageConfigProvider getTestPackageConfigProvider(String sdkPath) { /// Returns a [PackageMetaProvider] using a [MemoryResourceProvider]. PackageMetaProvider get testPackageMetaProvider { var resourceProvider = MemoryResourceProvider(); - var mockSdk = MockSdk(resourceProvider: resourceProvider); - var sdkFolder = writeMockSdkFiles(mockSdk); + final sdkRoot = resourceProvider.getFolder( + resourceProvider.convertPath('/sdk'), + ); + createMockSdk( + resourceProvider: resourceProvider, + root: sdkRoot, + ); + writeMockSdkFiles(sdkRoot); return PackageMetaProvider( PubPackageMeta.fromElement, PubPackageMeta.fromFilename, PubPackageMeta.fromDir, resourceProvider, - sdkFolder, - defaultSdk: mockSdk, + sdkRoot, + defaultSdk: FolderBasedDartSdk(resourceProvider, sdkRoot), messageForMissingPackageMeta: PubPackageMeta.messageForMissingPackageMeta, ); } -/// Writes [mockSdk] to disk at both its original path, and its canonicalized -/// path (they may be different on Windows). +/// Writes additional files for a mock SDK. /// /// Included is a "version" file and an "api_readme.md" file. -Folder writeMockSdkFiles(MockSdk mockSdk) { - var resourceProvider = mockSdk.resourceProvider; - var pathContext = resourceProvider.pathContext; - - // The [MockSdk] only works in non-canonicalized paths, which include - // "C:\sdk", on Windows. However, dartdoc works almost exclusively with - // canonical paths ("c:\sdk"). Copy all MockSdk files to the canonicalized - // path. - for (var l in mockSdk.sdkLibraries) { - var p = l.path; - resourceProvider - .getFile(pathContext.canonicalize(p)) - .writeAsStringSync(resourceProvider.getFile(p).readAsStringSync()); - } - var sdkFolder = resourceProvider.getFolder( - pathContext.canonicalize(resourceProvider.convertPath(sdkRoot))) - ..create(); +void writeMockSdkFiles(Folder sdkFolder) { sdkFolder.getChildAssumingFile('version').writeAsStringSync('2.9.0'); sdkFolder.getChildAssumingFile('api_readme.md').writeAsStringSync( 'Welcome to the [Dart](https://dart.dev/) API reference documentation'); _writeMockSdkBinFiles(sdkFolder); - _writeMockSdkBinFiles( - resourceProvider.getFolder(resourceProvider.convertPath(sdkRoot))); - - return sdkFolder; } /// Dartdoc has a few indicator files it uses to verify that a directory