Unverified Commit b953c3e5 authored by Alexandre Ardhuin's avatar Alexandre Ardhuin Committed by GitHub

use raw strings to avoid escaping (#50322)

parent 8735ab1e
...@@ -49,7 +49,7 @@ void main() { ...@@ -49,7 +49,7 @@ void main() {
'test/analyze-test-input/root/packages/foo/deprecation.dart:41: Deprecation notice does not match required pattern.\n' 'test/analyze-test-input/root/packages/foo/deprecation.dart:41: Deprecation notice does not match required pattern.\n'
'test/analyze-test-input/root/packages/foo/deprecation.dart:48: End of deprecation notice does not match required pattern.\n' 'test/analyze-test-input/root/packages/foo/deprecation.dart:48: End of deprecation notice does not match required pattern.\n'
'test/analyze-test-input/root/packages/foo/deprecation.dart:51: Unexpected deprecation notice indent.\n' 'test/analyze-test-input/root/packages/foo/deprecation.dart:51: Unexpected deprecation notice indent.\n'
.replaceAll('/', Platform.isWindows ? '\\' : '/') .replaceAll('/', Platform.isWindows ? r'\' : '/')
) )
+ +
'See: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes\n' 'See: https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes\n'
...@@ -65,7 +65,7 @@ void main() { ...@@ -65,7 +65,7 @@ void main() {
( (
'The following 1 file does not have the right license header:\n' 'The following 1 file does not have the right license header:\n'
'test/analyze-test-input/root/packages/foo/foo.dart\n' 'test/analyze-test-input/root/packages/foo/foo.dart\n'
.replaceAll('/', Platform.isWindows ? '\\' : '/') .replaceAll('/', Platform.isWindows ? r'\' : '/')
) )
+ +
'The expected license header is:\n' 'The expected license header is:\n'
...@@ -85,7 +85,7 @@ void main() { ...@@ -85,7 +85,7 @@ void main() {
( (
'test/analyze-test-input/root/packages/foo/spaces.txt:5: trailing U+0020 space character\n' 'test/analyze-test-input/root/packages/foo/spaces.txt:5: trailing U+0020 space character\n'
'test/analyze-test-input/root/packages/foo/spaces.txt:9: trailing blank line\n' 'test/analyze-test-input/root/packages/foo/spaces.txt:9: trailing blank line\n'
.replaceAll('/', Platform.isWindows ? '\\' : '/') .replaceAll('/', Platform.isWindows ? r'\' : '/')
) )
+ +
'━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n' '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'
......
...@@ -73,7 +73,7 @@ Future<void> main() async { ...@@ -73,7 +73,7 @@ Future<void> main() async {
section('Override settings.gradle V2'); section('Override settings.gradle V2');
const String deprecatedFileContentV2 = ''' const String deprecatedFileContentV2 = r'''
include ':app' include ':app'
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
...@@ -86,8 +86,8 @@ if (pluginsFile.exists()) { ...@@ -86,8 +86,8 @@ if (pluginsFile.exists()) {
plugins.each { name, path -> plugins.each { name, path ->
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
include ":\$name" include ":$name"
project(":\$name").projectDir = pluginDirectory project(":$name").projectDir = pluginDirectory
} }
'''; ''';
settingsGradle.writeAsStringSync(deprecatedFileContentV2, flush: true); settingsGradle.writeAsStringSync(deprecatedFileContentV2, flush: true);
......
...@@ -588,7 +588,7 @@ String extractCloudAuthTokenArg(List<String> rawArgs) { ...@@ -588,7 +588,7 @@ String extractCloudAuthTokenArg(List<String> rawArgs) {
final RegExp _obsRegExp = final RegExp _obsRegExp =
RegExp('An Observatory debugger .* is available at: '); RegExp('An Observatory debugger .* is available at: ');
final RegExp _obsPortRegExp = RegExp('(\\S+:(\\d+)/\\S*)\$'); final RegExp _obsPortRegExp = RegExp(r'(\S+:(\d+)/\S*)$');
final RegExp _obsUriRegExp = RegExp(r'((http|//)[a-zA-Z0-9:/=_\-\.\[\]]+)'); final RegExp _obsUriRegExp = RegExp(r'((http|//)[a-zA-Z0-9:/=_\-\.\[\]]+)');
/// Tries to extract a port from the string. /// Tries to extract a port from the string.
......
...@@ -777,7 +777,7 @@ class ListStatistics { ...@@ -777,7 +777,7 @@ class ListStatistics {
class _UnzipListEntry { class _UnzipListEntry {
factory _UnzipListEntry.fromLine(String line) { factory _UnzipListEntry.fromLine(String line) {
final List<String> data = line.trim().split(RegExp('\\s+')); final List<String> data = line.trim().split(RegExp(r'\s+'));
assert(data.length == 8); assert(data.length == 8);
return _UnzipListEntry._( return _UnzipListEntry._(
uncompressedSize: int.parse(data[0]), uncompressedSize: int.parse(data[0]),
......
...@@ -64,7 +64,7 @@ main() { ...@@ -64,7 +64,7 @@ main() {
test('generates application snippets', () async { test('generates application snippets', () async {
final File inputFile = File(path.join(tmpDir.absolute.path, 'snippet_in.txt')) final File inputFile = File(path.join(tmpDir.absolute.path, 'snippet_in.txt'))
..createSync(recursive: true) ..createSync(recursive: true)
..writeAsStringSync(''' ..writeAsStringSync(r'''
A description of the snippet. A description of the snippet.
On several lines. On several lines.
...@@ -75,7 +75,7 @@ const String name = 'snippet'; ...@@ -75,7 +75,7 @@ const String name = 'snippet';
```dart ```dart
void main() { void main() {
print('The actual \$name.'); print('The actual $name.');
} }
``` ```
'''); ''');
...@@ -93,7 +93,7 @@ void main() { ...@@ -93,7 +93,7 @@ void main() {
); );
expect(html, contains('<div>HTML Bits</div>')); expect(html, contains('<div>HTML Bits</div>'));
expect(html, contains('<div>More HTML Bits</div>')); expect(html, contains('<div>More HTML Bits</div>'));
expect(html, contains('print(&#39;The actual \$name.&#39;);')); expect(html, contains(r'print(&#39;The actual $name.&#39;);'));
expect(html, contains('A description of the snippet.\n')); expect(html, contains('A description of the snippet.\n'));
expect( expect(
html, html,
...@@ -112,14 +112,14 @@ void main() { ...@@ -112,14 +112,14 @@ void main() {
test('generates sample snippets', () async { test('generates sample snippets', () async {
final File inputFile = File(path.join(tmpDir.absolute.path, 'snippet_in.txt')) final File inputFile = File(path.join(tmpDir.absolute.path, 'snippet_in.txt'))
..createSync(recursive: true) ..createSync(recursive: true)
..writeAsStringSync(''' ..writeAsStringSync(r'''
A description of the snippet. A description of the snippet.
On several lines. On several lines.
```code ```code
void main() { void main() {
print('The actual \$name.'); print('The actual $name.');
} }
``` ```
'''); ''');
...@@ -131,7 +131,7 @@ void main() { ...@@ -131,7 +131,7 @@ void main() {
); );
expect(html, contains('<div>HTML Bits</div>')); expect(html, contains('<div>HTML Bits</div>'));
expect(html, contains('<div>More HTML Bits</div>')); expect(html, contains('<div>More HTML Bits</div>'));
expect(html, contains(' print(&#39;The actual \$name.&#39;);')); expect(html, contains(r' print(&#39;The actual $name.&#39;);'));
expect(html, contains('<div class="snippet-description">{@end-inject-html}A description of the snippet.\n\n' expect(html, contains('<div class="snippet-description">{@end-inject-html}A description of the snippet.\n\n'
'On several lines.{@inject-html}</div>\n')); 'On several lines.{@inject-html}</div>\n'));
expect(html, contains('main() {')); expect(html, contains('main() {'));
...@@ -140,14 +140,14 @@ void main() { ...@@ -140,14 +140,14 @@ void main() {
test('generates dartpad snippets', () async { test('generates dartpad snippets', () async {
final File inputFile = File(path.join(tmpDir.absolute.path, 'snippet_in.txt')) final File inputFile = File(path.join(tmpDir.absolute.path, 'snippet_in.txt'))
..createSync(recursive: true) ..createSync(recursive: true)
..writeAsStringSync(''' ..writeAsStringSync(r'''
A description of the snippet. A description of the snippet.
On several lines. On several lines.
```code ```code
void main() { void main() {
print('The actual \$name.'); print('The actual $name.');
} }
``` ```
'''); ''');
...@@ -167,14 +167,14 @@ void main() { ...@@ -167,14 +167,14 @@ void main() {
test('generates snippet application metadata', () async { test('generates snippet application metadata', () async {
final File inputFile = File(path.join(tmpDir.absolute.path, 'snippet_in.txt')) final File inputFile = File(path.join(tmpDir.absolute.path, 'snippet_in.txt'))
..createSync(recursive: true) ..createSync(recursive: true)
..writeAsStringSync(''' ..writeAsStringSync(r'''
A description of the snippet. A description of the snippet.
On several lines. On several lines.
```code ```code
void main() { void main() {
print('The actual \$name.'); print('The actual $name.');
} }
``` ```
'''); ''');
......
...@@ -460,7 +460,7 @@ class _Transform { ...@@ -460,7 +460,7 @@ class _Transform {
} }
const String _transformCommandAtom = ' *([^(]+)\\(([^)]*)\\)'; const String _transformCommandAtom = r' *([^(]+)\(([^)]*)\)';
final RegExp _transformValidator = RegExp('^($_transformCommandAtom)*\$'); final RegExp _transformValidator = RegExp('^($_transformCommandAtom)*\$');
final RegExp _transformCommand = RegExp(_transformCommandAtom); final RegExp _transformCommand = RegExp(_transformCommandAtom);
...@@ -522,7 +522,7 @@ Matrix3 _matrix(double a, double b, double c, double d, double e, double f) { ...@@ -522,7 +522,7 @@ Matrix3 _matrix(double a, double b, double c, double d, double e, double f) {
// Matches a pixels expression e.g "14px". // Matches a pixels expression e.g "14px".
// First group is just the number. // First group is just the number.
final RegExp _pixelsExp = RegExp('^([0-9]+)px\$'); final RegExp _pixelsExp = RegExp(r'^([0-9]+)px$');
/// Parses a pixel expression, e.g "14px", and returns the number. /// Parses a pixel expression, e.g "14px", and returns the number.
/// Throws an [ArgumentError] if the given string doesn't match the pattern. /// Throws an [ArgumentError] if the given string doesn't match the pattern.
......
...@@ -559,7 +559,7 @@ void main() { ...@@ -559,7 +559,7 @@ void main() {
), ),
]); ]);
expect(animation.toDart('_AnimatedIconData', '_\$data1'), expect(animation.toDart('_AnimatedIconData', r'_$data1'),
'const _AnimatedIconData _\$data1 = const _AnimatedIconData(\n' 'const _AnimatedIconData _\$data1 = const _AnimatedIconData(\n'
' const Size(48.0, 48.0),\n' ' const Size(48.0, 48.0),\n'
' const <_PathFrames>[\n' ' const <_PathFrames>[\n'
......
...@@ -250,7 +250,7 @@ class TextFormFieldDemoState extends State<TextFormFieldDemo> { ...@@ -250,7 +250,7 @@ class TextFormFieldDemoState extends State<TextFormFieldDemo> {
decoration: const InputDecoration( decoration: const InputDecoration(
border: OutlineInputBorder(), border: OutlineInputBorder(),
labelText: 'Salary', labelText: 'Salary',
prefixText: '\$', prefixText: r'$',
suffixText: 'USD', suffixText: 'USD',
suffixStyle: TextStyle(color: Colors.green), suffixStyle: TextStyle(color: Colors.green),
), ),
......
...@@ -1819,7 +1819,7 @@ class StringProperty extends DiagnosticsProperty<String> { ...@@ -1819,7 +1819,7 @@ class StringProperty extends DiagnosticsProperty<String> {
// Escape linebreaks in multiline strings to avoid confusing output when // Escape linebreaks in multiline strings to avoid confusing output when
// the parent of this node is trying to display all properties on the same // the parent of this node is trying to display all properties on the same
// line. // line.
text = text.replaceAll('\n', '\\n'); text = text.replaceAll('\n', r'\n');
} }
if (quoted && text != null) { if (quoted && text != null) {
......
...@@ -165,7 +165,7 @@ void main() { ...@@ -165,7 +165,7 @@ void main() {
final SemanticsTester semantics = SemanticsTester(tester); final SemanticsTester semantics = SemanticsTester(tester);
await tester.pumpWidget( await tester.pumpWidget(
const Text( const Text(
'\$\$', r'$$',
semanticsLabel: 'Double dollars', semanticsLabel: 'Double dollars',
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
) )
...@@ -191,7 +191,7 @@ void main() { ...@@ -191,7 +191,7 @@ void main() {
await tester.pumpWidget( await tester.pumpWidget(
const Directionality( const Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
child: Text('\$\$', semanticsLabel: 'Double dollars')), child: Text(r'$$', semanticsLabel: 'Double dollars')),
); );
expect( expect(
......
...@@ -212,17 +212,18 @@ class FlutterWebConnection { ...@@ -212,17 +212,18 @@ class FlutterWebConnection {
} }
try { try {
result = await waitFor<dynamic>(() => _driver.execute('r' result = await waitFor<dynamic>(
'eturn \$flutterDriverResult', <String>[]), () => _driver.execute(r'return $flutterDriverResult', <String>[]),
matcher: isNotNull, matcher: isNotNull,
timeout: duration ?? const Duration(days: 30)); timeout: duration ?? const Duration(days: 30),
);
} catch (_) { } catch (_) {
// Returns null if exception thrown. // Returns null if exception thrown.
return null; return null;
} finally { } finally {
// Resets the result. // Resets the result.
_driver.execute(''' _driver.execute(r'''
\$flutterDriverResult = null $flutterDriverResult = null
''', <void>[]); ''', <void>[]);
} }
return result; return result;
...@@ -243,7 +244,7 @@ class FlutterWebConnection { ...@@ -243,7 +244,7 @@ class FlutterWebConnection {
/// Waits until extension is installed. /// Waits until extension is installed.
Future<void> waitUntilExtensionInstalled(sync_io.WebDriver driver, Duration timeout) async { Future<void> waitUntilExtensionInstalled(sync_io.WebDriver driver, Duration timeout) async {
await waitFor<void>(() => await waitFor<void>(() =>
driver.execute('return typeof(window.\$flutterDriver)', <String>[]), driver.execute(r'return typeof(window.$flutterDriver)', <String>[]),
matcher: 'function', matcher: 'function',
timeout: timeout ?? const Duration(days: 365)); timeout: timeout ?? const Duration(days: 365));
} }
......
...@@ -19,12 +19,12 @@ import 'dart:js_util' as js_util; ...@@ -19,12 +19,12 @@ import 'dart:js_util' as js_util;
/// ///
/// * [_extension_io.dart], which has the dart:io implementation /// * [_extension_io.dart], which has the dart:io implementation
void registerWebServiceExtension(Future<Map<String, dynamic>> Function(Map<String, String>) call) { void registerWebServiceExtension(Future<Map<String, dynamic>> Function(Map<String, String>) call) {
js_util.setProperty(html.window, '\$flutterDriver', allowInterop((dynamic message) async { js_util.setProperty(html.window, r'$flutterDriver', allowInterop((dynamic message) async {
// ignore: undefined_function, undefined_identifier // ignore: undefined_function, undefined_identifier
final Map<String, String> params = Map<String, String>.from( final Map<String, String> params = Map<String, String>.from(
jsonDecode(message as String) as Map<String, dynamic>); jsonDecode(message as String) as Map<String, dynamic>);
final Map<String, dynamic> result = Map<String, dynamic>.from( final Map<String, dynamic> result = Map<String, dynamic>.from(
await call(params)); await call(params));
context['\$flutterDriverResult'] = json.encode(result); context[r'$flutterDriverResult'] = json.encode(result);
})); }));
} }
...@@ -20,7 +20,7 @@ void main() { ...@@ -20,7 +20,7 @@ void main() {
test('web_extension should register a function', () { test('web_extension should register a function', () {
expect(() => registerWebServiceExtension(call), expect(() => registerWebServiceExtension(call),
returnsNormally); returnsNormally);
expect(js.context.hasProperty('\$flutterDriver'), true); expect(js.context.hasProperty(r'$flutterDriver'), true);
}); });
}); });
} }
...@@ -114,7 +114,7 @@ class FileSystemUtils { ...@@ -114,7 +114,7 @@ class FileSystemUtils {
/// ///
/// On Windows it replaces all '\' with '\\'. On other platforms, it returns the /// On Windows it replaces all '\' with '\\'. On other platforms, it returns the
/// path unchanged. /// path unchanged.
String escapePath(String path) => _platform.isWindows ? path.replaceAll('\\', '\\\\') : path; String escapePath(String path) => _platform.isWindows ? path.replaceAll(r'\', r'\\') : path;
/// Returns true if the file system [entity] has not been modified since the /// Returns true if the file system [entity] has not been modified since the
/// latest modification to [referenceFile]. /// latest modification to [referenceFile].
......
...@@ -409,7 +409,7 @@ class IosProject extends FlutterProjectPlatform implements XcodeBasedProject { ...@@ -409,7 +409,7 @@ class IosProject extends FlutterProjectPlatform implements XcodeBasedProject {
} on FileNotFoundException { } on FileNotFoundException {
// iOS tooling not found; likely not running OSX; let [fromPlist] be null // iOS tooling not found; likely not running OSX; let [fromPlist] be null
} }
if (fromPlist != null && !fromPlist.contains('\$')) { if (fromPlist != null && !fromPlist.contains(r'$')) {
// Info.plist has no build variables in product bundle ID. // Info.plist has no build variables in product bundle ID.
return fromPlist; return fromPlist;
} }
......
...@@ -163,7 +163,7 @@ class VsCode { ...@@ -163,7 +163,7 @@ class VsCode {
if (localAppData != null) { if (localAppData != null) {
searchLocations.add(_VsCodeInstallLocation( searchLocations.add(_VsCodeInstallLocation(
globals.fs.path.join(localAppData, 'Programs\\Microsoft VS Code'), globals.fs.path.join(localAppData, r'Programs\Microsoft VS Code'),
'.vscode', '.vscode',
)); ));
} }
...@@ -179,7 +179,7 @@ class VsCode { ...@@ -179,7 +179,7 @@ class VsCode {
)); ));
if (localAppData != null) { if (localAppData != null) {
searchLocations.add(_VsCodeInstallLocation( searchLocations.add(_VsCodeInstallLocation(
globals.fs.path.join(localAppData, 'Programs\\Microsoft VS Code Insiders'), globals.fs.path.join(localAppData, r'Programs\Microsoft VS Code Insiders'),
'.vscode-insiders', '.vscode-insiders',
isInsiders: true, isInsiders: true,
)); ));
......
...@@ -100,7 +100,7 @@ class ChromeDevice extends Device { ...@@ -100,7 +100,7 @@ class ChromeDevice extends Device {
String version = 'unknown'; String version = 'unknown';
if (globals.platform.isWindows) { if (globals.platform.isWindows) {
final ProcessResult result = await globals.processManager.run(<String>[ final ProcessResult result = await globals.processManager.run(<String>[
r'reg', 'query', 'HKEY_CURRENT_USER\\Software\\Google\\Chrome\\BLBeacon', '/v', 'version', r'reg', 'query', r'HKEY_CURRENT_USER\Software\Google\Chrome\BLBeacon', '/v', 'version',
]); ]);
if (result.exitCode == 0) { if (result.exitCode == 0) {
final List<String> parts = (result.stdout as String).split(RegExp(r'\s+')); final List<String> parts = (result.stdout as String).split(RegExp(r'\s+'));
......
...@@ -37,7 +37,7 @@ void main() { ...@@ -37,7 +37,7 @@ void main() {
if (globals.platform.isWindows) { if (globals.platform.isWindows) {
flutterRootUri flutterRootUri
..write('/') ..write('/')
..write(canonicalizedFlutterRootPath.replaceAll('\\', '/')); ..write(canonicalizedFlutterRootPath.replaceAll(r'\', '/'));
} else { } else {
flutterRootUri.write(canonicalizedFlutterRootPath); flutterRootUri.write(canonicalizedFlutterRootPath);
} }
......
...@@ -40,15 +40,15 @@ void main() { ...@@ -40,15 +40,15 @@ void main() {
group('network errors', () { group('network errors', () {
testUsingContext('retries if gradle fails while downloading', () async { testUsingContext('retries if gradle fails while downloading', () async {
const String errorMessage = ''' const String errorMessage = r'''
Exception in thread "main" java.io.FileNotFoundException: https://downloads.gradle.org/distributions/gradle-4.1.1-all.zip Exception in thread "main" java.io.FileNotFoundException: https://downloads.gradle.org/distributions/gradle-4.1.1-all.zip
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1872) at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1872)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at org.gradle.wrapper.Download.downloadInternal(Download.java:58) at org.gradle.wrapper.Download.downloadInternal(Download.java:58)
at org.gradle.wrapper.Download.download(Download.java:44) at org.gradle.wrapper.Download.download(Download.java:44)
at org.gradle.wrapper.Install\$1.call(Install.java:61) at org.gradle.wrapper.Install$1.call(Install.java:61)
at org.gradle.wrapper.Install\$1.call(Install.java:48) at org.gradle.wrapper.Install$1.call(Install.java:48)
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65) at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65)
at org.gradle.wrapper.Install.createDist(Install.java:48) at org.gradle.wrapper.Install.createDist(Install.java:48)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:128) at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:128)
...@@ -66,7 +66,7 @@ at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)'''; ...@@ -66,7 +66,7 @@ at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)''';
}); });
testUsingContext('retries if gradle fails downloading with proxy error', () async { testUsingContext('retries if gradle fails downloading with proxy error', () async {
const String errorMessage = ''' const String errorMessage = r'''
Exception in thread "main" java.io.IOException: Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request" Exception in thread "main" java.io.IOException: Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request"
at sun.net.www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java:2124) at sun.net.www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java:2124)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:183) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:183)
...@@ -75,8 +75,8 @@ at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection. ...@@ -75,8 +75,8 @@ at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at org.gradle.wrapper.Download.downloadInternal(Download.java:58) at org.gradle.wrapper.Download.downloadInternal(Download.java:58)
at org.gradle.wrapper.Download.download(Download.java:44) at org.gradle.wrapper.Download.download(Download.java:44)
at org.gradle.wrapper.Install\$1.call(Install.java:61) at org.gradle.wrapper.Install$1.call(Install.java:61)
at org.gradle.wrapper.Install\$1.call(Install.java:48) at org.gradle.wrapper.Install$1.call(Install.java:48)
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65) at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65)
at org.gradle.wrapper.Install.createDist(Install.java:48) at org.gradle.wrapper.Install.createDist(Install.java:48)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:128) at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:128)
...@@ -113,7 +113,7 @@ Exception in thread "main" java.lang.RuntimeException: Timeout of 120000 reached ...@@ -113,7 +113,7 @@ Exception in thread "main" java.lang.RuntimeException: Timeout of 120000 reached
}); });
testUsingContext('retries if remote host closes connection', () async { testUsingContext('retries if remote host closes connection', () async {
const String errorMessage = ''' const String errorMessage = r'''
Downloading https://services.gradle.org/distributions/gradle-5.6.2-all.zip Downloading https://services.gradle.org/distributions/gradle-5.6.2-all.zip
Exception in thread "main" javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake Exception in thread "main" javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:994) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:994)
...@@ -129,8 +129,8 @@ Exception in thread "main" javax.net.ssl.SSLHandshakeException: Remote host clos ...@@ -129,8 +129,8 @@ Exception in thread "main" javax.net.ssl.SSLHandshakeException: Remote host clos
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:263) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:263)
at org.gradle.wrapper.Download.downloadInternal(Download.java:58) at org.gradle.wrapper.Download.downloadInternal(Download.java:58)
at org.gradle.wrapper.Download.download(Download.java:44) at org.gradle.wrapper.Download.download(Download.java:44)
at org.gradle.wrapper.Install\$1.call(Install.java:61) at org.gradle.wrapper.Install$1.call(Install.java:61)
at org.gradle.wrapper.Install\$1.call(Install.java:48) at org.gradle.wrapper.Install$1.call(Install.java:48)
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65) at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65)
at org.gradle.wrapper.Install.createDist(Install.java:48) at org.gradle.wrapper.Install.createDist(Install.java:48)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:128) at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:128)
...@@ -175,7 +175,7 @@ Exception in thread "main" java.io.FileNotFoundException: https://downloads.grad ...@@ -175,7 +175,7 @@ Exception in thread "main" java.io.FileNotFoundException: https://downloads.grad
}); });
testUsingContext('retries if the connection is reset', () async { testUsingContext('retries if the connection is reset', () async {
const String errorMessage = ''' const String errorMessage = r'''
Downloading https://services.gradle.org/distributions/gradle-5.6.2-all.zip Downloading https://services.gradle.org/distributions/gradle-5.6.2-all.zip
Exception in thread "main" java.net.SocketException: Connection reset Exception in thread "main" java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:210) at java.net.SocketInputStream.read(SocketInputStream.java:210)
...@@ -194,8 +194,8 @@ Exception in thread "main" java.net.SocketException: Connection reset ...@@ -194,8 +194,8 @@ Exception in thread "main" java.net.SocketException: Connection reset
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:263) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:263)
at org.gradle.wrapper.Download.downloadInternal(Download.java:58) at org.gradle.wrapper.Download.downloadInternal(Download.java:58)
at org.gradle.wrapper.Download.download(Download.java:44) at org.gradle.wrapper.Download.download(Download.java:44)
at org.gradle.wrapper.Install\$1.call(Install.java:61) at org.gradle.wrapper.Install$1.call(Install.java:61)
at org.gradle.wrapper.Install\$1.call(Install.java:48) at org.gradle.wrapper.Install$1.call(Install.java:48)
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65) at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65)
at org.gradle.wrapper.Install.createDist(Install.java:48) at org.gradle.wrapper.Install.createDist(Install.java:48)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:128) at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:128)
......
...@@ -457,7 +457,7 @@ void main() { ...@@ -457,7 +457,7 @@ void main() {
}); });
testUsingContext('create settings_aar.gradle when current settings.gradle loads plugins', () { testUsingContext('create settings_aar.gradle when current settings.gradle loads plugins', () {
const String currentSettingsGradle = ''' const String currentSettingsGradle = r'''
include ':app' include ':app'
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
...@@ -470,8 +470,8 @@ if (pluginsFile.exists()) { ...@@ -470,8 +470,8 @@ if (pluginsFile.exists()) {
plugins.each { name, path -> plugins.each { name, path ->
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
include ":\$name" include ":$name"
project(":\$name").projectDir = pluginDirectory project(":$name").projectDir = pluginDirectory
} }
'''; ''';
......
...@@ -105,8 +105,8 @@ void main() { ...@@ -105,8 +105,8 @@ void main() {
fileSystem: fileSystem, fileSystem: fileSystem,
platform: FakePlatform(operatingSystem: 'windows'), platform: FakePlatform(operatingSystem: 'windows'),
); );
expect(fsUtils.escapePath('C:\\foo\\bar\\cool.dart'), 'C:\\\\foo\\\\bar\\\\cool.dart'); expect(fsUtils.escapePath(r'C:\foo\bar\cool.dart'), r'C:\\foo\\bar\\cool.dart');
expect(fsUtils.escapePath('foo\\bar\\cool.dart'), 'foo\\\\bar\\\\cool.dart'); expect(fsUtils.escapePath(r'foo\bar\cool.dart'), r'foo\\bar\\cool.dart');
expect(fsUtils.escapePath('C:/foo/bar/cool.dart'), 'C:/foo/bar/cool.dart'); expect(fsUtils.escapePath('C:/foo/bar/cool.dart'), 'C:/foo/bar/cool.dart');
}); });
...@@ -118,7 +118,7 @@ void main() { ...@@ -118,7 +118,7 @@ void main() {
); );
expect(fsUtils.escapePath('/foo/bar/cool.dart'), '/foo/bar/cool.dart'); expect(fsUtils.escapePath('/foo/bar/cool.dart'), '/foo/bar/cool.dart');
expect(fsUtils.escapePath('foo/bar/cool.dart'), 'foo/bar/cool.dart'); expect(fsUtils.escapePath('foo/bar/cool.dart'), 'foo/bar/cool.dart');
expect(fsUtils.escapePath('foo\\cool.dart'), 'foo\\cool.dart'); expect(fsUtils.escapePath(r'foo\cool.dart'), r'foo\cool.dart');
}); });
}); });
} }
...@@ -282,7 +282,7 @@ void main() { ...@@ -282,7 +282,7 @@ void main() {
); );
logger.printStatus('Rude Interrupting Cow'); logger.printStatus('Rude Interrupting Cow');
status.stop(); status.stop();
final String a = currentPlatform().isWindows ? '\\' : '⣽'; final String a = currentPlatform().isWindows ? r'\' : '⣽';
final String b = currentPlatform().isWindows ? '|' : '⣻'; final String b = currentPlatform().isWindows ? '|' : '⣻';
expect( expect(
......
...@@ -126,13 +126,13 @@ void main() { ...@@ -126,13 +126,13 @@ void main() {
await _recompile(streamController, generator, mockFrontendServerStdIn, await _recompile(streamController, generator, mockFrontendServerStdIn,
'result abc\nline1\nline2\nabc\nabc /path/to/main.dart.dill 0\n'); 'result abc\nline1\nline2\nabc\nabc /path/to/main.dart.dill 0\n');
await _accept(streamController, generator, mockFrontendServerStdIn, '^accept\\n\$'); await _accept(streamController, generator, mockFrontendServerStdIn, r'^accept\n$');
await _recompile(streamController, generator, mockFrontendServerStdIn, await _recompile(streamController, generator, mockFrontendServerStdIn,
'result abc\nline1\nline2\nabc\nabc /path/to/main.dart.dill 0\n'); 'result abc\nline1\nline2\nabc\nabc /path/to/main.dart.dill 0\n');
// No sources returned from reject command. // No sources returned from reject command.
await _reject(streamController, generator, mockFrontendServerStdIn, 'result abc\nabc\n', await _reject(streamController, generator, mockFrontendServerStdIn, 'result abc\nabc\n',
'^reject\\n\$'); r'^reject\n$');
verifyNoMoreInteractions(mockFrontendServerStdIn); verifyNoMoreInteractions(mockFrontendServerStdIn);
expect(mockFrontendServerStdIn.getAndClear(), isEmpty); expect(mockFrontendServerStdIn.getAndClear(), isEmpty);
expect(testLogger.errorText, equals( expect(testLogger.errorText, equals(
...@@ -193,7 +193,7 @@ Future<void> _recompile( ...@@ -193,7 +193,7 @@ Future<void> _recompile(
); );
expect(output.outputFilename, equals('/path/to/main.dart.dill')); expect(output.outputFilename, equals('/path/to/main.dart.dill'));
final String commands = mockFrontendServerStdIn.getAndClear(); final String commands = mockFrontendServerStdIn.getAndClear();
final RegExp re = RegExp('^recompile (.*)\\n/path/to/main.dart\\n(.*)\\n\$'); final RegExp re = RegExp(r'^recompile (.*)\n/path/to/main.dart\n(.*)\n$');
expect(commands, matches(re)); expect(commands, matches(re));
final Match match = re.firstMatch(commands); final Match match = re.firstMatch(commands);
expect(match[1] == match[2], isTrue); expect(match[1] == match[2], isTrue);
......
...@@ -388,7 +388,7 @@ apply plugin: 'kotlin-android' ...@@ -388,7 +388,7 @@ apply plugin: 'kotlin-android'
}); });
} }
); );
when(mockPlistUtils.getValueFromFile(any, any)).thenReturn('\$(PRODUCT_BUNDLE_IDENTIFIER)'); when(mockPlistUtils.getValueFromFile(any, any)).thenReturn(r'$(PRODUCT_BUNDLE_IDENTIFIER)');
expect(await project.ios.productBundleIdentifier, 'io.flutter.someProject'); expect(await project.ios.productBundleIdentifier, 'io.flutter.someProject');
}); });
...@@ -403,7 +403,7 @@ apply plugin: 'kotlin-android' ...@@ -403,7 +403,7 @@ apply plugin: 'kotlin-android'
}); });
} }
); );
when(mockPlistUtils.getValueFromFile(any, any)).thenReturn('\$(PRODUCT_BUNDLE_IDENTIFIER).\$(SUFFIX)'); when(mockPlistUtils.getValueFromFile(any, any)).thenReturn(r'$(PRODUCT_BUNDLE_IDENTIFIER).$(SUFFIX)');
expect(await project.ios.productBundleIdentifier, 'io.flutter.someProject.suffix'); expect(await project.ios.productBundleIdentifier, 'io.flutter.someProject.suffix');
}); });
testWithMocks('empty surrounded by quotes', () async { testWithMocks('empty surrounded by quotes', () async {
......
...@@ -117,7 +117,7 @@ void main() { ...@@ -117,7 +117,7 @@ void main() {
when(mockProcessManager.run(<String>[ when(mockProcessManager.run(<String>[
'reg', 'reg',
'query', 'query',
'HKEY_CURRENT_USER\\Software\\Google\\Chrome\\BLBeacon', r'HKEY_CURRENT_USER\Software\Google\Chrome\BLBeacon',
'/v', '/v',
'version', 'version',
])).thenAnswer((Invocation invocation) async { ])).thenAnswer((Invocation invocation) async {
......
...@@ -196,7 +196,7 @@ class FuchsiaRemoteConnection { ...@@ -196,7 +196,7 @@ class FuchsiaRemoteConnection {
sshConfigPath ??= Platform.environment['FUCHSIA_SSH_CONFIG']; sshConfigPath ??= Platform.environment['FUCHSIA_SSH_CONFIG'];
if (address == null) { if (address == null) {
throw FuchsiaRemoteConnectionError( throw FuchsiaRemoteConnectionError(
'No address supplied, and \$FUCHSIA_DEVICE_URL not found.'); r'No address supplied, and $FUCHSIA_DEVICE_URL not found.');
} }
const String interfaceDelimiter = '%'; const String interfaceDelimiter = '%';
if (address.contains(interfaceDelimiter)) { if (address.contains(interfaceDelimiter)) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment