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
5a34e798
Unverified
Commit
5a34e798
authored
Jul 18, 2019
by
Emmanuel Garcia
Committed by
GitHub
Jul 18, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Catch exceptions thrown by runChecked* when possible (#36109)
parent
7b0cc505
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
243 additions
and
52 deletions
+243
-52
android_device.dart
packages/flutter_tools/lib/src/android/android_device.dart
+34
-13
application_package.dart
packages/flutter_tools/lib/src/application_package.dart
+15
-10
upgrade.dart
packages/flutter_tools/lib/src/commands/upgrade.dart
+20
-7
version.dart
packages/flutter_tools/lib/src/commands/version.dart
+14
-4
code_signing.dart
packages/flutter_tools/lib/src/ios/code_signing.dart
+20
-5
xcodeproj.dart
packages/flutter_tools/lib/src/ios/xcodeproj.dart
+14
-9
android_device_test.dart
...tools/test/general.shard/android/android_device_test.dart
+34
-4
application_package_test.dart
...er_tools/test/general.shard/application_package_test.dart
+9
-0
version_test.dart
...utter_tools/test/general.shard/commands/version_test.dart
+21
-0
code_signing_test.dart
...utter_tools/test/general.shard/ios/code_signing_test.dart
+56
-0
xcodeproj_test.dart
.../flutter_tools/test/general.shard/ios/xcodeproj_test.dart
+6
-0
No files found.
packages/flutter_tools/lib/src/android/android_device.dart
View file @
5a34e798
...
@@ -378,10 +378,14 @@ class AndroidDevice extends Device {
...
@@ -378,10 +378,14 @@ class AndroidDevice extends Device {
printError
(
'
$installResult
'
);
printError
(
'
$installResult
'
);
return
false
;
return
false
;
}
}
try
{
await
runAdbCheckedAsync
(<
String
>[
await
runAdbCheckedAsync
(<
String
>[
'shell'
,
'echo'
,
'-n'
,
_getSourceSha1
(
app
),
'>'
,
_getDeviceSha1Path
(
app
),
'shell'
,
'echo'
,
'-n'
,
_getSourceSha1
(
app
),
'>'
,
_getDeviceSha1Path
(
app
),
]);
]);
}
on
ProcessException
catch
(
error
)
{
printError
(
'adb shell failed to write the SHA hash:
$error
.'
);
return
false
;
}
return
true
;
return
true
;
}
}
...
@@ -390,7 +394,13 @@ class AndroidDevice extends Device {
...
@@ -390,7 +394,13 @@ class AndroidDevice extends Device {
if
(!
await
_checkForSupportedAdbVersion
()
||
!
await
_checkForSupportedAndroidVersion
())
if
(!
await
_checkForSupportedAdbVersion
()
||
!
await
_checkForSupportedAndroidVersion
())
return
false
;
return
false
;
final
String
uninstallOut
=
(
await
runCheckedAsync
(
adbCommandForDevice
(<
String
>[
'uninstall'
,
app
.
id
]))).
stdout
;
String
uninstallOut
;
try
{
uninstallOut
=
(
await
runCheckedAsync
(
adbCommandForDevice
(<
String
>[
'uninstall'
,
app
.
id
]))).
stdout
;
}
catch
(
error
)
{
printError
(
'adb uninstall failed:
$error
'
);
return
false
;
}
final
RegExp
failureExp
=
RegExp
(
r'^Failure.*$'
,
multiLine:
true
);
final
RegExp
failureExp
=
RegExp
(
r'^Failure.*$'
,
multiLine:
true
);
final
String
failure
=
failureExp
.
stringMatch
(
uninstallOut
);
final
String
failure
=
failureExp
.
stringMatch
(
uninstallOut
);
if
(
failure
!=
null
)
{
if
(
failure
!=
null
)
{
...
@@ -615,13 +625,18 @@ class AndroidDevice extends Device {
...
@@ -615,13 +625,18 @@ class AndroidDevice extends Device {
static
final
RegExp
_timeRegExp
=
RegExp
(
r'^\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}'
,
multiLine:
true
);
static
final
RegExp
_timeRegExp
=
RegExp
(
r'^\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}'
,
multiLine:
true
);
/// Return the most recent timestamp in the Android log or
null
if there is
/// Return the most recent timestamp in the Android log or
[null]
if there is
/// no available timestamp. The format can be passed to logcat's -T option.
/// no available timestamp. The format can be passed to logcat's -T option.
String
get
lastLogcatTimestamp
{
String
get
lastLogcatTimestamp
{
final
String
output
=
runAdbCheckedSync
(<
String
>[
String
output
;
'shell'
,
'-x'
,
'logcat'
,
'-v'
,
'time'
,
'-t'
,
'1'
,
try
{
]);
output
=
runAdbCheckedSync
(<
String
>[
'shell'
,
'-x'
,
'logcat'
,
'-v'
,
'time'
,
'-t'
,
'1'
,
]);
}
catch
(
error
)
{
printError
(
'Failed to extract the most recent timestamp from the Android log:
$error
.'
);
return
null
;
}
final
Match
timeMatch
=
_timeRegExp
.
firstMatch
(
output
);
final
Match
timeMatch
=
_timeRegExp
.
firstMatch
(
output
);
return
timeMatch
?.
group
(
0
);
return
timeMatch
?.
group
(
0
);
}
}
...
@@ -940,9 +955,15 @@ class _AndroidDevicePortForwarder extends DevicePortForwarder {
...
@@ -940,9 +955,15 @@ class _AndroidDevicePortForwarder extends DevicePortForwarder {
List
<
ForwardedPort
>
get
forwardedPorts
{
List
<
ForwardedPort
>
get
forwardedPorts
{
final
List
<
ForwardedPort
>
ports
=
<
ForwardedPort
>[];
final
List
<
ForwardedPort
>
ports
=
<
ForwardedPort
>[];
final
String
stdout
=
runCheckedSync
(
device
.
adbCommandForDevice
(
String
stdout
;
<
String
>[
'forward'
,
'--list'
]
try
{
));
stdout
=
runCheckedSync
(
device
.
adbCommandForDevice
(
<
String
>[
'forward'
,
'--list'
]
));
}
catch
(
error
)
{
printError
(
'Failed to list forwarded ports:
$error
.'
);
return
ports
;
}
final
List
<
String
>
lines
=
LineSplitter
.
split
(
stdout
).
toList
();
final
List
<
String
>
lines
=
LineSplitter
.
split
(
stdout
).
toList
();
for
(
String
line
in
lines
)
{
for
(
String
line
in
lines
)
{
...
...
packages/flutter_tools/lib/src/application_package.dart
View file @
5a34e798
...
@@ -114,16 +114,21 @@ class AndroidApk extends ApplicationPackage {
...
@@ -114,16 +114,21 @@ class AndroidApk extends ApplicationPackage {
return
null
;
return
null
;
}
}
final
List
<
String
>
aaptArgs
=
<
String
>[
String
apptStdout
;
aaptPath
,
try
{
'dump'
,
apptStdout
=
runCheckedSync
(<
String
>[
'xmltree'
,
aaptPath
,
apk
.
path
,
'dump'
,
'AndroidManifest.xml'
,
'xmltree'
,
];
apk
.
path
,
'AndroidManifest.xml'
,
final
ApkManifestData
data
=
ApkManifestData
]);
.
parseFromXmlDump
(
runCheckedSync
(
aaptArgs
));
}
catch
(
error
)
{
printError
(
'Failed to extract manifest from APK:
$error
.'
);
return
null
;
}
final
ApkManifestData
data
=
ApkManifestData
.
parseFromXmlDump
(
apptStdout
);
if
(
data
==
null
)
{
if
(
data
==
null
)
{
printError
(
'Unable to read manifest info from
${apk.path}
.'
);
printError
(
'Unable to read manifest info from
${apk.path}
.'
);
...
...
packages/flutter_tools/lib/src/commands/upgrade.dart
View file @
5a34e798
...
@@ -8,6 +8,7 @@ import 'package:meta/meta.dart';
...
@@ -8,6 +8,7 @@ import 'package:meta/meta.dart';
import
'../base/common.dart'
;
import
'../base/common.dart'
;
import
'../base/file_system.dart'
;
import
'../base/file_system.dart'
;
import
'../base/io.dart'
;
import
'../base/os.dart'
;
import
'../base/os.dart'
;
import
'../base/process.dart'
;
import
'../base/process.dart'
;
import
'../cache.dart'
;
import
'../cache.dart'
;
...
@@ -98,8 +99,14 @@ class UpgradeCommandRunner {
...
@@ -98,8 +99,14 @@ class UpgradeCommandRunner {
'git'
,
'status'
,
'-s'
'git'
,
'status'
,
'-s'
],
workingDirectory:
Cache
.
flutterRoot
);
],
workingDirectory:
Cache
.
flutterRoot
);
return
result
.
stdout
.
trim
().
isNotEmpty
;
return
result
.
stdout
.
trim
().
isNotEmpty
;
}
catch
(
e
)
{
}
on
ProcessException
catch
(
error
)
{
throwToolExit
(
'git status failed:
$e
'
);
throwToolExit
(
'The tool could not verify the status of the current flutter checkout. '
'This might be due to git not being installed or an internal error.'
'If it is okay to ignore potential local changes, then re-run this'
'command with --force.'
'
\n
Error:
$error
.'
);
}
}
return
false
;
return
false
;
}
}
...
@@ -132,11 +139,17 @@ class UpgradeCommandRunner {
...
@@ -132,11 +139,17 @@ class UpgradeCommandRunner {
}
else
{
}
else
{
tag
=
'v
${gitTagVersion.x}
.
${gitTagVersion.y}
.
${gitTagVersion.z}
'
;
tag
=
'v
${gitTagVersion.x}
.
${gitTagVersion.y}
.
${gitTagVersion.z}
'
;
}
}
final
RunResult
runResult
=
await
runCheckedAsync
(<
String
>[
try
{
'git'
,
'reset'
,
'--hard'
,
tag
,
await
runCheckedAsync
(<
String
>[
],
workingDirectory:
Cache
.
flutterRoot
);
'git'
,
'reset'
,
'--hard'
,
tag
,
if
(
runResult
.
exitCode
!=
0
)
{
],
workingDirectory:
Cache
.
flutterRoot
);
throwToolExit
(
'Failed to restore branch from hotfix.'
);
}
on
ProcessException
catch
(
error
)
{
throwToolExit
(
'Unable to upgrade Flutter: The tool could not update to the version
$tag
. '
'This may be due to git not being installed or an internal error.'
'Please ensure that git is installed on your computer and retry again.'
'
\n
Error:
$error
.'
);
}
}
}
}
...
...
packages/flutter_tools/lib/src/commands/version.dart
View file @
5a34e798
...
@@ -6,6 +6,7 @@ import 'dart:async';
...
@@ -6,6 +6,7 @@ import 'dart:async';
import
'../base/common.dart'
;
import
'../base/common.dart'
;
import
'../base/file_system.dart'
;
import
'../base/file_system.dart'
;
import
'../base/io.dart'
;
import
'../base/os.dart'
;
import
'../base/os.dart'
;
import
'../base/process.dart'
;
import
'../base/process.dart'
;
import
'../base/version.dart'
;
import
'../base/version.dart'
;
...
@@ -34,10 +35,19 @@ class VersionCommand extends FlutterCommand {
...
@@ -34,10 +35,19 @@ class VersionCommand extends FlutterCommand {
Version
minSupportedVersion
=
Version
.
parse
(
'1.2.1'
);
Version
minSupportedVersion
=
Version
.
parse
(
'1.2.1'
);
Future
<
List
<
String
>>
getTags
()
async
{
Future
<
List
<
String
>>
getTags
()
async
{
final
RunResult
runResult
=
await
runCheckedAsync
(
RunResult
runResult
;
<
String
>[
'git'
,
'tag'
,
'-l'
,
'v*'
,
'--sort=-creatordate'
],
try
{
workingDirectory:
Cache
.
flutterRoot
,
runResult
=
await
runCheckedAsync
(
);
<
String
>[
'git'
,
'tag'
,
'-l'
,
'v*'
,
'--sort=-creatordate'
],
workingDirectory:
Cache
.
flutterRoot
,
);
}
on
ProcessException
catch
(
error
)
{
throwToolExit
(
'Unable to get the tags. '
'This might be due to git not being installed or an internal error'
'
\n
Error:
$error
.'
);
}
return
runResult
.
toString
().
split
(
'
\n
'
);
return
runResult
.
toString
().
split
(
'
\n
'
);
}
}
...
...
packages/flutter_tools/lib/src/ios/code_signing.dart
View file @
5a34e798
...
@@ -120,7 +120,16 @@ Future<Map<String, String>> getCodeSigningIdentityDevelopmentTeam({
...
@@ -120,7 +120,16 @@ Future<Map<String, String>> getCodeSigningIdentityDevelopmentTeam({
const
List
<
String
>
findIdentityCommand
=
const
List
<
String
>
findIdentityCommand
=
<
String
>[
'security'
,
'find-identity'
,
'-p'
,
'codesigning'
,
'-v'
];
<
String
>[
'security'
,
'find-identity'
,
'-p'
,
'codesigning'
,
'-v'
];
final
List
<
String
>
validCodeSigningIdentities
=
runCheckedSync
(
findIdentityCommand
)
String
findIdentityStdout
;
try
{
findIdentityStdout
=
runCheckedSync
(
findIdentityCommand
);
}
catch
(
error
)
{
printTrace
(
'Unexpected failure from find-identity:
$error
.'
);
return
null
;
}
final
List
<
String
>
validCodeSigningIdentities
=
findIdentityStdout
.
split
(
'
\n
'
)
.
split
(
'
\n
'
)
.
map
<
String
>((
String
outputLine
)
{
.
map
<
String
>((
String
outputLine
)
{
return
_securityFindIdentityDeveloperIdentityExtractionPattern
return
_securityFindIdentityDeveloperIdentityExtractionPattern
...
@@ -148,12 +157,18 @@ Future<Map<String, String>> getCodeSigningIdentityDevelopmentTeam({
...
@@ -148,12 +157,18 @@ Future<Map<String, String>> getCodeSigningIdentityDevelopmentTeam({
if
(
signingCertificateId
==
null
)
if
(
signingCertificateId
==
null
)
return
null
;
return
null
;
final
String
signingCertificate
=
runCheckedSync
(
String
signingCertificateStdout
;
<
String
>[
'security'
,
'find-certificate'
,
'-c'
,
signingCertificateId
,
'-p'
]
try
{
);
signingCertificateStdout
=
runCheckedSync
(
<
String
>[
'security'
,
'find-certificate'
,
'-c'
,
signingCertificateId
,
'-p'
]
);
}
catch
(
error
)
{
printTrace
(
'Couldn
\'
t find the certificate:
$error
.'
);
return
null
;
}
final
Process
opensslProcess
=
await
runCommand
(
const
<
String
>[
'openssl'
,
'x509'
,
'-subject'
]);
final
Process
opensslProcess
=
await
runCommand
(
const
<
String
>[
'openssl'
,
'x509'
,
'-subject'
]);
await
(
opensslProcess
.
stdin
..
write
(
signingCertificate
)).
close
();
await
(
opensslProcess
.
stdin
..
write
(
signingCertificate
Stdout
)).
close
();
final
String
opensslOutput
=
await
utf8
.
decodeStream
(
opensslProcess
.
stdout
);
final
String
opensslOutput
=
await
utf8
.
decodeStream
(
opensslProcess
.
stdout
);
// Fire and forget discard of the stderr stream so we don't hold onto resources.
// Fire and forget discard of the stderr stream so we don't hold onto resources.
...
...
packages/flutter_tools/lib/src/ios/xcodeproj.dart
View file @
5a34e798
...
@@ -174,15 +174,20 @@ class XcodeProjectInterpreter {
...
@@ -174,15 +174,20 @@ class XcodeProjectInterpreter {
}
}
Map
<
String
,
String
>
getBuildSettings
(
String
projectPath
,
String
target
)
{
Map
<
String
,
String
>
getBuildSettings
(
String
projectPath
,
String
target
)
{
final
String
out
=
runCheckedSync
(<
String
>[
try
{
_executable
,
final
String
out
=
runCheckedSync
(<
String
>[
'-project'
,
_executable
,
fs
.
path
.
absolute
(
projectPath
),
'-project'
,
'-target'
,
fs
.
path
.
absolute
(
projectPath
),
target
,
'-target'
,
'-showBuildSettings'
,
target
,
],
workingDirectory:
projectPath
);
'-showBuildSettings'
,
return
parseXcodeBuildSettings
(
out
);
],
workingDirectory:
projectPath
);
return
parseXcodeBuildSettings
(
out
);
}
catch
(
error
)
{
printTrace
(
'Unexpected failure to get the build settings:
$error
.'
);
return
const
<
String
,
String
>{};
}
}
}
Future
<
XcodeProjectInfo
>
getInfo
(
String
projectPath
)
async
{
Future
<
XcodeProjectInfo
>
getInfo
(
String
projectPath
)
async
{
...
...
packages/flutter_tools/test/general.shard/android/android_device_test.dart
View file @
5a34e798
...
@@ -10,6 +10,7 @@ import 'package:file/memory.dart';
...
@@ -10,6 +10,7 @@ import 'package:file/memory.dart';
import
'package:flutter_tools/src/android/android_console.dart'
;
import
'package:flutter_tools/src/android/android_console.dart'
;
import
'package:flutter_tools/src/android/android_device.dart'
;
import
'package:flutter_tools/src/android/android_device.dart'
;
import
'package:flutter_tools/src/android/android_sdk.dart'
;
import
'package:flutter_tools/src/android/android_sdk.dart'
;
import
'package:flutter_tools/src/application_package.dart'
;
import
'package:flutter_tools/src/base/config.dart'
;
import
'package:flutter_tools/src/base/config.dart'
;
import
'package:flutter_tools/src/base/file_system.dart'
;
import
'package:flutter_tools/src/base/file_system.dart'
;
import
'package:flutter_tools/src/base/io.dart'
;
import
'package:flutter_tools/src/base/io.dart'
;
...
@@ -365,7 +366,7 @@ flutter:
...
@@ -365,7 +366,7 @@ flutter:
testUsingContext
(
'returns the generated host port from stdout'
,
()
async
{
testUsingContext
(
'returns the generated host port from stdout'
,
()
async
{
when
(
mockProcessManager
.
run
(
argThat
(
contains
(
'forward'
))))
when
(
mockProcessManager
.
run
(
argThat
(
contains
(
'forward'
))))
.
thenAnswer
((
_
)
async
=>
ProcessResult
(
0
,
0
,
'456'
,
''
));
.
thenAnswer
((
_
)
async
=>
ProcessResult
(
0
,
0
,
'456'
,
''
));
expect
(
await
forwarder
.
forward
(
123
),
equals
(
456
));
expect
(
await
forwarder
.
forward
(
123
),
equals
(
456
));
},
overrides:
<
Type
,
Generator
>{
},
overrides:
<
Type
,
Generator
>{
...
@@ -374,7 +375,7 @@ flutter:
...
@@ -374,7 +375,7 @@ flutter:
testUsingContext
(
'returns the supplied host port when stdout is empty'
,
()
async
{
testUsingContext
(
'returns the supplied host port when stdout is empty'
,
()
async
{
when
(
mockProcessManager
.
run
(
argThat
(
contains
(
'forward'
))))
when
(
mockProcessManager
.
run
(
argThat
(
contains
(
'forward'
))))
.
thenAnswer
((
_
)
async
=>
ProcessResult
(
0
,
0
,
''
,
''
));
.
thenAnswer
((
_
)
async
=>
ProcessResult
(
0
,
0
,
''
,
''
));
expect
(
await
forwarder
.
forward
(
123
,
hostPort:
456
),
equals
(
456
));
expect
(
await
forwarder
.
forward
(
123
,
hostPort:
456
),
equals
(
456
));
},
overrides:
<
Type
,
Generator
>{
},
overrides:
<
Type
,
Generator
>{
...
@@ -383,7 +384,7 @@ flutter:
...
@@ -383,7 +384,7 @@ flutter:
testUsingContext
(
'returns the supplied host port when stdout is the host port'
,
()
async
{
testUsingContext
(
'returns the supplied host port when stdout is the host port'
,
()
async
{
when
(
mockProcessManager
.
run
(
argThat
(
contains
(
'forward'
))))
when
(
mockProcessManager
.
run
(
argThat
(
contains
(
'forward'
))))
.
thenAnswer
((
_
)
async
=>
ProcessResult
(
0
,
0
,
'456'
,
''
));
.
thenAnswer
((
_
)
async
=>
ProcessResult
(
0
,
0
,
'456'
,
''
));
expect
(
await
forwarder
.
forward
(
123
,
hostPort:
456
),
equals
(
456
));
expect
(
await
forwarder
.
forward
(
123
,
hostPort:
456
),
equals
(
456
));
},
overrides:
<
Type
,
Generator
>{
},
overrides:
<
Type
,
Generator
>{
...
@@ -392,12 +393,34 @@ flutter:
...
@@ -392,12 +393,34 @@ flutter:
testUsingContext
(
'throws an error when stdout is not blank nor the host port'
,
()
async
{
testUsingContext
(
'throws an error when stdout is not blank nor the host port'
,
()
async
{
when
(
mockProcessManager
.
run
(
argThat
(
contains
(
'forward'
))))
when
(
mockProcessManager
.
run
(
argThat
(
contains
(
'forward'
))))
.
thenAnswer
((
_
)
async
=>
ProcessResult
(
0
,
0
,
'123456'
,
''
));
.
thenAnswer
((
_
)
async
=>
ProcessResult
(
0
,
0
,
'123456'
,
''
));
expect
(
forwarder
.
forward
(
123
,
hostPort:
456
),
throwsA
(
isInstanceOf
<
ProcessException
>()));
expect
(
forwarder
.
forward
(
123
,
hostPort:
456
),
throwsA
(
isInstanceOf
<
ProcessException
>()));
},
overrides:
<
Type
,
Generator
>{
},
overrides:
<
Type
,
Generator
>{
ProcessManager:
()
=>
mockProcessManager
,
ProcessManager:
()
=>
mockProcessManager
,
});
});
testUsingContext
(
'forwardedPorts returns empty list when forward failed'
,
()
{
when
(
mockProcessManager
.
runSync
(
argThat
(
contains
(
'forward'
))))
.
thenReturn
(
ProcessResult
(
0
,
1
,
''
,
''
));
expect
(
forwarder
.
forwardedPorts
,
equals
(
const
<
ForwardedPort
>[]));
},
overrides:
<
Type
,
Generator
>{
ProcessManager:
()
=>
mockProcessManager
,
});
});
group
(
'lastLogcatTimestamp'
,
()
{
final
ProcessManager
mockProcessManager
=
MockProcessManager
();
final
AndroidDevice
device
=
AndroidDevice
(
'1234'
);
testUsingContext
(
'returns null if shell command failed'
,
()
async
{
when
(
mockProcessManager
.
runSync
(
argThat
(
contains
(
'logcat'
))))
.
thenReturn
(
ProcessResult
(
0
,
1
,
''
,
''
));
expect
(
device
.
lastLogcatTimestamp
,
isNull
);
},
overrides:
<
Type
,
Generator
>{
ProcessManager:
()
=>
mockProcessManager
,
});
});
});
}
}
...
@@ -601,3 +624,10 @@ class MockUnresponsiveAndroidConsoleSocket extends Mock implements Socket {
...
@@ -601,3 +624,10 @@ class MockUnresponsiveAndroidConsoleSocket extends Mock implements Socket {
@override
@override
void
add
(
List
<
int
>
data
)
{}
void
add
(
List
<
int
>
data
)
{}
}
}
class
AndroidPackageTest
extends
ApplicationPackage
{
AndroidPackageTest
()
:
super
(
id:
'app-id'
);
@override
String
get
name
=>
'app-package'
;
}
packages/flutter_tools/test/general.shard/application_package_test.dart
View file @
5a34e798
...
@@ -129,6 +129,15 @@ void main() {
...
@@ -129,6 +129,15 @@ void main() {
),
),
);
);
},
overrides:
overrides
);
},
overrides:
overrides
);
testUsingContext
(
'returns null when failed to extract manifest'
,
()
async
{
final
AndroidSdkVersion
sdkVersion
=
MockitoAndroidSdkVersion
();
when
(
sdk
.
latestVersion
).
thenReturn
(
sdkVersion
);
when
(
mockProcessManager
.
runSync
(
argThat
(
contains
(
'logcat'
))))
.
thenReturn
(
ProcessResult
(
0
,
1
,
''
,
''
));
expect
(
AndroidApk
.
fromApk
(
null
),
isNull
);
},
overrides:
overrides
);
});
});
group
(
'ApkManifestData'
,
()
{
group
(
'ApkManifestData'
,
()
{
...
...
packages/flutter_tools/test/general.shard/commands/version_test.dart
View file @
5a34e798
...
@@ -6,6 +6,7 @@ import 'dart:async';
...
@@ -6,6 +6,7 @@ import 'dart:async';
import
'dart:convert'
;
import
'dart:convert'
;
import
'dart:io'
;
import
'dart:io'
;
import
'package:flutter_tools/src/base/common.dart'
;
import
'package:flutter_tools/src/base/io.dart'
;
import
'package:flutter_tools/src/base/io.dart'
;
import
'package:flutter_tools/src/cache.dart'
;
import
'package:flutter_tools/src/cache.dart'
;
import
'package:flutter_tools/src/commands/version.dart'
;
import
'package:flutter_tools/src/commands/version.dart'
;
...
@@ -59,12 +60,29 @@ void main() {
...
@@ -59,12 +60,29 @@ void main() {
},
overrides:
<
Type
,
Generator
>{
},
overrides:
<
Type
,
Generator
>{
ProcessManager:
()
=>
MockProcessManager
(),
ProcessManager:
()
=>
MockProcessManager
(),
});
});
testUsingContext
(
'exit tool if can
\'
t get the tags'
,
()
async
{
final
VersionCommand
command
=
VersionCommand
();
try
{
await
command
.
getTags
();
fail
(
'ToolExit expected'
);
}
catch
(
e
)
{
expect
(
e
,
isInstanceOf
<
ToolExit
>());
}
},
overrides:
<
Type
,
Generator
>{
ProcessManager:
()
=>
MockProcessManager
(
failGitTag:
true
),
});
});
});
}
}
class
MockProcessManager
extends
Mock
implements
ProcessManager
{
class
MockProcessManager
extends
Mock
implements
ProcessManager
{
MockProcessManager
({
this
.
failGitTag
=
false
});
String
version
=
''
;
String
version
=
''
;
bool
failGitTag
;
@override
@override
Future
<
ProcessResult
>
run
(
Future
<
ProcessResult
>
run
(
List
<
dynamic
>
command
,
{
List
<
dynamic
>
command
,
{
...
@@ -76,6 +94,9 @@ class MockProcessManager extends Mock implements ProcessManager {
...
@@ -76,6 +94,9 @@ class MockProcessManager extends Mock implements ProcessManager {
Encoding
stderrEncoding
=
systemEncoding
,
Encoding
stderrEncoding
=
systemEncoding
,
})
async
{
})
async
{
if
(
command
[
0
]
==
'git'
&&
command
[
1
]
==
'tag'
)
{
if
(
command
[
0
]
==
'git'
&&
command
[
1
]
==
'tag'
)
{
if
(
failGitTag
)
{
return
ProcessResult
(
0
,
1
,
''
,
''
);
}
return
ProcessResult
(
0
,
0
,
'v10.0.0
\r\n
v20.0.0'
,
''
);
return
ProcessResult
(
0
,
0
,
'v10.0.0
\r\n
v20.0.0'
,
''
);
}
}
if
(
command
[
0
]
==
'git'
&&
command
[
1
]
==
'checkout'
)
{
if
(
command
[
0
]
==
'git'
&&
command
[
1
]
==
'checkout'
)
{
...
...
packages/flutter_tools/test/general.shard/ios/code_signing_test.dart
View file @
5a34e798
...
@@ -440,6 +440,62 @@ void main() {
...
@@ -440,6 +440,62 @@ void main() {
Config:
()
=>
mockConfig
,
Config:
()
=>
mockConfig
,
AnsiTerminal:
()
=>
testTerminal
,
AnsiTerminal:
()
=>
testTerminal
,
});
});
testUsingContext
(
'find-identity failure'
,
()
async
{
when
(
mockProcessManager
.
runSync
(<
String
>[
'which'
,
'security'
]))
.
thenReturn
(
exitsHappy
);
when
(
mockProcessManager
.
runSync
(<
String
>[
'which'
,
'openssl'
]))
.
thenReturn
(
exitsHappy
);
when
(
mockProcessManager
.
runSync
(
argThat
(
contains
(
'find-identity'
)),
environment:
anyNamed
(
'environment'
),
workingDirectory:
anyNamed
(
'workingDirectory'
),
)).
thenReturn
(
ProcessResult
(
0
,
1
,
''
,
''
));
final
Map
<
String
,
String
>
signingConfigs
=
await
getCodeSigningIdentityDevelopmentTeam
(
iosApp:
app
);
expect
(
signingConfigs
,
isNull
);
},
overrides:
<
Type
,
Generator
>{
ProcessManager:
()
=>
mockProcessManager
,
Config:
()
=>
mockConfig
,
AnsiTerminal:
()
=>
testTerminal
,
});
testUsingContext
(
'find-certificate failure'
,
()
async
{
when
(
mockProcessManager
.
runSync
(<
String
>[
'which'
,
'security'
]))
.
thenReturn
(
exitsHappy
);
when
(
mockProcessManager
.
runSync
(<
String
>[
'which'
,
'openssl'
]))
.
thenReturn
(
exitsHappy
);
when
(
mockProcessManager
.
runSync
(
argThat
(
contains
(
'find-identity'
)),
environment:
anyNamed
(
'environment'
),
workingDirectory:
anyNamed
(
'workingDirectory'
),
)).
thenReturn
(
ProcessResult
(
1
,
// pid
0
,
// exitCode
'''
1) 86f7e437faa5a7fce15d1ddcb9eaeaea377667b8 "iPhone Developer: Profile 1 (1111AAAA11)"
2) da4b9237bacccdf19c0760cab7aec4a8359010b0 "iPhone Developer: Profile 2 (2222BBBB22)"
3) 5bf1fd927dfb8679496a2e6cf00cbe50c1c87145 "iPhone Developer: Profile 3 (3333CCCC33)"
3 valid identities found'''
,
''
,
));
mockTerminalStdInStream
=
Stream
<
String
>.
fromFuture
(
Future
<
String
>.
value
(
'3'
));
when
(
mockProcessManager
.
runSync
(
<
String
>[
'security'
,
'find-certificate'
,
'-c'
,
'3333CCCC33'
,
'-p'
],
environment:
anyNamed
(
'environment'
),
workingDirectory:
anyNamed
(
'workingDirectory'
),
)).
thenReturn
(
ProcessResult
(
1
,
1
,
''
,
''
));
final
Map
<
String
,
String
>
signingConfigs
=
await
getCodeSigningIdentityDevelopmentTeam
(
iosApp:
app
);
expect
(
signingConfigs
,
isNull
);
},
overrides:
<
Type
,
Generator
>{
ProcessManager:
()
=>
mockProcessManager
,
Config:
()
=>
mockConfig
,
AnsiTerminal:
()
=>
testTerminal
,
});
});
});
}
}
...
...
packages/flutter_tools/test/general.shard/ios/xcodeproj_test.dart
View file @
5a34e798
...
@@ -143,6 +143,12 @@ void main() {
...
@@ -143,6 +143,12 @@ void main() {
.
thenReturn
(
ProcessResult
(
1
,
0
,
'Xcode 8.3.3
\n
Build version 8E3004b'
,
''
));
.
thenReturn
(
ProcessResult
(
1
,
0
,
'Xcode 8.3.3
\n
Build version 8E3004b'
,
''
));
expect
(
xcodeProjectInterpreter
.
isInstalled
,
isTrue
);
expect
(
xcodeProjectInterpreter
.
isInstalled
,
isTrue
);
});
});
testUsingOsxContext
(
'build settings is empty when xcodebuild failed to get the build settings'
,
()
{
when
(
mockProcessManager
.
runSync
(
argThat
(
contains
(
xcodebuild
))))
.
thenReturn
(
ProcessResult
(
0
,
1
,
''
,
''
));
expect
(
xcodeProjectInterpreter
.
getBuildSettings
(
''
,
''
),
const
<
String
,
String
>{});
});
});
});
group
(
'Xcode project properties'
,
()
{
group
(
'Xcode project properties'
,
()
{
test
(
'properties from default project can be parsed'
,
()
{
test
(
'properties from default project can be parsed'
,
()
{
...
...
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