Skip to content

Move tests around for 2.13 stable #2650

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
May 19, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/templates/md/_type.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
##### {{{linkedName}}}{{{linkedGenericParameters}}}({{{ linkedParamsNoMetadata }}}) {{{ modelType.linkedName }}}
##### {{{linkedName}}}{{{linkedGenericParameters}}} = {{{ modelType.linkedName }}}
{{>categorization}}

{{{ oneLineDoc }}} {{{ extendedDocLink }}} {{!two spaces intentional}}
Expand Down
75 changes: 0 additions & 75 deletions test/end2end/model_special_cases_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ library dartdoc.model_special_cases_test;
import 'dart:io';

import 'package:async/async.dart';
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/model/model.dart';
import 'package:dartdoc/src/package_config_provider.dart';
import 'package:dartdoc/src/package_meta.dart';
Expand Down Expand Up @@ -74,8 +73,6 @@ void main() {
// ExperimentalFeature.experimentalReleaseVersion as these are set to null
// even when partial analyzer implementations are available, and are often
// set too high after release.
final _generalizedTypedefsAllowed =
VersionRange(min: Version.parse('2.13.0-0'), includeMin: true);
final _genericMetadataAllowed =
VersionRange(min: Version.parse('2.14.0-0'), includeMin: true);
final _tripleShiftAllowed =
Expand Down Expand Up @@ -189,78 +186,6 @@ void main() {
everyElement(contains(ab0)));
});
}, skip: !_genericMetadataAllowed.allows(_platformVersion));

group('generalized typedefs', () {
Library generalizedTypedefs;
Typedef T0, T1, T2, T3, T4, T5, T6, T7;
Class C, C2;

setUpAll(() async {
generalizedTypedefs = (await _testPackageGraphExperiments)
.libraries
.firstWhere((l) => l.name == 'generalized_typedefs');
T0 = generalizedTypedefs.typedefs.firstWhere((a) => a.name == 'T0');
T1 = generalizedTypedefs.typedefs.firstWhere((a) => a.name == 'T1');
T2 = generalizedTypedefs.typedefs.firstWhere((a) => a.name == 'T2');
T3 = generalizedTypedefs.typedefs.firstWhere((a) => a.name == 'T3');
T4 = generalizedTypedefs.typedefs.firstWhere((a) => a.name == 'T4');
T5 = generalizedTypedefs.typedefs.firstWhere((a) => a.name == 'T5');
T6 = generalizedTypedefs.typedefs.firstWhere((a) => a.name == 'T6');
T7 = generalizedTypedefs.typedefs.firstWhere((a) => a.name == 'T7');
C = generalizedTypedefs.classes.firstWhere((c) => c.name == 'C');
C2 = generalizedTypedefs.classes.firstWhere((c) => c.name == 'C2');
});

void expectTypedefs(Typedef t, String modelTypeToString,
Iterable<String> genericParameters) {
expect(t.modelType.toString(), equals(modelTypeToString));
expect(t.genericTypeParameters.map((p) => p.toString()),
orderedEquals(genericParameters));
}

void expectAliasedTypeName(AliasedElementType n, expected) {
expect(n.aliasElement.name, expected);
}

test('typedef references display aliases', () {
var g = C.instanceMethods.firstWhere((m) => m.name == 'g');

var c = C2.allFields.firstWhere((f) => f.name == 'c');
var d = C2.instanceMethods.firstWhere((f) => f.name == 'd');

expectAliasedTypeName(c.modelType, equals('T1'));
expectAliasedTypeName(d.modelType.returnType, equals('T2'));
expectAliasedTypeName(d.parameters.first.modelType, equals('T3'));
expectAliasedTypeName(d.parameters.last.modelType, equals('T4'));

expectAliasedTypeName(g.modelType.returnType, equals('T1'));
expectAliasedTypeName(
g.modelType.parameters.first.modelType, equals('T2'));
expectAliasedTypeName(
g.modelType.parameters.last.modelType, equals('T3'));
});

test('typedef references to special types work', () {
var a = generalizedTypedefs.properties.firstWhere((p) => p.name == 'a');
var b = C2.allFields.firstWhere((f) => f.name == 'b');
var f = C.allFields.firstWhere((f) => f.name == 'f');
expectAliasedTypeName(a.modelType, equals('T0'));
expectAliasedTypeName(b.modelType, equals('T0'));
expectAliasedTypeName(f.modelType, equals('T0'));
}, skip: 'dart-lang/sdk#45291');

test('basic non-function typedefs work', () {
expectTypedefs(T0, 'void', []);
expectTypedefs(T1, 'Function', []);
expectTypedefs(T2, 'List<X>', ['out X']);
expectTypedefs(T3, 'Map<X, Y>', ['out X', 'out Y']);
expectTypedefs(T4, 'void Function()', []);
expectTypedefs(T5, 'X Function(X, {X name})', ['inout X']);
expectTypedefs(T6, 'X Function(Y, [Map<Y, Y>])', ['out X', 'in Y']);
expectTypedefs(T7, 'X Function(Y, [Map<Y, Y>])',
['out X extends String', 'in Y extends List<X>']);
});
}, skip: (!_generalizedTypedefsAllowed.allows(_platformVersion)));
});

group('HTML Injection when allowed', () {
Expand Down
71 changes: 71 additions & 0 deletions test/end2end/model_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,77 @@ void main() {
packageGraph.libraries.firstWhere((lib) => lib.name == 'base_class');
});

group('generalized typedefs', () {
Library generalizedTypedefs;
Typedef T0, T1, T2, T3, T4, T5, T6, T7;
Class C, C2;

setUpAll(() {
generalizedTypedefs = packageGraph.libraries
.firstWhere((l) => l.name == 'generalized_typedefs');
T0 = generalizedTypedefs.typedefs.firstWhere((a) => a.name == 'T0');
T1 = generalizedTypedefs.typedefs.firstWhere((a) => a.name == 'T1');
T2 = generalizedTypedefs.typedefs.firstWhere((a) => a.name == 'T2');
T3 = generalizedTypedefs.typedefs.firstWhere((a) => a.name == 'T3');
T4 = generalizedTypedefs.typedefs.firstWhere((a) => a.name == 'T4');
T5 = generalizedTypedefs.typedefs.firstWhere((a) => a.name == 'T5');
T6 = generalizedTypedefs.typedefs.firstWhere((a) => a.name == 'T6');
T7 = generalizedTypedefs.typedefs.firstWhere((a) => a.name == 'T7');
C = generalizedTypedefs.classes.firstWhere((c) => c.name == 'C');
C2 = generalizedTypedefs.classes.firstWhere((c) => c.name == 'C2');
});

void expectTypedefs(Typedef t, String modelTypeToString,
Iterable<String> genericParameters) {
expect(t.modelType.toString(), equals(modelTypeToString));
expect(t.genericTypeParameters.map((p) => p.toString()),
orderedEquals(genericParameters));
}

void expectAliasedTypeName(AliasedElementType n, expected) {
expect(n.aliasElement.name, expected);
}

test('typedef references display aliases', () {
var g = C.instanceMethods.firstWhere((m) => m.name == 'g');

var c = C2.allFields.firstWhere((f) => f.name == 'c');
var d = C2.instanceMethods.firstWhere((f) => f.name == 'd');

expectAliasedTypeName(c.modelType, equals('T1'));
expectAliasedTypeName(d.modelType.returnType, equals('T2'));
expectAliasedTypeName(d.parameters.first.modelType, equals('T3'));
expectAliasedTypeName(d.parameters.last.modelType, equals('T4'));

expectAliasedTypeName(g.modelType.returnType, equals('T1'));
expectAliasedTypeName(
g.modelType.parameters.first.modelType, equals('T2'));
expectAliasedTypeName(
g.modelType.parameters.last.modelType, equals('T3'));
});

test('typedef references to special types work', () {
var a = generalizedTypedefs.properties.firstWhere((p) => p.name == 'a');
var b = C2.allFields.firstWhere((f) => f.name == 'b');
var f = C.allFields.firstWhere((f) => f.name == 'f');
expectAliasedTypeName(a.modelType, equals('T0'));
expectAliasedTypeName(b.modelType, equals('T0'));
expectAliasedTypeName(f.modelType, equals('T0'));
}, skip: 'dart-lang/sdk#45291');

test('basic non-function typedefs work', () {
expectTypedefs(T0, 'void', []);
expectTypedefs(T1, 'Function', []);
expectTypedefs(T2, 'List<X>', ['out X']);
expectTypedefs(T3, 'Map<X, Y>', ['out X', 'out Y']);
expectTypedefs(T4, 'void Function()', []);
expectTypedefs(T5, 'X Function(X, {X name})', ['inout X']);
expectTypedefs(T6, 'X Function(Y, [Map<Y, Y>])', ['out X', 'in Y']);
expectTypedefs(T7, 'X Function(Y, [Map<Y, Y>])',
['out X extends String', 'in Y extends List<X>']);
});
});

group('NNBD cases', () {
Library lateFinalWithoutInitializer,
nullSafetyClassMemberDeclarations,
Expand Down
2 changes: 1 addition & 1 deletion test/src/utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import 'package:dartdoc/src/package_meta.dart';
/// The number of public libraries in testing/test_package, minus 2 for
/// the excluded libraries listed in the initializers for _testPackageGraphMemo
/// and minus 1 for the <nodoc> tag in the 'excluded' library.
const int kTestPackagePublicLibraries = 22;
const int kTestPackagePublicLibraries = 23;

final _resourceProvider = pubPackageMetaProvider.resourceProvider;
final _pathContext = _resourceProvider.pathContext;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ abstract class C extends T8 {

T2 operator +(T2 other) => other;

static final T4 h = (){};
static final T4 h = () {};
static T5<C>? i;

T7<String, List<String>> get j;
Expand All @@ -50,4 +50,4 @@ extension E on T6 {
static T4 f = () {};

T2 myMethod() => [5];
}
}
2 changes: 1 addition & 1 deletion testing/test_package/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ dependencies:
test_package_imported:
path: "../test_package_imported"
environment:
sdk: '>=2.12.0 <3.0.0'
sdk: '>=2.13.0 <3.0.0'