blob: 200266027688c1b172bf750748247632fc672779 [file] [log] [blame]
// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
library test_utils;
import 'dart:async';
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';
Directory sdkDir;
PackageMeta sdkPackageMeta;
PackageGraph testPackageGraph;
PackageGraph testPackageGraphGinormous;
PackageGraph testPackageGraphSmall;
PackageGraph testPackageGraphErrors;
PackageGraph testPackageGraphSdk;
final Directory testPackageBadDir = new Directory('testing/test_package_bad');
final Directory testPackageDir = new Directory('testing/test_package');
final Directory testPackageMinimumDir =
new Directory('testing/test_package_minimum');
final Directory testPackageWithEmbedderYaml =
new Directory('testing/test_package_embedder_yaml');
final Directory testPackageWithNoReadme =
new Directory('testing/test_package_small');
final Directory testPackageIncludeExclude =
new Directory('testing/test_package_include_exclude');
final Directory testPackageImportExportError =
new Directory('testing/test_package_import_export_error');
final Directory testPackageOptions =
new Directory('testing/test_package_options');
final Directory testPackageOptionsImporter =
new Directory('testing/test_package_options_importer');
final Directory testPackageToolError =
new Directory('testing/test_package_tool_error');
/// Convenience factory to build a [DartdocGeneratorOptionContext] and associate
/// it with a [DartdocOptionSet] based on the current working directory and/or
/// the '--input' flag.
Future<DartdocGeneratorOptionContext> generatorContextFromArgv(
List<String> argv) async {
DartdocOptionSet optionSet = await DartdocOptionSet.fromOptionGenerators(
'dartdoc', [createDartdocOptions, createGeneratorOptions]);
optionSet.parseArguments(argv);
return new DartdocGeneratorOptionContext(optionSet, null);
}
/// 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 {
DartdocOptionSet optionSet = await DartdocOptionSet.fromOptionGenerators(
'dartdoc', [createDartdocOptions]);
optionSet.parseArguments(argv);
return new DartdocOptionContext(optionSet, Directory.current);
}
void delete(Directory dir) {
if (dir.existsSync()) dir.deleteSync(recursive: true);
}
void init({List<String> additionalArguments}) async {
sdkDir = defaultSdkDir;
sdkPackageMeta = new PackageMeta.fromDir(sdkDir);
additionalArguments ??= <String>[];
testPackageGraph = await bootBasicPackage(
'testing/test_package', ['css', 'code_in_comments', 'excluded'],
additionalArguments: additionalArguments);
testPackageGraphGinormous = await bootBasicPackage(
'testing/test_package', ['css', 'code_in_commnets', 'excluded'],
additionalArguments:
additionalArguments + ['--auto-include-dependencies']);
testPackageGraphSmall = await bootBasicPackage(
'testing/test_package_small', [],
additionalArguments: additionalArguments);
testPackageGraphErrors = await bootBasicPackage(
'testing/test_package_doc_errors',
['css', 'code_in_comments', 'excluded'],
additionalArguments: additionalArguments);
testPackageGraphSdk = await bootSdkPackage();
}
Future<PackageGraph> bootSdkPackage() async {
return new PackageBuilder(await contextFromArgv(['--input', sdkDir.path]))
.buildPackageGraph();
}
Future<PackageGraph> bootBasicPackage(
String dirPath, List<String> excludeLibraries,
{List<String> additionalArguments}) async {
Directory dir = new Directory(dirPath);
additionalArguments ??= <String>[];
return new PackageBuilder(await contextFromArgv([
'--input',
dir.path,
'--sdk-dir',
sdkDir.path,
'--exclude',
excludeLibraries.join(','),
] +
additionalArguments))
.buildPackageGraph();
}