Unverified Commit 32e1e00e authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

[flutter_tools] handle NPE in language analytics (#74075)

parent 17edb9aa
......@@ -283,7 +283,8 @@ class NullSafetyAnalysisEvent implements UsageEvent {
if (package.name == currentPackage) {
languageVersion = package.languageVersion;
}
if (package.languageVersion.major >= nullSafeVersion.major &&
if (package.languageVersion != null &&
package.languageVersion.major >= nullSafeVersion.major &&
package.languageVersion.minor >= nullSafeVersion.minor) {
migrated += 1;
}
......
......@@ -96,6 +96,26 @@ void main() {
})).called(1);
verifyNever(usage.sendEvent(NullSafetyAnalysisEvent.kNullSafetyCategory, 'language-version', label: anyNamed('label')));
});
testWithoutContext('a null language version is treated as unmigrated', () {
final Usage usage = MockUsage();
final PackageConfig packageConfig = PackageConfig(<Package>[
Package('foo', Uri.parse('file:///foo/lib/'), languageVersion: null),
]);
NullSafetyAnalysisEvent(
packageConfig,
NullSafetyMode.sound,
'something-unrelated',
usage,
).send();
verify(usage.sendEvent(NullSafetyAnalysisEvent.kNullSafetyCategory, 'runtime-mode', label: 'NullSafetyMode.sound')).called(1);
verify(usage.sendEvent(NullSafetyAnalysisEvent.kNullSafetyCategory, 'stats', parameters: <String, String>{
'cd49': '0', 'cd50': '1',
})).called(1);
verifyNever(usage.sendEvent(NullSafetyAnalysisEvent.kNullSafetyCategory, 'language-version', label: anyNamed('label')));
});
}
class FakeGroupedValidator extends GroupedValidator {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment