Skip to content

Commit

Permalink
Move tests around for 2.13 stable (#2650)
Browse files Browse the repository at this point in the history
* Move tests around for 2.13 stable

* dartfmt

* Fix a template...
  • Loading branch information
jcollins-g committed May 19, 2021
1 parent 34d371f commit b8958f9
Show file tree
Hide file tree
Showing 6 changed files with 76 additions and 80 deletions.
2 changes: 1 addition & 1 deletion lib/templates/md/_type.md
@@ -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
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
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
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
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
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'

0 comments on commit b8958f9

Please sign in to comment.