@@ -33,6 +33,7 @@ void main() {
3333 'downloaded and exits with code 1' , () async {
3434 final FakeFlutterVersion flutterVersion = FakeFlutterVersion (
3535 frameworkVersion: '1.0.0' ,
36+ channel: 'beta' ,
3637 );
3738 final MemoryFileSystem fileSystem = MemoryFileSystem .test ();
3839 final Artifacts artifacts = Artifacts .test ();
@@ -60,7 +61,7 @@ void main() {
6061
6162 expect (await flutterValidator.validate (), _matchDoctorValidation (
6263 validationType: ValidationType .partial,
63- statusInfo: 'Channel unknown , 1.0.0, on Linux, locale en_US.UTF-8' ,
64+ statusInfo: 'Channel beta , 1.0.0, on Linux, locale en_US.UTF-8' ,
6465 messages: containsAll (const < ValidationMessage > [
6566 ValidationMessage .error (
6667 'Downloaded executables cannot execute on host.\n '
@@ -76,6 +77,7 @@ void main() {
7677 testWithoutContext ('FlutterValidator does not run gen_snapshot binary check if it is not already downloaded' , () async {
7778 final FakeFlutterVersion flutterVersion = FakeFlutterVersion (
7879 frameworkVersion: '1.0.0' ,
80+ channel: 'beta' ,
7981 );
8082 final FlutterValidator flutterValidator = FlutterValidator (
8183 platform: FakePlatform (
@@ -97,7 +99,7 @@ void main() {
9799 // fail if the gen_snapshot binary is not present.
98100 expect (await flutterValidator.validate (), _matchDoctorValidation (
99101 validationType: ValidationType .installed,
100- statusInfo: 'Channel unknown , 1.0.0, on Windows, locale en_US.UTF-8' ,
102+ statusInfo: 'Channel beta , 1.0.0, on Windows, locale en_US.UTF-8' ,
101103 messages: anything,
102104 ));
103105 });
@@ -117,9 +119,9 @@ void main() {
117119
118120 expect (await flutterValidator.validate (), _matchDoctorValidation (
119121 validationType: ValidationType .partial,
120- statusInfo: 'Channel unknown , 0.0.0, on Windows, locale en_US.UTF-8' ,
122+ statusInfo: 'Channel beta , 0.0.0, on Windows, locale en_US.UTF-8' ,
121123 messages: containsAll (const < ValidationMessage > [
122- ValidationMessage ('Flutter version 0.0.0 at sdk/flutter' ),
124+ ValidationMessage ('Flutter version 0.0.0 on channel beta at sdk/flutter' ),
123125 ValidationMessage .error ('version error' ),
124126 ]),
125127 ));
@@ -128,6 +130,7 @@ void main() {
128130 testWithoutContext ('FlutterValidator shows mirrors on pub and flutter cloud storage' , () async {
129131 final FakeFlutterVersion flutterVersion = FakeFlutterVersion (
130132 frameworkVersion: '1.0.0' ,
133+ channel: 'beta' ,
131134 );
132135 final Platform platform = FakePlatform (
133136 operatingSystem: 'windows' ,
@@ -153,23 +156,26 @@ void main() {
153156
154157 expect (await flutterValidator.validate (), _matchDoctorValidation (
155158 validationType: ValidationType .installed,
156- statusInfo: 'Channel unknown , 1.0.0, on Windows, locale en_US.UTF-8' ,
159+ statusInfo: 'Channel beta , 1.0.0, on Windows, locale en_US.UTF-8' ,
157160 messages: containsAll (const < ValidationMessage > [
158161 ValidationMessage ('Pub download mirror https://example.com/pub' ),
159162 ValidationMessage ('Flutter download mirror https://example.com/flutter' ),
160163 ])
161164 ));
162165 });
163166
164- testWithoutContext ('FlutterValidator shows FLUTTER_GIT_URL environment variable when set' , () async {
167+ testWithoutContext ('FlutterValidator shows FLUTTER_GIT_URL when set and fails if upstream is not the same ' , () async {
165168 final FlutterValidator flutterValidator = FlutterValidator (
166169 platform: FakePlatform (
167170 localeName: 'en_US.UTF-8' ,
168171 environment: < String , String > {
169172 'FLUTTER_GIT_URL' : 'https://githubmirror.com/flutter.git' ,
170173 },
171174 ),
172- flutterVersion: () => FakeFlutterVersion (frameworkVersion: '1.0.0' ),
175+ flutterVersion: () => FakeFlutterVersion (
176+ frameworkVersion: '1.0.0' ,
177+ channel: 'beta'
178+ ),
173179 devToolsVersion: () => '2.8.0' ,
174180 userMessages: UserMessages (),
175181 artifacts: Artifacts .test (),
@@ -180,17 +186,69 @@ void main() {
180186 );
181187
182188 expect (await flutterValidator.validate (), _matchDoctorValidation (
183- validationType: ValidationType .installed,
189+ validationType: ValidationType .partial,
190+ statusInfo: 'Channel beta, 1.0.0, on Linux, locale en_US.UTF-8' ,
191+ messages: containsAll (const < ValidationMessage > [
192+ ValidationMessage .hint ('Upstream repository https://github.com/flutter/flutter.git is not the same as FLUTTER_GIT_URL' ),
193+ ValidationMessage ('FLUTTER_GIT_URL = https://githubmirror.com/flutter.git' ),
194+ ]),
195+ ));
196+ });
197+
198+ testWithoutContext ('FlutterValidator fails when channel is unknown' , () async {
199+ final FlutterValidator flutterValidator = FlutterValidator (
200+ platform: FakePlatform (localeName: 'en_US.UTF-8' ),
201+ flutterVersion: () => FakeFlutterVersion (
202+ frameworkVersion: '1.0.0' ,
203+ // channel is unknown by default
204+ ),
205+ devToolsVersion: () => '2.8.0' ,
206+ userMessages: UserMessages (),
207+ artifacts: Artifacts .test (),
208+ fileSystem: MemoryFileSystem .test (),
209+ processManager: FakeProcessManager .any (),
210+ operatingSystemUtils: FakeOperatingSystemUtils (name: 'Linux' ),
211+ flutterRoot: () => 'sdk/flutter' ,
212+ );
213+
214+ expect (await flutterValidator.validate (), _matchDoctorValidation (
215+ validationType: ValidationType .partial,
184216 statusInfo: 'Channel unknown, 1.0.0, on Linux, locale en_US.UTF-8' ,
185- messages: contains (const ValidationMessage ('FLUTTER_GIT_URL = https://githubmirror.com/flutter.git' )),
217+ messages: contains (const ValidationMessage .hint ('Flutter version 1.0.0 on channel unknown at sdk/flutter' )),
218+ ));
219+ });
220+
221+ testWithoutContext ('FlutterValidator fails when framework version is unknown' , () async {
222+ final FlutterValidator flutterValidator = FlutterValidator (
223+ platform: FakePlatform (localeName: 'en_US.UTF-8' ),
224+ flutterVersion: () => FakeFlutterVersion (
225+ frameworkVersion: '0.0.0-unknown' ,
226+ channel: 'beta' ,
227+ ),
228+ devToolsVersion: () => '2.8.0' ,
229+ userMessages: UserMessages (),
230+ artifacts: Artifacts .test (),
231+ fileSystem: MemoryFileSystem .test (),
232+ processManager: FakeProcessManager .any (),
233+ operatingSystemUtils: FakeOperatingSystemUtils (name: 'Linux' ),
234+ flutterRoot: () => 'sdk/flutter' ,
235+ );
236+
237+ expect (await flutterValidator.validate (), _matchDoctorValidation (
238+ validationType: ValidationType .partial,
239+ statusInfo: 'Channel beta, 0.0.0-unknown, on Linux, locale en_US.UTF-8' ,
240+ messages: contains (const ValidationMessage .hint ('Flutter version 0.0.0-unknown on channel beta at sdk/flutter' )),
186241 ));
187242 });
188243
189244 group ('FlutterValidator shows flutter upstream remote' , () {
190- testWithoutContext ('default url' , () async {
245+ testWithoutContext ('standard url' , () async {
191246 final FlutterValidator flutterValidator = FlutterValidator (
192247 platform: FakePlatform (localeName: 'en_US.UTF-8' ),
193- flutterVersion: () => FakeFlutterVersion (frameworkVersion: '1.0.0' ),
248+ flutterVersion: () => FakeFlutterVersion (
249+ frameworkVersion: '1.0.0' ,
250+ channel: 'beta'
251+ ),
194252 devToolsVersion: () => '2.8.0' ,
195253 userMessages: UserMessages (),
196254 artifacts: Artifacts .test (),
@@ -202,16 +260,41 @@ void main() {
202260
203261 expect (await flutterValidator.validate (), _matchDoctorValidation (
204262 validationType: ValidationType .installed,
205- statusInfo: 'Channel unknown , 1.0.0, on Linux, locale en_US.UTF-8' ,
263+ statusInfo: 'Channel beta , 1.0.0, on Linux, locale en_US.UTF-8' ,
206264 messages: contains (const ValidationMessage ('Upstream repository https://github.com/flutter/flutter.git' )),
207265 ));
208266 });
209267
210- testWithoutContext ('unknown url if upstream is null ' , () async {
268+ testWithoutContext ('non-standard url' , () async {
211269 final FlutterValidator flutterValidator = FlutterValidator (
212270 platform: FakePlatform (localeName: 'en_US.UTF-8' ),
213271 flutterVersion: () => FakeFlutterVersion (
214272 frameworkVersion: '1.0.0' ,
273+ channel: 'beta' ,
274+ repositoryUrl: 'https://githubmirror.com/flutter.git'
275+ ),
276+ devToolsVersion: () => '2.8.0' ,
277+ userMessages: UserMessages (),
278+ artifacts: Artifacts .test (),
279+ fileSystem: MemoryFileSystem .test (),
280+ processManager: FakeProcessManager .any (),
281+ operatingSystemUtils: FakeOperatingSystemUtils (name: 'Linux' ),
282+ flutterRoot: () => 'sdk/flutter' ,
283+ );
284+
285+ expect (await flutterValidator.validate (), _matchDoctorValidation (
286+ validationType: ValidationType .partial,
287+ statusInfo: 'Channel beta, 1.0.0, on Linux, locale en_US.UTF-8' ,
288+ messages: contains (const ValidationMessage .hint ('Upstream repository https://githubmirror.com/flutter.git is not a standard remote' )),
289+ ));
290+ });
291+
292+ testWithoutContext ('as unknown if upstream is null' , () async {
293+ final FlutterValidator flutterValidator = FlutterValidator (
294+ platform: FakePlatform (localeName: 'en_US.UTF-8' ),
295+ flutterVersion: () => FakeFlutterVersion (
296+ frameworkVersion: '1.0.0' ,
297+ channel: 'beta' ,
215298 repositoryUrl: null ,
216299 ),
217300 devToolsVersion: () => '2.8.0' ,
@@ -224,9 +307,9 @@ void main() {
224307 );
225308
226309 expect (await flutterValidator.validate (), _matchDoctorValidation (
227- validationType: ValidationType .installed ,
228- statusInfo: 'Channel unknown , 1.0.0, on Linux, locale en_US.UTF-8' ,
229- messages: contains (const ValidationMessage ('Upstream repository unknown' )),
310+ validationType: ValidationType .partial ,
311+ statusInfo: 'Channel beta , 1.0.0, on Linux, locale en_US.UTF-8' ,
312+ messages: contains (const ValidationMessage . hint ('Upstream repository unknown' )),
230313 ));
231314 });
232315 });
@@ -240,6 +323,9 @@ class FakeOperatingSystemUtils extends Fake implements OperatingSystemUtils {
240323}
241324
242325class FakeThrowingFlutterVersion extends FakeFlutterVersion {
326+ @override
327+ String get channel => 'beta' ;
328+
243329 @override
244330 String get frameworkCommitDate {
245331 throw VersionCheckError ('version error' );
0 commit comments