|
5 | 5 | import 'package:analyzer/file_system/file_system.dart';
|
6 | 6 | import 'package:analyzer/file_system/memory_file_system.dart';
|
7 | 7 | import 'package:dartdoc/src/dartdoc_options.dart';
|
| 8 | +import 'package:dartdoc/src/model/class.dart'; |
8 | 9 | import 'package:dartdoc/src/model/documentable.dart';
|
9 | 10 | import 'package:dartdoc/src/model/kind.dart';
|
10 | 11 | import 'package:dartdoc/src/package_config_provider.dart';
|
11 | 12 | import 'package:dartdoc/src/package_meta.dart';
|
12 | 13 | import 'package:dartdoc/src/special_elements.dart';
|
13 | 14 | import 'package:test/test.dart';
|
| 15 | +import 'package:test_reflective_loader/test_reflective_loader.dart'; |
14 | 16 |
|
| 17 | +import 'dartdoc_test_base.dart'; |
| 18 | +import 'src/test_descriptor_utils.dart' as d; |
15 | 19 | import 'src/utils.dart' as utils;
|
16 | 20 |
|
17 | 21 | void main() {
|
| 22 | + defineReflectiveSuite(() { |
| 23 | + defineReflectiveTests(PackagesTest); |
| 24 | + }); |
| 25 | + |
| 26 | + // TODO(srawlins): Migrate to test_reflective_loader tests. |
| 27 | + |
18 | 28 | late MemoryResourceProvider resourceProvider;
|
19 | 29 | late PackageMetaProvider packageMetaProvider;
|
20 | 30 | late FakePackageConfigProvider packageConfigProvider;
|
@@ -103,6 +113,8 @@ int x;
|
103 | 113 | projectPath, packageMetaProvider, packageConfigProvider);
|
104 | 114 |
|
105 | 115 | expect(packageGraph.localPublicLibraries, hasLength(1));
|
| 116 | + var library = packageGraph.libraries.named('a'); |
| 117 | + expect(library.isDocumented, true); |
106 | 118 | });
|
107 | 119 |
|
108 | 120 | test('has private libraries', () async {
|
@@ -489,3 +501,88 @@ int x;
|
489 | 501 | });
|
490 | 502 | });
|
491 | 503 | }
|
| 504 | + |
| 505 | +@reflectiveTest |
| 506 | +class PackagesTest extends DartdocTestBase { |
| 507 | + @override |
| 508 | + String get libraryName => 'lib'; |
| 509 | + |
| 510 | + void test_exportedElements() async { |
| 511 | + var graph = await bootPackageFromFiles( |
| 512 | + [ |
| 513 | + d.dir('lib', [ |
| 514 | + d.file('lib.dart', "export 'src/impl.dart';"), |
| 515 | + d.dir('src', [ |
| 516 | + d.file('impl.dart', 'class C {}'), |
| 517 | + ]), |
| 518 | + ]), |
| 519 | + ], |
| 520 | + ); |
| 521 | + var library = graph.libraries.named('lib'); |
| 522 | + expect(library.classes.single.name, 'C'); |
| 523 | + } |
| 524 | + |
| 525 | + void test_exportedElements_indirectlyExported() async { |
| 526 | + var graph = await bootPackageFromFiles( |
| 527 | + [ |
| 528 | + d.dir('lib', [ |
| 529 | + d.file('lib.dart', "export 'src/impl.dart';"), |
| 530 | + d.dir('src', [ |
| 531 | + d.file('impl.dart', "export 'impl2.dart';"), |
| 532 | + d.file('impl2.dart', 'class C {}'), |
| 533 | + ]), |
| 534 | + ]), |
| 535 | + ], |
| 536 | + ); |
| 537 | + var library = graph.libraries.named('lib'); |
| 538 | + expect(library.classes.single.name, 'C'); |
| 539 | + } |
| 540 | + |
| 541 | + void test_exportedElements_fromPart() async { |
| 542 | + var graph = await bootPackageFromFiles( |
| 543 | + [ |
| 544 | + d.dir('lib', [ |
| 545 | + d.file('lib.dart', "part 'part.dart';"), |
| 546 | + d.file('part.dart', ''' |
| 547 | +part of 'lib.dart'; |
| 548 | +export 'src/impl.dart'; |
| 549 | +'''), |
| 550 | + d.dir('src', [ |
| 551 | + d.file('impl.dart', 'class C {}'), |
| 552 | + ]), |
| 553 | + ]), |
| 554 | + ], |
| 555 | + ); |
| 556 | + var library = graph.libraries.named('lib'); |
| 557 | + expect(library.qualifiedName, 'lib'); |
| 558 | + expect(library.classes, isNotEmpty); |
| 559 | + expect(library.classes.single, |
| 560 | + isA<Class>().having((c) => c.name, 'name', 'C')); |
| 561 | + } |
| 562 | + |
| 563 | + void test_exportedElements_fromPartOfPart() async { |
| 564 | + var graph = await bootPackageFromFiles( |
| 565 | + [ |
| 566 | + d.dir('lib', [ |
| 567 | + d.file('lib.dart', "part 'part1.dart';"), |
| 568 | + d.file('part1.dart', ''' |
| 569 | +part of 'lib.dart'; |
| 570 | +part 'part2.dart'; |
| 571 | +'''), |
| 572 | + d.file('part2.dart', ''' |
| 573 | +part of 'part1.dart'; |
| 574 | +export 'src/impl.dart'; |
| 575 | +'''), |
| 576 | + d.dir('src', [ |
| 577 | + d.file('impl.dart', 'class C {}'), |
| 578 | + ]), |
| 579 | + ]), |
| 580 | + ], |
| 581 | + ); |
| 582 | + var library = graph.libraries.named('lib'); |
| 583 | + expect(library.qualifiedName, 'lib'); |
| 584 | + expect(library.classes, isNotEmpty); |
| 585 | + expect(library.classes.single, |
| 586 | + isA<Class>().having((c) => c.name, 'name', 'C')); |
| 587 | + } |
| 588 | +} |
0 commit comments