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
diff --git a/bin/dartdoc.dart b/bin/dartdoc.dart
index 9814648..2b76997 100644
--- a/bin/dartdoc.dart
+++ b/bin/dartdoc.dart
@@ -13,8 +13,8 @@
import 'package:dartdoc/src/logging.dart';
import 'package:stack_trace/stack_trace.dart';
-class DartdocProgramOptionContext extends DartdocOptionContext
- with LoggingContext, GeneratorContext {
+class DartdocProgramOptionContext extends DartdocGeneratorOptionContext
+ with LoggingContext {
DartdocProgramOptionContext(DartdocOptionSet optionSet, Directory dir)
: super(optionSet, dir);
diff --git a/lib/dartdoc.dart b/lib/dartdoc.dart
index 66bb355..df2e0ba 100644
--- a/lib/dartdoc.dart
+++ b/lib/dartdoc.dart
@@ -39,6 +39,14 @@
// Update when pubspec version changes.
const String dartdocVersion = '0.19.1-dev';
+/// Helper class to initialize the default generators since they require
+/// GeneratorContext.
+class DartdocGeneratorOptionContext extends DartdocOptionContext
+ with GeneratorContext {
+ DartdocGeneratorOptionContext(DartdocOptionSet optionSet, Directory dir)
+ : super(optionSet, dir);
+}
+
/// Generates Dart documentation for all public Dart libraries in the given
/// directory.
class Dartdoc extends PackageBuilder {
@@ -57,9 +65,9 @@
/// An asynchronous factory method that builds Dartdoc's file writers
/// and returns a Dartdoc object with them.
- static withDefaultGenerators(DartdocOptionContext config) async {
+ static withDefaultGenerators(DartdocGeneratorOptionContext config) async {
List<Generator> generators =
- await initGenerators(config as GeneratorContext);
+ await initGenerators(config);
return new Dartdoc._(config, generators);
}
@@ -294,7 +302,7 @@
// The package index isn't supposed to be in the search, so suppress the
// warning.
found.add(indexPath);
- for (Map<String, String> entry in jsonData) {
+ for (Map<String, dynamic> entry in jsonData) {
if (entry.containsKey('href')) {
String entryPath = pathLib.joinAll([origin, entry['href']]);
if (!visited.contains(entryPath)) {
diff --git a/lib/src/model.dart b/lib/src/model.dart
index 3e4c982..ffb2aef 100644
--- a/lib/src/model.dart
+++ b/lib/src/model.dart
@@ -1320,7 +1320,7 @@
}
@override
- List<EnumField> get documentationFrom {
+ List<ModelElement> get documentationFrom {
if (name == 'values' && name == 'index') return [this];
return super.documentationFrom;
}
diff --git a/pubspec.lock b/pubspec.lock
index 00dac62..9f4ceba 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -105,7 +105,7 @@
name: grinder
url: "https://pub.dartlang.org"
source: hosted
- version: "0.8.1"
+ version: "0.8.2"
html:
dependency: "direct main"
description:
@@ -203,7 +203,7 @@
name: mustache4dart
url: "https://pub.dartlang.org"
source: hosted
- version: "2.1.1"
+ version: "2.1.2"
node_preamble:
dependency: transitive
description:
@@ -401,4 +401,4 @@
source: hosted
version: "2.1.13"
sdks:
- dart: ">=2.0.0-dev.23.0 <=2.0.0-dev.54.0"
+ dart: ">=2.0.0-dev.23.0 <=2.0.0-dev.55.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index ac12668..ecbab4f 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -17,7 +17,7 @@
http_parser: '>=3.0.3 <4.0.0'
logging: ^0.11.3+1
markdown: ^2.0.0
- mustache4dart: ^2.1.1
+ mustache4dart: ^2.1.2
package_config: '>=0.1.5 <2.0.0'
path: ^1.3.0
pub_semver: ^1.3.7
@@ -28,7 +28,7 @@
yaml: ^2.1.0
dev_dependencies:
dhttpd: ^2.0.0
- grinder: ^0.8.1
+ grinder: ^0.8.2
io: ^0.3.0
http: ^0.11.0
meta: ^1.0.0
diff --git a/test/dartdoc_test.dart b/test/dartdoc_test.dart
index 6499e38..f03f0a6 100644
--- a/test/dartdoc_test.dart
+++ b/test/dartdoc_test.dart
@@ -16,7 +16,7 @@
import 'src/utils.dart';
void main() {
- group('dartdoc without generators', () {
+ group('dartdoc with generators', () {
Directory tempDir;
List<String> outputParam;
setUp(() {
@@ -28,12 +28,12 @@
delete(tempDir);
});
- Future<DartdocOptionContext> contextFromArgvTemp(List<String> argv) async {
- return await contextFromArgv(argv..addAll(outputParam));
+ Future<DartdocGeneratorOptionContext> generatorContextFromArgvTemp(List<String> argv) async {
+ return await generatorContextFromArgv(argv..addAll(outputParam));
}
test('basic interlinking test', () async {
- Dartdoc dartdoc = new Dartdoc.withoutGenerators(await contextFromArgvTemp(
+ Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(await generatorContextFromArgvTemp(
['--input', testPackageDir.path, '--link-to-remote']));
DartdocResults results = await dartdoc.generateDocs();
PackageGraph p = results.packageGraph;
@@ -60,10 +60,11 @@
contains(stringLink));
});
+
test('generate docs for ${pathLib.basename(testPackageDir.path)} works',
() async {
- Dartdoc dartdoc = new Dartdoc.withoutGenerators(
- await contextFromArgvTemp(['--input', testPackageDir.path]));
+ Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(
+ await generatorContextFromArgvTemp(['--input', testPackageDir.path]));
DartdocResults results = await dartdoc.generateDocs();
expect(results.packageGraph, isNotNull);
@@ -77,8 +78,8 @@
test('generate docs for ${pathLib.basename(testPackageBadDir.path)} fails',
() async {
- Dartdoc dartdoc = new Dartdoc.withoutGenerators(
- await contextFromArgvTemp(['--input', testPackageBadDir.path]));
+ Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(
+ await generatorContextFromArgvTemp(['--input', testPackageBadDir.path]));
try {
await dartdoc.generateDocs();
@@ -89,8 +90,8 @@
});
test('generate docs for a package that does not have a readme', () async {
- Dartdoc dartdoc = new Dartdoc.withoutGenerators(
- await contextFromArgvTemp(['--input', testPackageWithNoReadme.path]));
+ Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(
+ await generatorContextFromArgvTemp(['--input', testPackageWithNoReadme.path]));
DartdocResults results = await dartdoc.generateDocs();
expect(results.packageGraph, isNotNull);
@@ -103,7 +104,7 @@
});
test('generate docs including a single library', () async {
- Dartdoc dartdoc = new Dartdoc.withoutGenerators(await contextFromArgvTemp(
+ Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(await generatorContextFromArgvTemp(
['--input', testPackageDir.path, '--include', 'fake']));
DartdocResults results = await dartdoc.generateDocs();
@@ -117,7 +118,7 @@
});
test('generate docs excluding a single library', () async {
- Dartdoc dartdoc = new Dartdoc.withoutGenerators(await contextFromArgvTemp(
+ Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(await generatorContextFromArgvTemp(
['--input', testPackageDir.path, '--exclude', 'fake']));
DartdocResults results = await dartdoc.generateDocs();
@@ -134,7 +135,7 @@
test('generate docs for package with embedder yaml', () async {
PackageMeta meta = new PackageMeta.fromDir(testPackageWithEmbedderYaml);
if (meta.needsPubGet) meta.runPubGet();
- Dartdoc dartdoc = new Dartdoc.withoutGenerators(await contextFromArgvTemp(
+ Dartdoc dartdoc = await Dartdoc.withDefaultGenerators(await generatorContextFromArgvTemp(
['--input', testPackageWithEmbedderYaml.path]));
DartdocResults results = await dartdoc.generateDocs();
diff --git a/test/src/utils.dart b/test/src/utils.dart
index 482ee9f..993d0c0 100644
--- a/test/src/utils.dart
+++ b/test/src/utils.dart
@@ -8,6 +8,7 @@
import 'dart:io';
import 'package:dartdoc/dartdoc.dart';
+import 'package:dartdoc/src/html/html_generator.dart';
import 'package:dartdoc/src/model.dart';
import 'package:dartdoc/src/package_meta.dart';
@@ -25,6 +26,17 @@
final Directory testPackageWithNoReadme =
new Directory('testing/test_package_small');
+
+/// Convenience factory to build a [DartdocGeneratorOptionContext] and associate
+/// it with a [DartdocOptionSet] based on the current working directory.
+Future<DartdocGeneratorOptionContext> generatorContextFromArgv(List<String> argv) async {
+ DartdocOptionSet optionSet = await DartdocOptionSet
+ .fromOptionGenerators('dartdoc', [createDartdocOptions, createGeneratorOptions]);
+ optionSet.parseArguments(argv);
+ return new DartdocGeneratorOptionContext(optionSet, Directory.current);
+}
+
+
/// Convenience factory to build a [DartdocOptionContext] and associate it with a
/// [DartdocOptionSet] based on the current working directory.
Future<DartdocOptionContext> contextFromArgv(List<String> argv) async {
diff --git a/tool/grind.dart b/tool/grind.dart
index d38f124..2d38b54 100644
--- a/tool/grind.dart
+++ b/tool/grind.dart
@@ -734,10 +734,7 @@
// sdk#32901 is really bad on Windows.
for (File dartFile in testFiles
.where((f) =>
- !f.path.endsWith('html_generator_test.dart') && !Platform.isWindows)
- .where((f) =>
- // grinder stopped working with preview-dart-2.
- !f.path.endsWith('grind_test.dart'))) {
+ !f.path.endsWith('html_generator_test.dart') && !Platform.isWindows)) {
// absolute path to work around dart-lang/sdk#32901
await testFutures.addFuture(new SubprocessLauncher(
'dart2-${pathLib.basename(dartFile.absolute.path)}')