Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
d2c94990
Commit
d2c94990
authored
Feb 24, 2016
by
yjbanov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
deflake retry_test.dart (using FakeAsync)
parent
54194a90
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
55 additions
and
23 deletions
+55
-23
retry.dart
packages/flutter_driver/lib/src/retry.dart
+12
-1
retry_test.dart
packages/flutter_driver/test/retry_test.dart
+43
-22
No files found.
packages/flutter_driver/lib/src/retry.dart
View file @
d2c94990
...
...
@@ -19,7 +19,7 @@ Future<dynamic> retry(Action action, Duration timeout,
assert
(
timeout
!=
null
);
assert
(
pauseBetweenRetries
!=
null
);
Stopwatch
sw
=
new
Stopwatch
()..
start
();
Stopwatch
sw
=
stopwatchFactory
()..
start
();
dynamic
result
=
null
;
dynamic
lastError
=
null
;
dynamic
lastStackTrace
=
null
;
...
...
@@ -43,3 +43,14 @@ Future<dynamic> retry(Action action, Duration timeout,
else
return
new
Future
.
error
(
lastError
,
lastStackTrace
);
}
/// A function that produces a [Stopwatch].
typedef
Stopwatch
StopwatchFactory
(
);
/// Restores [stopwatchFactory] to the default implementation.
void
restoreStopwatchFactory
(
)
{
stopwatchFactory
=
()
=>
new
Stopwatch
();
}
/// Used by [retry] as a source of [Stopwatch] implementation.
StopwatchFactory
stopwatchFactory
=
()
=>
new
Stopwatch
();
packages/flutter_driver/test/retry_test.dart
View file @
d2c94990
...
...
@@ -3,14 +3,29 @@
// found in the LICENSE file.
import
'package:test/test.dart'
;
import
'package:quiver/time.dart'
;
import
'package:quiver/testing/async.dart'
;
import
'package:quiver/testing/time.dart'
;
import
'package:flutter_driver/src/retry.dart'
;
main
()
{
group
(
'retry'
,
()
{
FakeAsync
fakeAsync
;
setUp
(()
{
fakeAsync
=
new
FakeAsync
();
Clock
fakeClock
=
fakeAsync
.
getClock
(
new
DateTime
.
now
());
stopwatchFactory
=
()
{
return
new
FakeStopwatch
(
()
=>
fakeClock
.
now
().
millisecondsSinceEpoch
,
1000
);
};
});
test
(
'retries until succeeds'
,
()
{
new
FakeAsync
().
run
((
FakeAsync
fakeAsync
)
{
fakeAsync
.
run
((
_
)
{
int
retryCount
=
0
;
expect
(
...
...
@@ -37,28 +52,34 @@ main() {
});
test
(
'times out returning last error'
,
()
async
{
bool
timedOut
=
false
;
int
retryCount
=
0
;
dynamic
lastError
;
dynamic
lastStackTrace
;
fakeAsync
.
run
((
_
)
{
bool
timedOut
=
false
;
int
retryCount
=
0
;
dynamic
lastError
;
dynamic
lastStackTrace
;
await
retry
(
()
{
retryCount
++;
throw
'error'
;
},
new
Duration
(
milliseconds:
9
),
new
Duration
(
milliseconds:
2
)
).
catchError
((
error
,
stackTrace
)
{
timedOut
=
true
;
lastError
=
error
;
lastStackTrace
=
stackTrace
;
});
retry
(
()
{
retryCount
++;
throw
'error'
;
},
new
Duration
(
milliseconds:
7
),
new
Duration
(
milliseconds:
2
)
).
catchError
((
error
,
stackTrace
)
{
timedOut
=
true
;
lastError
=
error
;
lastStackTrace
=
stackTrace
;
});
print
(
'before elapse'
);
fakeAsync
.
elapse
(
new
Duration
(
milliseconds:
10
));
print
(
'after elapse'
);
expect
(
timedOut
,
isTrue
);
expect
(
lastError
,
'error'
);
expect
(
lastStackTrace
,
isNotNull
);
expect
(
retryCount
,
4
);
},
skip:
"Flaky. See https://github.com/flutter/flutter/issues/2133"
);
expect
(
timedOut
,
isTrue
);
expect
(
lastError
,
'error'
);
expect
(
lastStackTrace
,
isNotNull
);
expect
(
retryCount
,
4
);
});
});
});
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment