diff --git a/app/lib/tool/test_profile/import_source.dart b/app/lib/tool/test_profile/import_source.dart index 3cf9d7a5f1..ca9155242e 100644 --- a/app/lib/tool/test_profile/import_source.dart +++ b/app/lib/tool/test_profile/import_source.dart @@ -98,7 +98,10 @@ class ImportSource { } Future> getGeneratedArchiveBytes( - String package, String version) async { + String package, + String version, + TestArchiveTemplate? template, + ) async { final key = '$package/$version'; final hasher = createHasher(key); if (_archives.containsKey(key)) { @@ -109,7 +112,8 @@ class ImportSource { final hasRepository = hasher('hasRepository', max: 20) > 0; final isLegacy = version.contains('legacy'); - final sdkConstraint = isLegacy ? '>=1.12.0 <2.0.0' : '^3.0.0'; + final sdkConstraint = + template?.sdkConstraint ?? (isLegacy ? '>=1.12.0 <2.0.0' : '^3.0.0'); final isFlutter = package.startsWith('flutter_'); final screenshot = TestScreenshot.success(); diff --git a/app/lib/tool/test_profile/importer.dart b/app/lib/tool/test_profile/importer.dart index c506b424d0..20fa965c7e 100644 --- a/app/lib/tool/test_profile/importer.dart +++ b/app/lib/tool/test_profile/importer.dart @@ -97,10 +97,22 @@ Future importProfile({ uploaderEmails[rv.version.hashCode.abs() % uploaderEmails.length]; lastActiveUploaderEmails[rv.package] = uploaderEmail; - var bytes = pendingBytes['${rv.package}/${rv.version}'] ?? - (importedVersions.contains(rv) - ? await source.getPubDevArchiveBytes(rv.package, rv.version) - : await source.getGeneratedArchiveBytes(rv.package, rv.version)); + var bytes = pendingBytes['${rv.package}/${rv.version}']; + if (bytes == null) { + if (importedVersions.contains(rv)) { + bytes = await source.getPubDevArchiveBytes(rv.package, rv.version); + } else { + final gp = profile.generatedPackages + .firstWhereOrNull((p) => p.name == rv.package); + final gv = + gp?.versions?.firstWhereOrNull((v) => v.version == rv.version); + var template = gp?.template; + template = + template?.overrideWith(gv?.template) ?? gv?.template ?? template; + bytes = await source.getGeneratedArchiveBytes( + rv.package, rv.version, template); + } + } bytes = await _mayCleanupTarModeBits(bytes); try { // TODO: use the created field with fake clock header to set the published timestamp @@ -108,7 +120,7 @@ Future importProfile({ authToken: createFakeAuthTokenForEmail(uploaderEmail, audience: activeConfiguration.pubClientAudience), pubHostedUrl: pubHostedUrl, - (client) => client.uploadPackageBytes(bytes), + (client) => client.uploadPackageBytes(bytes!), ); published = true; } catch (e, st) { diff --git a/app/lib/tool/test_profile/models.dart b/app/lib/tool/test_profile/models.dart index 16f0c181d4..a6de185f1c 100644 --- a/app/lib/tool/test_profile/models.dart +++ b/app/lib/tool/test_profile/models.dart @@ -22,7 +22,7 @@ class TestProfile { final List importedPackages; /// Packages that will be generated locally using the provided parameters and semi-random templates. - final List generatedPackages; + final List generatedPackages; final List publishers; final List users; @@ -31,12 +31,12 @@ class TestProfile { TestProfile({ List? importedPackages, - List? generatedPackages, + List? generatedPackages, List? publishers, List? users, this.defaultUser, }) : importedPackages = importedPackages ?? [], - generatedPackages = generatedPackages ?? [], + generatedPackages = generatedPackages ?? [], publishers = publishers ?? [], users = users ?? []; @@ -98,14 +98,7 @@ class TestPackage { }); factory TestPackage.fromJson(Map json) { - // convert simple String versions to objects - final versions = json['versions'] as List?; - json = { - ...json, - 'versions': - versions?.map((v) => v is String ? {'version': v} : v).toList(), - }; - return _$TestPackageFromJson(json); + return _$TestPackageFromJson(_expandPackageJson(json)); } Map toJson() => _$TestPackageToJson(this); @@ -130,6 +123,86 @@ class TestVersion { String toString() => '$version'; } +@JsonSerializable(explicitToJson: true, includeIfNull: false) +class GeneratedTestPackage extends TestPackage { + @override + // ignore: overridden_fields + final List? versions; + + final TestArchiveTemplate? template; + + GeneratedTestPackage({ + required super.name, + super.uploaders, + super.publisher, + this.versions, + super.isDiscontinued, + super.replacedBy, + super.isUnlisted, + super.isFlutterFavorite, + super.retractedVersions, + super.likeCount, + this.template, + }); + + factory GeneratedTestPackage.fromJson(Map json) { + return _$GeneratedTestPackageFromJson(_expandPackageJson(json)); + } + + @override + Map toJson() => _$GeneratedTestPackageToJson(this); +} + +Map _expandPackageJson(Map json) { + // convert simple String versions to objects + final versions = json['versions'] as List?; + return { + ...json, + 'versions': versions?.map((v) => v is String ? {'version': v} : v).toList(), + }; +} + +@JsonSerializable(explicitToJson: true, includeIfNull: false) +class GeneratedTestVersion extends TestVersion { + final TestArchiveTemplate? template; + + GeneratedTestVersion({ + required super.version, + super.created, + this.template, + }); + + factory GeneratedTestVersion.fromJson(Map json) => + _$GeneratedTestVersionFromJson(json); + + @override + Map toJson() => _$GeneratedTestVersionToJson(this); + + @override + String toString() => '$version'; +} + +@JsonSerializable(explicitToJson: true, includeIfNull: false) +class TestArchiveTemplate { + final String? sdkConstraint; + + TestArchiveTemplate({ + this.sdkConstraint, + }); + + factory TestArchiveTemplate.fromJson(Map json) => + _$TestArchiveTemplateFromJson(json); + + TestArchiveTemplate overrideWith(TestArchiveTemplate? other) { + if (other == null) return this; + return TestArchiveTemplate( + sdkConstraint: other.sdkConstraint ?? sdkConstraint, + ); + } + + Map toJson() => _$TestArchiveTemplateToJson(this); +} + @JsonSerializable(explicitToJson: true, includeIfNull: false) class TestPublisher { final String name; diff --git a/app/lib/tool/test_profile/models.g.dart b/app/lib/tool/test_profile/models.g.dart index 6cc39c01ba..bdcf11759e 100644 --- a/app/lib/tool/test_profile/models.g.dart +++ b/app/lib/tool/test_profile/models.g.dart @@ -11,7 +11,7 @@ TestProfile _$TestProfileFromJson(Map json) => TestProfile( ?.map((e) => TestPackage.fromJson(e as Map)) .toList(), generatedPackages: (json['generatedPackages'] as List?) - ?.map((e) => TestPackage.fromJson(e as Map)) + ?.map((e) => GeneratedTestPackage.fromJson(e as Map)) .toList(), publishers: (json['publishers'] as List?) ?.map((e) => TestPublisher.fromJson(e as Map)) @@ -83,6 +83,83 @@ Map _$TestVersionToJson(TestVersion instance) => 'created': value, }; +GeneratedTestPackage _$GeneratedTestPackageFromJson( + Map json) => + GeneratedTestPackage( + name: json['name'] as String, + uploaders: (json['uploaders'] as List?) + ?.map((e) => e as String) + .toList(), + publisher: json['publisher'] as String?, + versions: (json['versions'] as List?) + ?.map((e) => GeneratedTestVersion.fromJson(e as Map)) + .toList(), + isDiscontinued: json['isDiscontinued'] as bool?, + replacedBy: json['replacedBy'] as String?, + isUnlisted: json['isUnlisted'] as bool?, + isFlutterFavorite: json['isFlutterFavorite'] as bool?, + retractedVersions: (json['retractedVersions'] as List?) + ?.map((e) => e as String) + .toList(), + likeCount: (json['likeCount'] as num?)?.toInt(), + template: json['template'] == null + ? null + : TestArchiveTemplate.fromJson( + json['template'] as Map), + ); + +Map _$GeneratedTestPackageToJson( + GeneratedTestPackage instance) => + { + 'name': instance.name, + if (instance.uploaders case final value?) 'uploaders': value, + if (instance.publisher case final value?) 'publisher': value, + if (instance.isDiscontinued case final value?) 'isDiscontinued': value, + if (instance.replacedBy case final value?) 'replacedBy': value, + if (instance.isUnlisted case final value?) 'isUnlisted': value, + if (instance.isFlutterFavorite case final value?) + 'isFlutterFavorite': value, + if (instance.retractedVersions case final value?) + 'retractedVersions': value, + if (instance.likeCount case final value?) 'likeCount': value, + if (instance.versions?.map((e) => e.toJson()).toList() case final value?) + 'versions': value, + if (instance.template?.toJson() case final value?) 'template': value, + }; + +GeneratedTestVersion _$GeneratedTestVersionFromJson( + Map json) => + GeneratedTestVersion( + version: json['version'] as String, + created: json['created'] == null + ? null + : DateTime.parse(json['created'] as String), + template: json['template'] == null + ? null + : TestArchiveTemplate.fromJson( + json['template'] as Map), + ); + +Map _$GeneratedTestVersionToJson( + GeneratedTestVersion instance) => + { + 'version': instance.version, + if (instance.created?.toIso8601String() case final value?) + 'created': value, + if (instance.template?.toJson() case final value?) 'template': value, + }; + +TestArchiveTemplate _$TestArchiveTemplateFromJson(Map json) => + TestArchiveTemplate( + sdkConstraint: json['sdkConstraint'] as String?, + ); + +Map _$TestArchiveTemplateToJson( + TestArchiveTemplate instance) => + { + if (instance.sdkConstraint case final value?) 'sdkConstraint': value, + }; + TestPublisher _$TestPublisherFromJson(Map json) => TestPublisher( name: json['name'] as String, diff --git a/app/lib/tool/test_profile/normalizer.dart b/app/lib/tool/test_profile/normalizer.dart index d40d51938d..0118f867f0 100644 --- a/app/lib/tool/test_profile/normalizer.dart +++ b/app/lib/tool/test_profile/normalizer.dart @@ -10,7 +10,7 @@ TestProfile normalize(TestProfile profile) { final users = {}; final publishers = {}; final importedPackages = {}; - final generatedPackages = {}; + final generatedPackages = {}; profile.users.forEach((user) { users[user.email] = user; diff --git a/app/test/dartdoc/doc_url_test.dart b/app/test/dartdoc/doc_url_test.dart index 2ea1969739..567409e9ef 100644 --- a/app/test/dartdoc/doc_url_test.dart +++ b/app/test/dartdoc/doc_url_test.dart @@ -16,15 +16,15 @@ void main() { final _testProfile = TestProfile( defaultUser: 'admin@pub.dev', generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'oxygen', versions: [ - TestVersion(version: '1.0.0'), // won't get analyzed - TestVersion(version: '1.0.1'), // won't get analyzed - TestVersion(version: '1.1.0'), // will get analyzed - TestVersion(version: '2.0.0'), // won't get analyzed - TestVersion(version: '2.0.1'), // will get analyzed - TestVersion(version: '2.1.0'), // will get analyzed + GeneratedTestVersion(version: '1.0.0'), // won't get analyzed + GeneratedTestVersion(version: '1.0.1'), // won't get analyzed + GeneratedTestVersion(version: '1.1.0'), // will get analyzed + GeneratedTestVersion(version: '2.0.0'), // won't get analyzed + GeneratedTestVersion(version: '2.0.1'), // will get analyzed + GeneratedTestVersion(version: '2.1.0'), // will get analyzed ], ), ], diff --git a/app/test/frontend/handlers/custom_api_test.dart b/app/test/frontend/handlers/custom_api_test.dart index 6c1ba1a733..d6c99cf27d 100644 --- a/app/test/frontend/handlers/custom_api_test.dart +++ b/app/test/frontend/handlers/custom_api_test.dart @@ -192,11 +192,11 @@ void main() { 'many versions', testProfile: TestProfile( generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'pkg', versions: List.generate( 99, - (index) => TestVersion(version: '1.$index.0'), + (index) => GeneratedTestVersion(version: '1.$index.0'), ), ), ], diff --git a/app/test/frontend/handlers/listing_test.dart b/app/test/frontend/handlers/listing_test.dart index 80ee5e25cd..8084f7210b 100644 --- a/app/test/frontend/handlers/listing_test.dart +++ b/app/test/frontend/handlers/listing_test.dart @@ -86,10 +86,11 @@ void main() { testWithProfile('/packages?page=2', testProfile: TestProfile( defaultUser: 'admin@pub.dev', - generatedPackages: List.generate( + generatedPackages: List.generate( 15, - (i) => TestPackage( - name: 'pkg$i', versions: [TestVersion(version: '1.0.0')])), + (i) => GeneratedTestPackage( + name: 'pkg$i', + versions: [GeneratedTestVersion(version: '1.0.0')])), ), fn: () async { final present = ['pkg1', 'pkg4', 'pkg5', 'pkg12']; final absent = ['pkg0', 'pkg3', 'pkg6', 'pkg9', 'pkg10']; @@ -104,7 +105,7 @@ void main() { '/flutter/packages', testProfile: TestProfile( generatedPackages: - List.generate(3, (i) => TestPackage(name: 'package_$i')), + List.generate(3, (i) => GeneratedTestPackage(name: 'package_$i')), defaultUser: 'admin@pub.dev', ), fn: () async { @@ -125,9 +126,9 @@ void main() { testWithProfile( 'Flutter listings', testProfile: TestProfile( - generatedPackages: List.generate( + generatedPackages: List.generate( 15, - (i) => TestPackage( + (i) => GeneratedTestPackage( name: 'flutter_pkg$i', isFlutterFavorite: true, ), diff --git a/app/test/frontend/handlers/package_test.dart b/app/test/frontend/handlers/package_test.dart index 5440d09b1d..a5040a6902 100644 --- a/app/test/frontend/handlers/package_test.dart +++ b/app/test/frontend/handlers/package_test.dart @@ -125,9 +125,9 @@ void main() { 'package pages without homepage', testProfile: TestProfile( generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'pkg', - versions: [TestVersion(version: '1.0.0-nohomepage')]), + versions: [GeneratedTestVersion(version: '1.0.0-nohomepage')]), ], defaultUser: 'admin@pub.dev', ), diff --git a/app/test/frontend/handlers/publisher_test.dart b/app/test/frontend/handlers/publisher_test.dart index 53fa1e2787..3a554e3b8a 100644 --- a/app/test/frontend/handlers/publisher_test.dart +++ b/app/test/frontend/handlers/publisher_test.dart @@ -98,8 +98,8 @@ void main() { 'unlisted packages', testProfile: TestProfile( generatedPackages: [ - TestPackage(name: 'pkg_a', publisher: 'example.com'), - TestPackage( + GeneratedTestPackage(name: 'pkg_a', publisher: 'example.com'), + GeneratedTestPackage( name: 'pkg_b', publisher: 'example.com', isUnlisted: true, diff --git a/app/test/frontend/templates_test.dart b/app/test/frontend/templates_test.dart index 0304c9401b..81f2da7cd9 100644 --- a/app/test/frontend/templates_test.dart +++ b/app/test/frontend/templates_test.dart @@ -270,10 +270,10 @@ void main() { testWithProfile('package show page with discontinued version', testProfile: TestProfile( generatedPackages: [ - TestPackage(name: 'other'), - TestPackage( + GeneratedTestPackage(name: 'other'), + GeneratedTestPackage( name: 'pkg', - versions: [TestVersion(version: '1.0.0')], + versions: [GeneratedTestVersion(version: '1.0.0')], isDiscontinued: true, replacedBy: 'other', ), @@ -293,11 +293,11 @@ void main() { testWithProfile('package show page with retracted version', testProfile: TestProfile( generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'pkg', versions: [ - TestVersion(version: '1.0.0'), - TestVersion(version: '2.0.0'), + GeneratedTestVersion(version: '1.0.0'), + GeneratedTestVersion(version: '2.0.0'), ], retractedVersions: ['1.0.0'], ), @@ -327,11 +327,11 @@ void main() { testWithProfile('package show page with non-retracted version', testProfile: TestProfile( generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'pkg', versions: [ - TestVersion(version: '1.0.0'), - TestVersion(version: '2.0.0'), + GeneratedTestVersion(version: '1.0.0'), + GeneratedTestVersion(version: '2.0.0'), ], retractedVersions: ['1.0.0'], ), diff --git a/app/test/package/api_export/api_exporter_test.dart b/app/test/package/api_export/api_exporter_test.dart index f713a9358a..608159df36 100644 --- a/app/test/package/api_export/api_exporter_test.dart +++ b/app/test/package/api_export/api_exporter_test.dart @@ -29,10 +29,10 @@ final _log = Logger('api_export.test'); final _testProfile = TestProfile( defaultUser: userAtPubDevEmail, generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'foo', versions: [ - TestVersion(version: '1.0.0'), + GeneratedTestVersion(version: '1.0.0'), ], ), ], @@ -139,9 +139,9 @@ Future _testExportedApiSynchronization( profile: TestProfile( defaultUser: userAtPubDevEmail, generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'bar', - versions: [TestVersion(version: '2.0.0')], + versions: [GeneratedTestVersion(version: '2.0.0')], publisher: 'example.com', ), ], @@ -184,9 +184,9 @@ Future _testExportedApiSynchronization( profile: TestProfile( defaultUser: userAtPubDevEmail, generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'bar', - versions: [TestVersion(version: '3.0.0')], + versions: [GeneratedTestVersion(version: '3.0.0')], publisher: 'example.com', ), ], diff --git a/app/test/package/name_tracker_test.dart b/app/test/package/name_tracker_test.dart index 1ecd48ee2e..48eff7101c 100644 --- a/app/test/package/name_tracker_test.dart +++ b/app/test/package/name_tracker_test.dart @@ -151,7 +151,7 @@ void main() { testWithProfile( 'aaa_bbb deleted, aaa_bbbs plural', testProfile: TestProfile( - generatedPackages: [TestPackage(name: 'aaa_bbb')], + generatedPackages: [GeneratedTestPackage(name: 'aaa_bbb')], defaultUser: 'user@pub.dev', ), fn: () async { diff --git a/app/test/package/package_publisher_test.dart b/app/test/package/package_publisher_test.dart index 7075535f30..4fc3e313fa 100644 --- a/app/test/package/package_publisher_test.dart +++ b/app/test/package/package_publisher_test.dart @@ -154,8 +154,8 @@ void main() { group('Move between publishers', () { TestProfile _profile() => TestProfile( generatedPackages: [ - TestPackage(name: 'one', publisher: 'verified.com'), - TestPackage(name: 'two', publisher: 'example.com'), + GeneratedTestPackage(name: 'one', publisher: 'verified.com'), + GeneratedTestPackage(name: 'two', publisher: 'example.com'), ], defaultUser: 'admin@pub.dev', ); diff --git a/app/test/package/preview_test.dart b/app/test/package/preview_test.dart index 39bdceef0f..c732aec380 100644 --- a/app/test/package/preview_test.dart +++ b/app/test/package/preview_test.dart @@ -2,15 +2,11 @@ // 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. -import 'dart:async'; -import 'dart:convert'; - import 'package:_pub_shared/utils/sdk_version_cache.dart'; import 'package:pub_dev/package/backend.dart'; import 'package:pub_dev/package/models.dart'; import 'package:pub_dev/shared/datastore.dart'; import 'package:pub_dev/shared/versions.dart'; -import 'package:pub_dev/tool/test_profile/import_source.dart'; import 'package:pub_dev/tool/test_profile/models.dart'; import 'package:pub_semver/pub_semver.dart'; import 'package:test/test.dart'; @@ -18,22 +14,19 @@ import 'package:test/test.dart'; import '../shared/test_services.dart'; void main() { - Version? currentSdkVersion; - Version? futureSdkVersion; - final importSource = - _ImportSource(() => currentSdkVersion, () => futureSdkVersion); - + final futureSdkVersion = Version.parse('3.99.0'); group('SDK version changing', () { + late Version currentSdkVersion; + setUpAll(() async { final current = await getCachedDartSdkVersion( lastKnownStable: toolStableDartSdkVersion); currentSdkVersion = current.semanticVersion; - futureSdkVersion = Version.parse('3.99.0'); }); test('verify versions', () async { - expect(currentSdkVersion!.major, isNotNull); - expect(futureSdkVersion!.major, currentSdkVersion!.major); + expect(currentSdkVersion.major, greaterThan(0)); + expect(futureSdkVersion.major, currentSdkVersion.major); }); testWithProfile( @@ -41,25 +34,29 @@ void main() { testProfile: TestProfile( defaultUser: 'admin@pub.dev', generatedPackages: [ - TestPackage(name: 'pkg', versions: [ - TestVersion(version: '1.0.0'), - TestVersion(version: '1.2.0'), + GeneratedTestPackage(name: 'pkg', versions: [ + GeneratedTestVersion(version: '1.0.0'), + GeneratedTestVersion( + version: '1.2.0', + template: TestArchiveTemplate( + sdkConstraint: futureSdkVersion.toString(), + ), + ), ]), ], ), - importSource: importSource, fn: () async { final pv1 = (await packageBackend.lookupPackageVersion('pkg', '1.0.0'))!; expect( pv1.pubspec!.isPreviewForCurrentSdk( - dartSdkVersion: currentSdkVersion!, + dartSdkVersion: currentSdkVersion, flutterSdkVersion: Version(3, 20, 0), ), isFalse); expect( pv1.pubspec!.isPreviewForCurrentSdk( - dartSdkVersion: futureSdkVersion!, + dartSdkVersion: futureSdkVersion, flutterSdkVersion: Version(3, 20, 0), ), isFalse); @@ -68,13 +65,13 @@ void main() { (await packageBackend.lookupPackageVersion('pkg', '1.2.0'))!; expect( pv2.pubspec!.isPreviewForCurrentSdk( - dartSdkVersion: currentSdkVersion!, + dartSdkVersion: currentSdkVersion, flutterSdkVersion: Version(3, 20, 0), ), isTrue); expect( pv2.pubspec!.isPreviewForCurrentSdk( - dartSdkVersion: futureSdkVersion!, + dartSdkVersion: futureSdkVersion, flutterSdkVersion: Version(3, 20, 0), ), isFalse); @@ -117,13 +114,17 @@ void main() { testProfile: TestProfile( defaultUser: 'admin@pub.dev', generatedPackages: [ - TestPackage(name: 'pkg', versions: [ - TestVersion(version: '1.0.0'), - TestVersion(version: '1.2.0'), + GeneratedTestPackage(name: 'pkg', versions: [ + GeneratedTestVersion(version: '1.0.0'), + GeneratedTestVersion( + version: '1.2.0', + template: TestArchiveTemplate( + sdkConstraint: futureSdkVersion.toString(), + ), + ), ]), ], ), - importSource: importSource, fn: () async { final pkg = await dbService.lookupValue( dbService.emptyKey.append(Package, id: 'pkg')); @@ -153,16 +154,14 @@ void main() { testProfile: TestProfile( defaultUser: 'admin@pub.dev', generatedPackages: [ - TestPackage(name: 'pkg', versions: [ - TestVersion(version: '0.1.0-nullsafety.0'), - TestVersion(version: '0.1.0-nullsafety.1'), - TestVersion(version: '0.2.0-nullsafety.0'), - TestVersion(version: '0.2.1-nullsafety.0'), + GeneratedTestPackage(name: 'pkg', versions: [ + GeneratedTestVersion(version: '0.1.0-nullsafety.0'), + GeneratedTestVersion(version: '0.1.0-nullsafety.1'), + GeneratedTestVersion(version: '0.2.0-nullsafety.0'), + GeneratedTestVersion(version: '0.2.1-nullsafety.0'), ]), ], ), - importSource: - _ImportSource(() => futureSdkVersion, () => futureSdkVersion), fn: () async { final pkg = await dbService.lookupValue( dbService.emptyKey.append(Package, id: 'pkg')); @@ -190,13 +189,17 @@ void main() { testProfile: TestProfile( defaultUser: 'admin@pub.dev', generatedPackages: [ - TestPackage(name: 'pkg', versions: [ - TestVersion(version: '1.0.0'), - TestVersion(version: '1.2.0'), + GeneratedTestPackage(name: 'pkg', versions: [ + GeneratedTestVersion(version: '1.0.0'), + GeneratedTestVersion( + version: '1.2.0', + template: TestArchiveTemplate( + sdkConstraint: futureSdkVersion.toString(), + ), + ), ]), ], ), - importSource: importSource, fn: () async { final pkg = await dbService.lookupValue( dbService.emptyKey.append(Package, id: 'pkg')); @@ -225,37 +228,3 @@ void main() { ); }); } - -class _ImportSource extends ImportSource { - final Version? Function() _currentSdkVersionFn; - final Version? Function() _futureSdkVersionFn; - - _ImportSource(this._currentSdkVersionFn, this._futureSdkVersionFn); - - @override - Future> getGeneratedArchiveBytes( - String package, String version) async { - final archive = ArchiveBuilder(); - - final minSdk = - version == '1.2.0' ? _futureSdkVersionFn() : _currentSdkVersionFn(); - final pubspec = json.encode({ - 'name': package, - 'version': version, - 'description': '$package is awesome', - 'environment': { - 'sdk': '>=$minSdk <4.0.0', - }, - }); - - archive.addFile('pubspec.yaml', pubspec); - archive.addFile('README.md', '# $package\n\nAwesome package.'); - archive.addFile('CHANGELOG.md', '## $version\n\n- updated'); - archive.addFile('lib/$package.dart', 'main() {\n print(\'Hello.\');\n}\n'); - archive.addFile( - 'example/example.dart', 'main() {\n print(\'example\');\n}\n'); - archive.addFile('LICENSE', 'All rights reserved.'); - - return archive.toTarGzBytes(); - } -} diff --git a/app/test/package/retracted_test.dart b/app/test/package/retracted_test.dart index 935b967a17..5ef56ea452 100644 --- a/app/test/package/retracted_test.dart +++ b/app/test/package/retracted_test.dart @@ -188,11 +188,11 @@ void main() { testProfile: TestProfile( defaultUser: 'admin@pub.dev', generatedPackages: [ - TestPackage(name: 'oxygen', versions: [ - TestVersion(version: '1.0.0'), - TestVersion(version: '1.2.0'), - TestVersion(version: '2.0.0-dev'), - TestVersion(version: '2.1.0-dev'), + GeneratedTestPackage(name: 'oxygen', versions: [ + GeneratedTestVersion(version: '1.0.0'), + GeneratedTestVersion(version: '1.2.0'), + GeneratedTestVersion(version: '2.0.0-dev'), + GeneratedTestVersion(version: '2.1.0-dev'), ]), ], ), fn: () async { @@ -310,15 +310,15 @@ void main() { group('different combinations', () { final _testProfile = TestProfile( generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'pkg', versions: [ - TestVersion(version: '1.2.0'), - TestVersion(version: '1.3.0-dev'), - TestVersion(version: '2.0.0-dev'), + GeneratedTestVersion(version: '1.2.0'), + GeneratedTestVersion(version: '1.3.0-dev'), + GeneratedTestVersion(version: '2.0.0-dev'), ], ), - TestPackage(name: 'oxygen'), + GeneratedTestPackage(name: 'oxygen'), ], defaultUser: adminAtPubDevEmail, ); diff --git a/app/test/package/upload_test.dart b/app/test/package/upload_test.dart index 03de9fa2b2..9349ce2d88 100644 --- a/app/test/package/upload_test.dart +++ b/app/test/package/upload_test.dart @@ -719,8 +719,8 @@ void main() { 'successful upload with GitHub Actions (exempted package)', testProfile: TestProfile( generatedPackages: [ - TestPackage(name: '_dummy_pkg'), - TestPackage(name: 'oxygen'), + GeneratedTestPackage(name: '_dummy_pkg'), + GeneratedTestPackage(name: 'oxygen'), ], defaultUser: 'admin@pub.dev', ), fn: () async { @@ -1229,12 +1229,12 @@ void main() { 'max version count', testProfile: TestProfile( defaultUser: 'admin@pub.dev', - generatedPackages: [ - TestPackage(name: 'oxygen'), - TestPackage( + generatedPackages: [ + GeneratedTestPackage(name: 'oxygen'), + GeneratedTestPackage( name: 'busy_pkg', - versions: - List.generate(100, (i) => TestVersion(version: '1.0.$i'))), + versions: List.generate( + 100, (i) => GeneratedTestVersion(version: '1.0.$i'))), ], ), fn: () async { diff --git a/app/test/shared/test_models.dart b/app/test/shared/test_models.dart index ce9adf7294..eaf78b8bdc 100644 --- a/app/test/shared/test_models.dart +++ b/app/test/shared/test_models.dart @@ -15,24 +15,24 @@ final emptyTestProfile = TestProfile( final defaultTestProfile = TestProfile( defaultUser: 'admin@pub.dev', generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'oxygen', versions: [ - TestVersion(version: '1.0.0'), - TestVersion(version: '1.2.0'), - TestVersion(version: '2.0.0-dev'), + GeneratedTestVersion(version: '1.0.0'), + GeneratedTestVersion(version: '1.2.0'), + GeneratedTestVersion(version: '2.0.0-dev'), ], ), - TestPackage( + GeneratedTestPackage( name: 'neon', - versions: [TestVersion(version: '1.0.0')], + versions: [GeneratedTestVersion(version: '1.0.0')], publisher: 'example.com', ), - TestPackage( + GeneratedTestPackage( name: 'flutter_titanium', versions: [ - TestVersion(version: '1.9.0'), - TestVersion(version: '1.10.0'), + GeneratedTestVersion(version: '1.9.0'), + GeneratedTestVersion(version: '1.10.0'), ], ), ], diff --git a/app/test/task/end2end_test.dart b/app/test/task/end2end_test.dart index 10c3f49caa..e0c6c13623 100644 --- a/app/test/task/end2end_test.dart +++ b/app/test/task/end2end_test.dart @@ -30,11 +30,11 @@ final _regenerateGoldens = false; final _testProfile = TestProfile( defaultUser: 'admin@pub.dev', generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'oxygen', versions: [ - TestVersion(version: '1.0.0'), - TestVersion(version: '2.0.0'), + GeneratedTestVersion(version: '1.0.0'), + GeneratedTestVersion(version: '2.0.0'), ], ), ], diff --git a/app/test/task/fallback_test.dart b/app/test/task/fallback_test.dart index e5326f9b5d..63d8a20996 100644 --- a/app/test/task/fallback_test.dart +++ b/app/test/task/fallback_test.dart @@ -20,10 +20,10 @@ void main() { await env.run( testProfile: TestProfile( generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'oxygen', versions: [ - TestVersion(version: '1.0.0'), + GeneratedTestVersion(version: '1.0.0'), ], ), ], @@ -97,8 +97,8 @@ void main() { await importProfile( profile: TestProfile( generatedPackages: [ - TestPackage(name: 'oxygen', versions: [ - TestVersion(version: '9.0.0'), + GeneratedTestPackage(name: 'oxygen', versions: [ + GeneratedTestVersion(version: '9.0.0'), ]), ], defaultUser: adminAtPubDevEmail, diff --git a/app/test/task/task_test.dart b/app/test/task/task_test.dart index 7618c70903..19aedd253d 100644 --- a/app/test/task/task_test.dart +++ b/app/test/task/task_test.dart @@ -53,17 +53,17 @@ void main() { testProfile: TestProfile( defaultUser: 'admin@pub.dev', generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'oxygen', versions: [ - TestVersion(version: '1.0.0'), - TestVersion(version: '1.1.0'), - TestVersion(version: '1.2.0'), - TestVersion(version: '2.0.0-dev'), + GeneratedTestVersion(version: '1.0.0'), + GeneratedTestVersion(version: '1.1.0'), + GeneratedTestVersion(version: '1.2.0'), + GeneratedTestVersion(version: '2.0.0-dev'), ], ), - TestPackage(name: 'neon'), - TestPackage(name: 'flutter_titanium'), + GeneratedTestPackage(name: 'neon'), + GeneratedTestPackage(name: 'flutter_titanium'), ], users: [ TestUser(email: 'admin@pub.dev', likes: []), @@ -239,9 +239,9 @@ void main() { testProfile: TestProfile( defaultUser: 'admin@pub.dev', generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'neon', - versions: [TestVersion(version: '1.0.0')], + versions: [GeneratedTestVersion(version: '1.0.0')], publisher: 'example.com', ), ], @@ -282,18 +282,18 @@ void main() { testProfile: TestProfile( defaultUser: 'admin@pub.dev', generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'neon', versions: [ - TestVersion(version: '6.0.0'), - TestVersion(version: '5.1.0'), - TestVersion(version: '5.0.0'), - TestVersion(version: '4.0.0'), - TestVersion(version: '3.2.0'), - TestVersion(version: '3.1.0'), - TestVersion(version: '3.0.0'), - TestVersion(version: '2.0.0'), - TestVersion(version: '1.0.0'), + GeneratedTestVersion(version: '6.0.0'), + GeneratedTestVersion(version: '5.1.0'), + GeneratedTestVersion(version: '5.0.0'), + GeneratedTestVersion(version: '4.0.0'), + GeneratedTestVersion(version: '3.2.0'), + GeneratedTestVersion(version: '3.1.0'), + GeneratedTestVersion(version: '3.0.0'), + GeneratedTestVersion(version: '2.0.0'), + GeneratedTestVersion(version: '1.0.0'), ], publisher: 'example.com', isDiscontinued: true, @@ -316,9 +316,9 @@ void main() { profile: TestProfile( defaultUser: 'admin@pub.dev', generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'neon', - versions: [TestVersion(version: '1.0.0')], + versions: [GeneratedTestVersion(version: '1.0.0')], publisher: 'example.com', ), ], @@ -417,9 +417,9 @@ void main() { testProfile: TestProfile( defaultUser: 'admin@pub.dev', generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'neon', - versions: [TestVersion(version: '1.0.0')], + versions: [GeneratedTestVersion(version: '1.0.0')], publisher: 'example.com', ), ], @@ -502,9 +502,9 @@ void main() { profile: TestProfile( defaultUser: 'admin@pub.dev', generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'neon', - versions: [TestVersion(version: '2.0.0')], + versions: [GeneratedTestVersion(version: '2.0.0')], publisher: 'example.com', ), ], @@ -540,9 +540,9 @@ void main() { testProfile: TestProfile( defaultUser: 'admin@pub.dev', generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'neon', - versions: [TestVersion(version: '1.0.0')], + versions: [GeneratedTestVersion(version: '1.0.0')], publisher: 'example.com', ), ], @@ -638,9 +638,9 @@ void main() { profile: TestProfile( defaultUser: 'admin@pub.dev', generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'neon', - versions: [TestVersion(version: '2.0.0')], + versions: [GeneratedTestVersion(version: '2.0.0')], publisher: 'example.com', ), ], @@ -677,14 +677,14 @@ void main() { testProfile: TestProfile( defaultUser: 'admin@pub.dev', generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'neon', - versions: [TestVersion(version: '1.0.0')], + versions: [GeneratedTestVersion(version: '1.0.0')], publisher: 'example.com', ), - TestPackage( + GeneratedTestPackage( name: 'oxygen', - versions: [TestVersion(version: '1.0.0')], + versions: [GeneratedTestVersion(version: '1.0.0')], publisher: 'example.com', ), ], @@ -698,9 +698,9 @@ void main() { testProfile: TestProfile( defaultUser: 'admin@pub.dev', generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'neon', - versions: [TestVersion(version: '1.0.0')], + versions: [GeneratedTestVersion(version: '1.0.0')], ), ], users: [ @@ -728,15 +728,15 @@ void main() { profile: TestProfile( defaultUser: 'admin@pub.dev', generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'neon', versions: [ - TestVersion(version: '1.1.0'), - TestVersion(version: '1.2.0'), - TestVersion(version: '2.0.0'), - TestVersion(version: '3.0.0'), - TestVersion(version: '4.0.0'), - TestVersion(version: '5.0.0'), + GeneratedTestVersion(version: '1.1.0'), + GeneratedTestVersion(version: '1.2.0'), + GeneratedTestVersion(version: '2.0.0'), + GeneratedTestVersion(version: '3.0.0'), + GeneratedTestVersion(version: '4.0.0'), + GeneratedTestVersion(version: '5.0.0'), ], ), ], diff --git a/app/test/tool/test_profile/importer_test.dart b/app/test/tool/test_profile/importer_test.dart index 07be3fdb8e..332bf24ef5 100644 --- a/app/test/tool/test_profile/importer_test.dart +++ b/app/test/tool/test_profile/importer_test.dart @@ -82,7 +82,7 @@ void main() { 'sample', testProfile: TestProfile( defaultUser: 'dev@example.com', - generatedPackages: [TestPackage(name: 'sample')], + generatedPackages: [GeneratedTestPackage(name: 'sample')], ), fn: () async { final users = await dbService.query().run().toList(); @@ -110,7 +110,7 @@ void main() { 'fill in likes', testProfile: TestProfile( generatedPackages: [ - TestPackage( + GeneratedTestPackage( name: 'sample', likeCount: 10, ),