From 962893ca06f103e822f4d7dee92ad53f948b01a2 Mon Sep 17 00:00:00 2001 From: Janice Collins Date: Tue, 18 May 2021 10:50:01 -0700 Subject: [PATCH 1/4] Versionify static assets --- lib/resources/script.js | 5 +++++ lib/resources/styles.css | 5 +++++ lib/templates/html/_footer.html | 5 +++-- lib/templates/html/_head.html | 7 ++++--- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/lib/resources/script.js b/lib/resources/script.js index 190a000f17..e88f030646 100644 --- a/lib/resources/script.js +++ b/lib/resources/script.js @@ -1,3 +1,8 @@ +/* + * + * Update script.js versions in all lib/templates when modifying this file! + * + */ function initSideNav() { const leftNavToggle = document.getElementById('sidenav-left-toggle'); const leftDrawer = document.querySelector('.sidebar-offcanvas-left'); diff --git a/lib/resources/styles.css b/lib/resources/styles.css index ece7755808..7ea04df379 100644 --- a/lib/resources/styles.css +++ b/lib/resources/styles.css @@ -1,3 +1,8 @@ +/* + * + * Update styles.css versions in all lib/templates when modifying this file! + * + */ /* Palette generated by Material Palette - materialpalette.com/blue/cyan */ diff --git a/lib/templates/html/_footer.html b/lib/templates/html/_footer.html index 906ebeb633..34989bb9b1 100644 --- a/lib/templates/html/_footer.html +++ b/lib/templates/html/_footer.html @@ -12,8 +12,9 @@ {{! TODO(jdkoren): unwrap ^useBaseHref sections when the option is removed.}} - - +{{! **Update versions for static assets when changed to force browsers to refresh them.** }} + + {{{ customFooter }}} diff --git a/lib/templates/html/_head.html b/lib/templates/html/_head.html index 17039906b7..e6c769f45f 100644 --- a/lib/templates/html/_head.html +++ b/lib/templates/html/_head.html @@ -24,9 +24,10 @@ - - - + {{! **Update versions for static assets when changed to force browsers to refresh them.** }} + + + {{{ customHeader }}} From 0e97129f0a9c56c99f65ed4efcb91d152d21ba40 Mon Sep 17 00:00:00 2001 From: Janice Collins Date: Tue, 18 May 2021 15:42:18 -0700 Subject: [PATCH 2/4] Move tests around for 2.13 stable --- test/end2end/model_special_cases_test.dart | 73 ------------------- test/end2end/model_test.dart | 72 ++++++++++++++++++ test/src/utils.dart | 2 +- .../lib/features}/generalized_typedefs.dart | 0 testing/test_package/pubspec.yaml | 2 +- 5 files changed, 74 insertions(+), 75 deletions(-) rename testing/{test_package_experiments/lib => test_package/lib/features}/generalized_typedefs.dart (100%) diff --git a/test/end2end/model_special_cases_test.dart b/test/end2end/model_special_cases_test.dart index 340db61f24..ee4aa98064 100644 --- a/test/end2end/model_special_cases_test.dart +++ b/test/end2end/model_special_cases_test.dart @@ -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'; @@ -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 = @@ -190,77 +187,7 @@ void main() { }); }, 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 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', ['out X']); - expectTypedefs(T3, 'Map', ['out X', 'out Y']); - expectTypedefs(T4, 'void Function()', []); - expectTypedefs(T5, 'X Function(X, {X name})', ['inout X']); - expectTypedefs(T6, 'X Function(Y, [Map])', ['out X', 'in Y']); - expectTypedefs(T7, 'X Function(Y, [Map])', - ['out X extends String', 'in Y extends List']); - }); - }, skip: (!_generalizedTypedefsAllowed.allows(_platformVersion))); }); group('HTML Injection when allowed', () { diff --git a/test/end2end/model_test.dart b/test/end2end/model_test.dart index 230e76303e..dc033b8f87 100644 --- a/test/end2end/model_test.dart +++ b/test/end2end/model_test.dart @@ -91,6 +91,78 @@ 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 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', ['out X']); + expectTypedefs(T3, 'Map', ['out X', 'out Y']); + expectTypedefs(T4, 'void Function()', []); + expectTypedefs(T5, 'X Function(X, {X name})', ['inout X']); + expectTypedefs(T6, 'X Function(Y, [Map])', ['out X', 'in Y']); + expectTypedefs(T7, 'X Function(Y, [Map])', + ['out X extends String', 'in Y extends List']); + }); + }); + group('NNBD cases', () { Library lateFinalWithoutInitializer, nullSafetyClassMemberDeclarations, diff --git a/test/src/utils.dart b/test/src/utils.dart index 22ab9705f9..5b0791a17e 100644 --- a/test/src/utils.dart +++ b/test/src/utils.dart @@ -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 tag in the 'excluded' library. -const int kTestPackagePublicLibraries = 22; +const int kTestPackagePublicLibraries = 23; final _resourceProvider = pubPackageMetaProvider.resourceProvider; final _pathContext = _resourceProvider.pathContext; diff --git a/testing/test_package_experiments/lib/generalized_typedefs.dart b/testing/test_package/lib/features/generalized_typedefs.dart similarity index 100% rename from testing/test_package_experiments/lib/generalized_typedefs.dart rename to testing/test_package/lib/features/generalized_typedefs.dart diff --git a/testing/test_package/pubspec.yaml b/testing/test_package/pubspec.yaml index 406466a0f2..2608dd2518 100644 --- a/testing/test_package/pubspec.yaml +++ b/testing/test_package/pubspec.yaml @@ -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' From 0ac7d00296c27dbd8e8d58e8e505d4b00692c496 Mon Sep 17 00:00:00 2001 From: Janice Collins Date: Wed, 19 May 2021 08:36:53 -0700 Subject: [PATCH 3/4] dartfmt --- test/end2end/model_special_cases_test.dart | 2 -- test/end2end/model_test.dart | 3 +-- testing/test_package/lib/features/generalized_typedefs.dart | 4 ++-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/test/end2end/model_special_cases_test.dart b/test/end2end/model_special_cases_test.dart index ee4aa98064..ea4b3bcd76 100644 --- a/test/end2end/model_special_cases_test.dart +++ b/test/end2end/model_special_cases_test.dart @@ -186,8 +186,6 @@ void main() { everyElement(contains(ab0))); }); }, skip: !_genericMetadataAllowed.allows(_platformVersion)); - - }); group('HTML Injection when allowed', () { diff --git a/test/end2end/model_test.dart b/test/end2end/model_test.dart index dc033b8f87..6887d0844f 100644 --- a/test/end2end/model_test.dart +++ b/test/end2end/model_test.dart @@ -97,8 +97,7 @@ void main() { Class C, C2; setUpAll(() { - generalizedTypedefs = packageGraph - .libraries + 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'); diff --git a/testing/test_package/lib/features/generalized_typedefs.dart b/testing/test_package/lib/features/generalized_typedefs.dart index 38461a760a..e43a9d721b 100644 --- a/testing/test_package/lib/features/generalized_typedefs.dart +++ b/testing/test_package/lib/features/generalized_typedefs.dart @@ -38,7 +38,7 @@ abstract class C extends T8 { T2 operator +(T2 other) => other; - static final T4 h = (){}; + static final T4 h = () {}; static T5? i; T7> get j; @@ -50,4 +50,4 @@ extension E on T6 { static T4 f = () {}; T2 myMethod() => [5]; -} \ No newline at end of file +} From c1c15a3f284fcc540b28c71c7e0b77af101dde1a Mon Sep 17 00:00:00 2001 From: Janice Collins Date: Wed, 19 May 2021 10:37:50 -0700 Subject: [PATCH 4/4] Fix a template... --- lib/templates/md/_type.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/templates/md/_type.md b/lib/templates/md/_type.md index 39a16f3bfd..c1e49fa721 100644 --- a/lib/templates/md/_type.md +++ b/lib/templates/md/_type.md @@ -1,4 +1,4 @@ -##### {{{linkedName}}}{{{linkedGenericParameters}}}({{{ linkedParamsNoMetadata }}}) {{{ modelType.linkedName }}} +##### {{{linkedName}}}{{{linkedGenericParameters}}} = {{{ modelType.linkedName }}} {{>categorization}} {{{ oneLineDoc }}} {{{ extendedDocLink }}} {{!two spaces intentional}}