Skip to content

Commit c37386a

Browse files
authored
Support documenting unversioned packages (#1697)
* Fix bug where --version didn't do anything * Review comments * Rebuild test package docs for retype deprecation in dev.55 * dartdoc_test as full integration test now * Eliminate unused initializer and update pubspec * allow unversioned * Add test * Add gitignore to test_package_minimum * dartfmt * Remove extra copy of contextFromArgvTemp introduced in merge resolution
1 parent 7957fd5 commit c37386a

File tree

9 files changed

+43
-24
lines changed

9 files changed

+43
-24
lines changed

lib/dartdoc.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,7 @@ class Dartdoc extends PackageBuilder {
6666
/// An asynchronous factory method that builds Dartdoc's file writers
6767
/// and returns a Dartdoc object with them.
6868
static withDefaultGenerators(DartdocGeneratorOptionContext config) async {
69-
List<Generator> generators =
70-
await initGenerators(config);
69+
List<Generator> generators = await initGenerators(config);
7170
return new Dartdoc._(config, generators);
7271
}
7372

lib/src/model.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4396,7 +4396,7 @@ class PackageGraph extends Canonicalization
43964396
return _inheritThrough;
43974397
}
43984398

4399-
String get version => packageMeta.version;
4399+
String get version => packageMeta.version ?? '0.0.0-unknown';
44004400

44014401
/// Looks up some [Library] that is reexporting this [Element]; not
44024402
/// necessarily the canonical [Library].

test/compare_output_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ void main() {
4949
var result = Process.runSync(Platform.resolvedExecutable, args,
5050
workingDirectory: _testPackagePath);
5151
PackageMeta dartdocMeta = new PackageMeta.fromFilename(dartdocBin);
52-
expect(result.stdout, equals('dartdoc version: ${dartdocMeta.version}\n'));
52+
expect(
53+
result.stdout, equals('dartdoc version: ${dartdocMeta.version}\n'));
5354
});
5455

5556
test("Validate html output of test_package", () async {

test/dartdoc_test.dart

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,24 @@ void main() {
2828
delete(tempDir);
2929
});
3030

31-
Future<DartdocGeneratorOptionContext> generatorContextFromArgvTemp(List<String> argv) async {
31+
Future<DartdocGeneratorOptionContext> generatorContextFromArgvTemp(
32+
List<String> argv) async {
3233
return await generatorContextFromArgv(argv..addAll(outputParam));
3334
}
3435

36+
test('package without version produces valid semver in docs', () async {
37+
Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(
38+
await generatorContextFromArgvTemp(
39+
['--input', testPackageMinimumDir.path]));
40+
DartdocResults results = await dartdoc.generateDocs();
41+
PackageGraph p = results.packageGraph;
42+
assert(p.version == '0.0.0-unknown');
43+
});
44+
3545
test('basic interlinking test', () async {
36-
Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(await generatorContextFromArgvTemp(
37-
['--input', testPackageDir.path, '--link-to-remote']));
46+
Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(
47+
await generatorContextFromArgvTemp(
48+
['--input', testPackageDir.path, '--link-to-remote']));
3849
DartdocResults results = await dartdoc.generateDocs();
3950
PackageGraph p = results.packageGraph;
4051
Package tuple = p.publicPackages.firstWhere((p) => p.name == 'tuple');
@@ -60,7 +71,6 @@ void main() {
6071
contains(stringLink));
6172
});
6273

63-
6474
test('generate docs for ${pathLib.basename(testPackageDir.path)} works',
6575
() async {
6676
Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(
@@ -79,7 +89,8 @@ void main() {
7989
test('generate docs for ${pathLib.basename(testPackageBadDir.path)} fails',
8090
() async {
8191
Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(
82-
await generatorContextFromArgvTemp(['--input', testPackageBadDir.path]));
92+
await generatorContextFromArgvTemp(
93+
['--input', testPackageBadDir.path]));
8394

8495
try {
8596
await dartdoc.generateDocs();
@@ -91,7 +102,8 @@ void main() {
91102

92103
test('generate docs for a package that does not have a readme', () async {
93104
Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(
94-
await generatorContextFromArgvTemp(['--input', testPackageWithNoReadme.path]));
105+
await generatorContextFromArgvTemp(
106+
['--input', testPackageWithNoReadme.path]));
95107

96108
DartdocResults results = await dartdoc.generateDocs();
97109
expect(results.packageGraph, isNotNull);
@@ -104,8 +116,9 @@ void main() {
104116
});
105117

106118
test('generate docs including a single library', () async {
107-
Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(await generatorContextFromArgvTemp(
108-
['--input', testPackageDir.path, '--include', 'fake']));
119+
Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(
120+
await generatorContextFromArgvTemp(
121+
['--input', testPackageDir.path, '--include', 'fake']));
109122

110123
DartdocResults results = await dartdoc.generateDocs();
111124
expect(results.packageGraph, isNotNull);
@@ -118,8 +131,9 @@ void main() {
118131
});
119132

120133
test('generate docs excluding a single library', () async {
121-
Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(await generatorContextFromArgvTemp(
122-
['--input', testPackageDir.path, '--exclude', 'fake']));
134+
Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(
135+
await generatorContextFromArgvTemp(
136+
['--input', testPackageDir.path, '--exclude', 'fake']));
123137

124138
DartdocResults results = await dartdoc.generateDocs();
125139
expect(results.packageGraph, isNotNull);
@@ -135,8 +149,9 @@ void main() {
135149
test('generate docs for package with embedder yaml', () async {
136150
PackageMeta meta = new PackageMeta.fromDir(testPackageWithEmbedderYaml);
137151
if (meta.needsPubGet) meta.runPubGet();
138-
Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(await generatorContextFromArgvTemp(
139-
['--input', testPackageWithEmbedderYaml.path]));
152+
Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(
153+
await generatorContextFromArgvTemp(
154+
['--input', testPackageWithEmbedderYaml.path]));
140155

141156
DartdocResults results = await dartdoc.generateDocs();
142157
expect(results.packageGraph, isNotNull);

test/src/utils.dart

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,23 @@ PackageGraph testPackageGraphSdk;
2121

2222
final Directory testPackageBadDir = new Directory('testing/test_package_bad');
2323
final Directory testPackageDir = new Directory('testing/test_package');
24+
final Directory testPackageMinimumDir =
25+
new Directory('testing/test_package_minimum');
2426
final Directory testPackageWithEmbedderYaml =
2527
new Directory('testing/test_package_embedder_yaml');
2628
final Directory testPackageWithNoReadme =
2729
new Directory('testing/test_package_small');
2830

29-
3031
/// Convenience factory to build a [DartdocGeneratorOptionContext] and associate
3132
/// it with a [DartdocOptionSet] based on the current working directory.
32-
Future<DartdocGeneratorOptionContext> generatorContextFromArgv(List<String> argv) async {
33-
DartdocOptionSet optionSet = await DartdocOptionSet
34-
.fromOptionGenerators('dartdoc', [createDartdocOptions, createGeneratorOptions]);
33+
Future<DartdocGeneratorOptionContext> generatorContextFromArgv(
34+
List<String> argv) async {
35+
DartdocOptionSet optionSet = await DartdocOptionSet.fromOptionGenerators(
36+
'dartdoc', [createDartdocOptions, createGeneratorOptions]);
3537
optionSet.parseArguments(argv);
3638
return new DartdocGeneratorOptionContext(optionSet, Directory.current);
3739
}
3840

39-
4041
/// Convenience factory to build a [DartdocOptionContext] and associate it with a
4142
/// [DartdocOptionSet] based on the current working directory.
4243
Future<DartdocOptionContext> contextFromArgv(List<String> argv) async {
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
doc/api/
2+
pubspec.lock
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
library small;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
name: test_package_minimal

tool/grind.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -732,9 +732,8 @@ testPreviewDart2() async {
732732
List<String> parameters = ['--preview-dart-2', '--enable-asserts'];
733733

734734
// sdk#32901 is really bad on Windows.
735-
for (File dartFile in testFiles
736-
.where((f) =>
737-
!f.path.endsWith('html_generator_test.dart') && !Platform.isWindows)) {
735+
for (File dartFile in testFiles.where((f) =>
736+
!f.path.endsWith('html_generator_test.dart') && !Platform.isWindows)) {
738737
// absolute path to work around dart-lang/sdk#32901
739738
await testFutures.addFuture(new SubprocessLauncher(
740739
'dart2-${pathLib.basename(dartFile.absolute.path)}')

0 commit comments

Comments
 (0)