Skip to content

Commit e1fb48f

Browse files
authored
Reduce TestProfile mutable API: uploaders can be inferred directly from the profile. (#8640)
1 parent f6b7ce2 commit e1fb48f

File tree

4 files changed

+17
-25
lines changed

4 files changed

+17
-25
lines changed

app/lib/tool/test_profile/importer.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,9 @@ List<String> _potentialActiveEmails(TestProfile profile, String packageName) {
237237
profile.generatedPackages.firstWhere((p) => p.name == packageName);
238238

239239
// uploaders
240-
if (testPackage.publisher == null) return testPackage.uploaders!;
240+
if (testPackage.publisher == null) {
241+
return testPackage.uploaders ?? [profile.resolvedDefaultUser];
242+
}
241243

242244
// publisher
243245
final members = profile.publishers

app/lib/tool/test_profile/models.dart

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,16 @@ class TestProfile {
6666
final v = p?.versions?.firstWhereOrNull((v) => v.version == version);
6767
return v != null;
6868
}
69+
70+
/// The [defaultUser] if specified, otherwise:
71+
/// - the first entry in the [users] list,
72+
/// - the first specified member in the [publishers] list,
73+
/// - the first specfied uploader in the [importedPackages] or the [generatedPackages] list.
74+
late final resolvedDefaultUser = defaultUser ??
75+
users.firstOrNull?.email ??
76+
publishers.expand((p) => p.members).map((m) => m.email).firstOrNull ??
77+
importedPackages.expand((p) => p.uploaders ?? <String>[]).firstOrNull ??
78+
generatedPackages.expand((p) => p.uploaders ?? <String>[]).first;
6979
}
7080

7181
@JsonSerializable(explicitToJson: true, includeIfNull: false)
@@ -108,12 +118,11 @@ class TestPackage {
108118
Map<String, dynamic> toJson() => _$TestPackageToJson(this);
109119

110120
TestPackage change({
111-
List<String>? uploaders,
112121
List<TestVersion>? versions,
113122
}) {
114123
return TestPackage(
115124
name: name,
116-
uploaders: uploaders ?? this.uploaders,
125+
uploaders: uploaders,
117126
publisher: publisher,
118127
versions: versions ?? this.versions,
119128
replacedBy: replacedBy,

app/lib/tool/test_profile/normalizer.dart

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ TestProfile normalize(
4242
});
4343
});
4444

45-
final defaultUser = profile.defaultUser ?? users.keys.first;
46-
4745
// add missing packages from resolved versions
4846
if (resolvedVersions != null) {
4947
resolvedVersions.forEach((rv) {
@@ -57,7 +55,7 @@ TestProfile normalize(
5755
versions: [
5856
TestVersion(version: rv.version, created: rv.created),
5957
],
60-
uploaders: [defaultUser],
58+
uploaders: [profile.resolvedDefaultUser],
6159
));
6260
});
6361
// update versions from resolved versions
@@ -89,27 +87,12 @@ TestProfile normalize(
8987
_createPublisherIfNeeded(
9088
publishers,
9189
publisher,
92-
memberEmail: defaultUser,
90+
memberEmail: profile.resolvedDefaultUser,
9391
);
9492
}
9593

96-
for (final package in importedPackages.values.toList()) {
97-
if (package.publisher == null &&
98-
(package.uploaders == null || package.uploaders!.isEmpty)) {
99-
importedPackages[package.name] = package.change(uploaders: [defaultUser]);
100-
}
101-
}
102-
103-
for (final package in generatedPackages.values.toList()) {
104-
if (package.publisher == null &&
105-
(package.uploaders == null || package.uploaders!.isEmpty)) {
106-
generatedPackages[package.name] =
107-
package.change(uploaders: [defaultUser]);
108-
}
109-
}
110-
11194
return TestProfile(
112-
defaultUser: defaultUser,
95+
defaultUser: profile.resolvedDefaultUser,
11396
users: users.values.toList(),
11497
publishers: publishers.values.toList(),
11598
importedPackages: importedPackages.values.toList(),

app/test/tool/test_profile/model_normalization_test.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ generatedPackages:
6969
'generatedPackages': [
7070
{
7171
'name': 'foo',
72-
'uploaders': ['[email protected]'],
7372
'versions': [
7473
{'version': '1.0.0'},
7574
{'version': '2.0.0'},
@@ -109,7 +108,6 @@ generatedPackages:
109108
'generatedPackages': [
110109
{
111110
'name': 'foo',
112-
'uploaders': ['[email protected]'],
113111
'versions': [
114112
{'version': '1.1.0', 'created': isNotEmpty},
115113
],

0 commit comments

Comments
 (0)