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
2e33d08d
Unverified
Commit
2e33d08d
authored
Nov 13, 2018
by
Jonah Williams
Committed by
GitHub
Nov 13, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
communicate fuchsia error states to developers (#24191)
parent
cc6e5b2b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
66 additions
and
5 deletions
+66
-5
fuchsia_device.dart
packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart
+3
-0
fuchsia_sdk.dart
packages/flutter_tools/lib/src/fuchsia/fuchsia_sdk.dart
+4
-0
fuchsa_device_test.dart
packages/flutter_tools/test/fuchsia/fuchsa_device_test.dart
+59
-5
No files found.
packages/flutter_tools/lib/src/fuchsia/fuchsia_device.dart
View file @
2e33d08d
...
...
@@ -203,6 +203,9 @@ class FuchsiaDevice extends Device {
final
RunResult
result
=
await
runAsync
(<
String
>[
'ssh'
,
'-F'
,
fuchsiaArtifacts
.
sshConfig
.
absolute
.
path
,
id
,
command
]);
if
(
result
.
exitCode
!=
0
)
{
if
(
result
.
stderr
.
contains
(
'/tmp/dart.services: No such file or directory'
))
{
throwToolExit
(
'No Dart Observatories found. Are you running a debug build?'
);
}
throwToolExit
(
'Command failed:
$command
\n
stdout:
${result.stdout}
\n
stderr:
${result.stderr}
'
);
return
null
;
}
...
...
packages/flutter_tools/lib/src/fuchsia/fuchsia_sdk.dart
View file @
2e33d08d
...
...
@@ -105,6 +105,10 @@ class FuchsiaArtifacts {
File
get
sshConfig
{
if
(
_sshConfig
==
null
)
{
final
String
buildDirectory
=
platform
.
environment
[
'BUILD_DIR'
];
if
(
buildDirectory
==
null
)
{
throwToolExit
(
'BUILD_DIR must be supplied to locate SSH keys. For example:
\n
'
' export BUILD_DIR=path/to/fuchsia/out/x64
\n
'
);
}
_sshConfig
=
fs
.
file
(
'
$buildDirectory
/ssh-keys/ssh_config'
);
}
return
_sshConfig
;
...
...
packages/flutter_tools/test/fuchsia/fuchsa_device_test.dart
View file @
2e33d08d
...
...
@@ -5,13 +5,16 @@
import
'dart:async'
;
import
'dart:convert'
;
import
'package:mockito/mockito.dart'
;
import
'package:process/process.dart'
;
import
'package:flutter_tools/src/base/common.dart'
;
import
'package:flutter_tools/src/base/file_system.dart'
;
import
'package:flutter_tools/src/base/io.dart'
;
import
'package:flutter_tools/src/base/time.dart'
;
import
'package:flutter_tools/src/device.dart'
;
import
'package:flutter_tools/src/fuchsia/fuchsia_device.dart'
;
import
'package:flutter_tools/src/base/time.dart'
;
import
'package:mockito/mockito.dart'
;
import
'package:process/process.dart'
;
import
'package:flutter_tools/src/fuchsia/fuchsia_sdk.dart'
;
import
'../src/common.dart'
;
import
'../src/context.dart'
;
...
...
@@ -43,6 +46,51 @@ d 2 0 .
expect(ports.length, 1);
expect(ports.single, 36780);
});
});
group('
displays
friendly
error
when
', () {
final MockProcessManager mockProcessManager = MockProcessManager();
final MockProcessResult mockProcessResult = MockProcessResult();
final MockFuchsiaArtifacts mockFuchsiaArtifacts = MockFuchsiaArtifacts();
final MockFile mockFile = MockFile();
when(mockProcessManager.run(
any,
environment: anyNamed('
environment
'),
workingDirectory: anyNamed('
workingDirectory
'),
)).thenAnswer((Invocation invocation) => Future<ProcessResult>.value(mockProcessResult));
when(mockProcessResult.exitCode).thenReturn(1);
when<String>(mockProcessResult.stdout).thenReturn('');
when<String>(mockProcessResult.stderr).thenReturn('
ls:
lstat
/
tmp
/
dart
.
services
:
No
such
file
or
directory
');
when(mockFuchsiaArtifacts.sshConfig).thenReturn(mockFile);
when(mockFile.absolute).thenReturn(mockFile);
when(mockFile.path).thenReturn('');
testUsingContext('
No
BUILD_DIR
set
', () async {
final FuchsiaDevice device = FuchsiaDevice('
id
');
ToolExit toolExit;
try {
await device.servicePorts();
} on ToolExit catch (err) {
toolExit = err;
}
expect(toolExit.message, contains('
BUILD_DIR
must
be
supplied
to
locate
SSH
keys
'));
}, overrides: <Type, Generator>{
ProcessManager: () => mockProcessManager,
});
testUsingContext('
with
BUILD_DIR
set
', () async {
final FuchsiaDevice device = FuchsiaDevice('
id
');
ToolExit toolExit;
try {
await device.servicePorts();
} on ToolExit catch (err) {
toolExit = err;
}
expect(toolExit.message, '
No
Dart
Observatories
found
.
Are
you
running
a
debug
build
?
');
}, overrides: <Type, Generator>{
ProcessManager: () => mockProcessManager,
FuchsiaArtifacts: () => mockFuchsiaArtifacts,
});
group('
device
logs
', () {
const String exampleUtcLogs = '''
...
...
@@ -53,7 +101,7 @@ d 2 0 .
[
2018
-
11
-
09
01
:
30
:
02
][
41175
][
41187
][
bar
]
INFO:
Invoking
a
bar
[
2018
-
11
-
09
01
:
30
:
12
][
52580
][
52983
][
log
]
INFO:
example_app
(
flutter
):
Did
thing
this
time
''';
''';
final MockProcessManager mockProcessManager = MockProcessManager();
final MockProcess mockProcess = MockProcess();
Completer<int> exitCode;
...
...
@@ -139,6 +187,12 @@ d 2 0 .
});
}
class MockFuchsiaArtifacts extends Mock implements FuchsiaArtifacts {}
class MockProcessManager extends Mock implements ProcessManager {}
class MockProcessResult extends Mock implements ProcessResult {}
class MockFile extends Mock implements File {}
class MockProcess extends Mock implements Process {}
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