|  | // Copyright 2014 The Flutter Authors. 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:convert'; | 
|  | import 'dart:io'; | 
|  |  | 
|  | import 'common.dart'; | 
|  |  | 
|  | // This will be used in many of our unit tests. | 
|  | void expectSetMatch<T>(Iterable<T> actual, Iterable<T> expected) { | 
|  | expect(Set<T>.from(actual), equals(Set<T>.from(expected))); | 
|  | } | 
|  |  | 
|  | // May return null if the credentials file doesn't exist. | 
|  | Map<String, dynamic> getTestGcpCredentialsJson() { | 
|  | final File f = File('secret/test_gcp_credentials.json'); | 
|  | if (!f.existsSync()) { | 
|  | return null; | 
|  | } | 
|  | return jsonDecode(File('secret/test_gcp_credentials.json').readAsStringSync()) | 
|  | as Map<String, dynamic>; | 
|  | } |