@@ -8,6 +8,7 @@ import 'package:flutter/material.dart';
8
8
import 'package:flutter/rendering.dart' ;
9
9
import 'package:flutter/services.dart' ;
10
10
import 'package:flutter_test/flutter_test.dart' ;
11
+ import 'package:path/path.dart' as path;
11
12
12
13
void main () {
13
14
TestWidgetsFlutterBinding .ensureInitialized ();
@@ -25,6 +26,8 @@ void main() {
25
26
case 'Crashlytics#onError' :
26
27
return 'Error reported to Crashlytics.' ;
27
28
case 'Crashlytics#setUserIdentifier' :
29
+ case 'Crashlytics#setKey' :
30
+ case 'Crashlytics#log' :
28
31
return true ;
29
32
default :
30
33
return false ;
@@ -33,6 +36,25 @@ void main() {
33
36
log.clear ();
34
37
});
35
38
39
+ test ('log' , () async {
40
+ crashlytics.enableInDevMode = true ;
41
+ final msg = 'foo' ;
42
+ await crashlytics.log (msg);
43
+ expect (log[0 ].method, 'Crashlytics#log' );
44
+ expect (log[0 ].arguments['log' ], msg);
45
+ });
46
+
47
+ test ('setKeys' , () async {
48
+ crashlytics.enableInDevMode = true ;
49
+ final key = 'testKey' ;
50
+ // All values are converted to Strings by Dart code
51
+ final value = 'testValue' ;
52
+ await crashlytics.setCustomKey (key, value);
53
+ expect (log[0 ].method, 'Crashlytics#setKey' );
54
+ expect (log[0 ].arguments['key' ], key);
55
+ expect (log[0 ].arguments['value' ], value);
56
+ });
57
+
36
58
test ('recordFlutterError' , () async {
37
59
final FlutterErrorDetails details = FlutterErrorDetails (
38
60
exception: 'foo exception' ,
@@ -44,44 +66,26 @@ void main() {
44
66
],
45
67
context: ErrorDescription ('foo context' ),
46
68
);
47
- crashlytics
48
- ..enableInDevMode = true
49
- ..log ('foo' )
50
- ..setCustomKey ('testBool' , true )
51
- ..setCustomKey ('testInt' , 42 )
52
- ..setCustomKey ('testDouble' , 42.0 )
53
- ..setCustomKey ('testString' , 'bar' );
69
+ crashlytics.enableInDevMode = true ;
54
70
await crashlytics.recordFlutterError (details);
55
71
expect (log[0 ].method, 'Crashlytics#onError' );
56
72
expect (log[0 ].arguments['exception' ], 'foo exception' );
57
73
expect (log[0 ].arguments['context' ], 'foo context' );
58
74
expect (log[0 ].arguments['information' ], 'test message\n second message' );
59
- expect (log[0 ].arguments['logs' ], isNotEmpty);
60
- expect (log[0 ].arguments['logs' ], contains ('foo' ));
61
- expect (log[0 ].arguments['keys' ]['testBool' ], 'true' );
62
- expect (log[0 ].arguments['keys' ]['testInt' ], '42' );
63
- expect (log[0 ].arguments['keys' ]['testDouble' ], '42.0' );
64
- expect (log[0 ].arguments['keys' ]['testString' ], 'bar' );
65
75
});
66
76
67
77
test ('recordError' , () async {
68
78
crashlytics.enableInDevMode = true ;
69
- crashlytics.log ('foo' );
70
79
await crashlytics.recordError ('foo exception' , null , context: "context" );
71
80
expect (log[0 ].method, 'Crashlytics#onError' );
72
81
expect (log[0 ].arguments['exception' ], 'foo exception' );
73
82
expect (log[0 ].arguments['context' ], "context" );
74
83
// Confirm that the stack trace contains current stack.
75
84
expect (
76
85
log[0 ].arguments['stackTraceElements' ],
77
- contains (containsPair ('file' , 'firebase_crashlytics_test.dart' )),
86
+ contains (containsPair (
87
+ 'file' , path.join ('test' , 'firebase_crashlytics_test.dart' ))),
78
88
);
79
- expect (log[0 ].arguments['logs' ], isNotEmpty);
80
- expect (log[0 ].arguments['logs' ], contains ('foo' ));
81
- expect (log[0 ].arguments['keys' ]['testBool' ], 'true' );
82
- expect (log[0 ].arguments['keys' ]['testInt' ], '42' );
83
- expect (log[0 ].arguments['keys' ]['testDouble' ], '42.0' );
84
- expect (log[0 ].arguments['keys' ]['testString' ], 'bar' );
85
89
});
86
90
87
91
test ('crash' , () {
0 commit comments