Skip to content

Commit 7957fd5

Browse files
authored
Transform dartdoc_test into an integration test (#1694)
* 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
1 parent ec3269e commit 7957fd5

File tree

8 files changed

+46
-28
lines changed

8 files changed

+46
-28
lines changed

bin/dartdoc.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ import 'package:dartdoc/src/html/html_generator.dart';
1313
import 'package:dartdoc/src/logging.dart';
1414
import 'package:stack_trace/stack_trace.dart';
1515

16-
class DartdocProgramOptionContext extends DartdocOptionContext
17-
with LoggingContext, GeneratorContext {
16+
class DartdocProgramOptionContext extends DartdocGeneratorOptionContext
17+
with LoggingContext {
1818
DartdocProgramOptionContext(DartdocOptionSet optionSet, Directory dir)
1919
: super(optionSet, dir);
2020

lib/dartdoc.dart

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,14 @@ const String name = 'dartdoc';
3939
// Update when pubspec version changes.
4040
const String dartdocVersion = '0.19.1-dev';
4141

42+
/// Helper class to initialize the default generators since they require
43+
/// GeneratorContext.
44+
class DartdocGeneratorOptionContext extends DartdocOptionContext
45+
with GeneratorContext {
46+
DartdocGeneratorOptionContext(DartdocOptionSet optionSet, Directory dir)
47+
: super(optionSet, dir);
48+
}
49+
4250
/// Generates Dart documentation for all public Dart libraries in the given
4351
/// directory.
4452
class Dartdoc extends PackageBuilder {
@@ -57,9 +65,9 @@ class Dartdoc extends PackageBuilder {
5765

5866
/// An asynchronous factory method that builds Dartdoc's file writers
5967
/// and returns a Dartdoc object with them.
60-
static withDefaultGenerators(DartdocOptionContext config) async {
68+
static withDefaultGenerators(DartdocGeneratorOptionContext config) async {
6169
List<Generator> generators =
62-
await initGenerators(config as GeneratorContext);
70+
await initGenerators(config);
6371
return new Dartdoc._(config, generators);
6472
}
6573

@@ -294,7 +302,7 @@ class Dartdoc extends PackageBuilder {
294302
// The package index isn't supposed to be in the search, so suppress the
295303
// warning.
296304
found.add(indexPath);
297-
for (Map<String, String> entry in jsonData) {
305+
for (Map<String, dynamic> entry in jsonData) {
298306
if (entry.containsKey('href')) {
299307
String entryPath = pathLib.joinAll([origin, entry['href']]);
300308
if (!visited.contains(entryPath)) {

lib/src/model.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1320,7 +1320,7 @@ class EnumField extends Field {
13201320
}
13211321

13221322
@override
1323-
List<EnumField> get documentationFrom {
1323+
List<ModelElement> get documentationFrom {
13241324
if (name == 'values' && name == 'index') return [this];
13251325
return super.documentationFrom;
13261326
}

pubspec.lock

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ packages:
105105
name: grinder
106106
url: "https://pub.dartlang.org"
107107
source: hosted
108-
version: "0.8.1"
108+
version: "0.8.2"
109109
html:
110110
dependency: "direct main"
111111
description:
@@ -203,7 +203,7 @@ packages:
203203
name: mustache4dart
204204
url: "https://pub.dartlang.org"
205205
source: hosted
206-
version: "2.1.1"
206+
version: "2.1.2"
207207
node_preamble:
208208
dependency: transitive
209209
description:
@@ -401,4 +401,4 @@ packages:
401401
source: hosted
402402
version: "2.1.13"
403403
sdks:
404-
dart: ">=2.0.0-dev.23.0 <=2.0.0-dev.54.0"
404+
dart: ">=2.0.0-dev.23.0 <=2.0.0-dev.55.0"

pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ dependencies:
1717
http_parser: '>=3.0.3 <4.0.0'
1818
logging: ^0.11.3+1
1919
markdown: ^2.0.0
20-
mustache4dart: ^2.1.1
20+
mustache4dart: ^2.1.2
2121
package_config: '>=0.1.5 <2.0.0'
2222
path: ^1.3.0
2323
pub_semver: ^1.3.7
@@ -28,7 +28,7 @@ dependencies:
2828
yaml: ^2.1.0
2929
dev_dependencies:
3030
dhttpd: ^2.0.0
31-
grinder: ^0.8.1
31+
grinder: ^0.8.2
3232
io: ^0.3.0
3333
http: ^0.11.0
3434
meta: ^1.0.0

test/dartdoc_test.dart

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import 'package:test/test.dart';
1616
import 'src/utils.dart';
1717

1818
void main() {
19-
group('dartdoc without generators', () {
19+
group('dartdoc with generators', () {
2020
Directory tempDir;
2121
List<String> outputParam;
2222
setUp(() {
@@ -28,12 +28,12 @@ void main() {
2828
delete(tempDir);
2929
});
3030

31-
Future<DartdocOptionContext> contextFromArgvTemp(List<String> argv) async {
32-
return await contextFromArgv(argv..addAll(outputParam));
31+
Future<DartdocGeneratorOptionContext> generatorContextFromArgvTemp(List<String> argv) async {
32+
return await generatorContextFromArgv(argv..addAll(outputParam));
3333
}
3434

3535
test('basic interlinking test', () async {
36-
Dartdoc dartdoc = new Dartdoc.withoutGenerators(await contextFromArgvTemp(
36+
Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(await generatorContextFromArgvTemp(
3737
['--input', testPackageDir.path, '--link-to-remote']));
3838
DartdocResults results = await dartdoc.generateDocs();
3939
PackageGraph p = results.packageGraph;
@@ -60,10 +60,11 @@ void main() {
6060
contains(stringLink));
6161
});
6262

63+
6364
test('generate docs for ${pathLib.basename(testPackageDir.path)} works',
6465
() async {
65-
Dartdoc dartdoc = new Dartdoc.withoutGenerators(
66-
await contextFromArgvTemp(['--input', testPackageDir.path]));
66+
Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(
67+
await generatorContextFromArgvTemp(['--input', testPackageDir.path]));
6768

6869
DartdocResults results = await dartdoc.generateDocs();
6970
expect(results.packageGraph, isNotNull);
@@ -77,8 +78,8 @@ void main() {
7778

7879
test('generate docs for ${pathLib.basename(testPackageBadDir.path)} fails',
7980
() async {
80-
Dartdoc dartdoc = new Dartdoc.withoutGenerators(
81-
await contextFromArgvTemp(['--input', testPackageBadDir.path]));
81+
Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(
82+
await generatorContextFromArgvTemp(['--input', testPackageBadDir.path]));
8283

8384
try {
8485
await dartdoc.generateDocs();
@@ -89,8 +90,8 @@ void main() {
8990
});
9091

9192
test('generate docs for a package that does not have a readme', () async {
92-
Dartdoc dartdoc = new Dartdoc.withoutGenerators(
93-
await contextFromArgvTemp(['--input', testPackageWithNoReadme.path]));
93+
Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(
94+
await generatorContextFromArgvTemp(['--input', testPackageWithNoReadme.path]));
9495

9596
DartdocResults results = await dartdoc.generateDocs();
9697
expect(results.packageGraph, isNotNull);
@@ -103,7 +104,7 @@ void main() {
103104
});
104105

105106
test('generate docs including a single library', () async {
106-
Dartdoc dartdoc = new Dartdoc.withoutGenerators(await contextFromArgvTemp(
107+
Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(await generatorContextFromArgvTemp(
107108
['--input', testPackageDir.path, '--include', 'fake']));
108109

109110
DartdocResults results = await dartdoc.generateDocs();
@@ -117,7 +118,7 @@ void main() {
117118
});
118119

119120
test('generate docs excluding a single library', () async {
120-
Dartdoc dartdoc = new Dartdoc.withoutGenerators(await contextFromArgvTemp(
121+
Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(await generatorContextFromArgvTemp(
121122
['--input', testPackageDir.path, '--exclude', 'fake']));
122123

123124
DartdocResults results = await dartdoc.generateDocs();
@@ -134,7 +135,7 @@ void main() {
134135
test('generate docs for package with embedder yaml', () async {
135136
PackageMeta meta = new PackageMeta.fromDir(testPackageWithEmbedderYaml);
136137
if (meta.needsPubGet) meta.runPubGet();
137-
Dartdoc dartdoc = new Dartdoc.withoutGenerators(await contextFromArgvTemp(
138+
Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(await generatorContextFromArgvTemp(
138139
['--input', testPackageWithEmbedderYaml.path]));
139140

140141
DartdocResults results = await dartdoc.generateDocs();

test/src/utils.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'dart:async';
88
import 'dart:io';
99

1010
import 'package:dartdoc/dartdoc.dart';
11+
import 'package:dartdoc/src/html/html_generator.dart';
1112
import 'package:dartdoc/src/model.dart';
1213
import 'package:dartdoc/src/package_meta.dart';
1314

@@ -25,6 +26,17 @@ final Directory testPackageWithEmbedderYaml =
2526
final Directory testPackageWithNoReadme =
2627
new Directory('testing/test_package_small');
2728

29+
30+
/// Convenience factory to build a [DartdocGeneratorOptionContext] and associate
31+
/// 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]);
35+
optionSet.parseArguments(argv);
36+
return new DartdocGeneratorOptionContext(optionSet, Directory.current);
37+
}
38+
39+
2840
/// Convenience factory to build a [DartdocOptionContext] and associate it with a
2941
/// [DartdocOptionSet] based on the current working directory.
3042
Future<DartdocOptionContext> contextFromArgv(List<String> argv) async {

tool/grind.dart

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -734,10 +734,7 @@ testPreviewDart2() async {
734734
// sdk#32901 is really bad on Windows.
735735
for (File dartFile in testFiles
736736
.where((f) =>
737-
!f.path.endsWith('html_generator_test.dart') && !Platform.isWindows)
738-
.where((f) =>
739-
// grinder stopped working with preview-dart-2.
740-
!f.path.endsWith('grind_test.dart'))) {
737+
!f.path.endsWith('html_generator_test.dart') && !Platform.isWindows)) {
741738
// absolute path to work around dart-lang/sdk#32901
742739
await testFutures.addFuture(new SubprocessLauncher(
743740
'dart2-${pathLib.basename(dartFile.absolute.path)}')

0 commit comments

Comments
 (0)