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.');
} }
``` ```
'''); ''');
......
...@@ -433,9 +433,9 @@ void main() { ...@@ -433,9 +433,9 @@ void main() {
} }
if (Platform.isWindows) { if (Platform.isWindows) {
expect(generator.arbPathStrings.first, 'lib\\l10n\\app_en_US.arb'); expect(generator.arbPathStrings.first, r'lib\l10n\app_en_US.arb');
expect(generator.arbPathStrings.elementAt(1), 'lib\\l10n\\app_es.arb'); expect(generator.arbPathStrings.elementAt(1), r'lib\l10n\app_es.arb');
expect(generator.arbPathStrings.elementAt(2), 'lib\\l10n\\app_zh.arb'); expect(generator.arbPathStrings.elementAt(2), r'lib\l10n\app_zh.arb');
} else { } else {
expect(generator.arbPathStrings.first, 'lib/l10n/app_en_US.arb'); expect(generator.arbPathStrings.first, 'lib/l10n/app_en_US.arb');
expect(generator.arbPathStrings.elementAt(1), 'lib/l10n/app_es.arb'); expect(generator.arbPathStrings.elementAt(1), 'lib/l10n/app_es.arb');
...@@ -610,7 +610,8 @@ void main() { ...@@ -610,7 +610,8 @@ void main() {
expect(generator.classMethods, isNotEmpty); expect(generator.classMethods, isNotEmpty);
expect( expect(
generator.classMethods.first, generator.classMethods.first,
''' String get title { '''
String get title {
return Intl.message( return Intl.message(
'Title', 'Title',
locale: _localeName, locale: _localeName,
...@@ -655,9 +656,10 @@ void main() { ...@@ -655,9 +656,10 @@ void main() {
expect(generator.classMethods, isNotEmpty); expect(generator.classMethods, isNotEmpty);
expect( expect(
generator.classMethods.first, generator.classMethods.first,
''' String itemNumber(Object value) { r'''
String itemNumber(Object value) {
return Intl.message( return Intl.message(
'Item \${value}', 'Item ${value}',
locale: _localeName, locale: _localeName,
name: 'itemNumber', name: 'itemNumber',
desc: 'Item placement in list.', desc: 'Item placement in list.',
...@@ -704,13 +706,14 @@ void main() { ...@@ -704,13 +706,14 @@ void main() {
expect(generator.classMethods, isNotEmpty); expect(generator.classMethods, isNotEmpty);
expect( expect(
generator.classMethods.first, generator.classMethods.first,
''' String springBegins(DateTime springStartDate) { r'''
String springBegins(DateTime springStartDate) {
final DateFormat springStartDateDateFormat = DateFormat.yMMMMEEEEd(_localeName); final DateFormat springStartDateDateFormat = DateFormat.yMMMMEEEEd(_localeName);
final String springStartDateString = springStartDateDateFormat.format(springStartDate); final String springStartDateString = springStartDateDateFormat.format(springStartDate);
String springBegins(Object springStartDate) { String springBegins(Object springStartDate) {
return Intl.message( return Intl.message(
'Spring begins on \${springStartDate}', 'Spring begins on ${springStartDate}',
locale: _localeName, locale: _localeName,
name: 'springBegins', name: 'springBegins',
desc: 'The first day of spring', desc: 'The first day of spring',
...@@ -831,13 +834,14 @@ void main() { ...@@ -831,13 +834,14 @@ void main() {
expect(generator.classMethods, isNotEmpty); expect(generator.classMethods, isNotEmpty);
expect( expect(
generator.classMethods.first, generator.classMethods.first,
''' String springGreetings(DateTime springStartDate, Object helloWorld) { r'''
String springGreetings(DateTime springStartDate, Object helloWorld) {
final DateFormat springStartDateDateFormat = DateFormat.yMMMMEEEEd(_localeName); final DateFormat springStartDateDateFormat = DateFormat.yMMMMEEEEd(_localeName);
final String springStartDateString = springStartDateDateFormat.format(springStartDate); final String springStartDateString = springStartDateDateFormat.format(springStartDate);
String springGreetings(Object springStartDate, Object helloWorld) { String springGreetings(Object springStartDate, Object helloWorld) {
return Intl.message( return Intl.message(
"Since it's \${springStartDate}, it's finally spring! \${helloWorld}!", "Since it's ${springStartDate}, it's finally spring! ${helloWorld}!",
locale: _localeName, locale: _localeName,
name: 'springGreetings', name: 'springGreetings',
desc: "A realization that it's finally the spring season, followed by a greeting.", desc: "A realization that it's finally the spring season, followed by a greeting.",
...@@ -888,7 +892,8 @@ void main() { ...@@ -888,7 +892,8 @@ void main() {
expect(generator.classMethods, isNotEmpty); expect(generator.classMethods, isNotEmpty);
expect( expect(
generator.classMethods.first, generator.classMethods.first,
''' String springRange(DateTime springStartDate, DateTime springEndDate) { '''
String springRange(DateTime springStartDate, DateTime springEndDate) {
final DateFormat springStartDateDateFormat = DateFormat.yMMMMEEEEd(_localeName); final DateFormat springStartDateDateFormat = DateFormat.yMMMMEEEEd(_localeName);
final String springStartDateString = springStartDateDateFormat.format(springStartDate); final String springStartDateString = springStartDateDateFormat.format(springStartDate);
...@@ -944,7 +949,8 @@ void main() { ...@@ -944,7 +949,8 @@ void main() {
expect(generator.classMethods, isNotEmpty); expect(generator.classMethods, isNotEmpty);
expect( expect(
generator.classMethods.first, generator.classMethods.first,
''' String helloWorlds(int count, DateTime currentDate) { r'''
String helloWorlds(int count, DateTime currentDate) {
final DateFormat currentDateDateFormat = DateFormat.yMMMMEEEEd(_localeName); final DateFormat currentDateDateFormat = DateFormat.yMMMMEEEEd(_localeName);
final String currentDateString = currentDateDateFormat.format(currentDate); final String currentDateString = currentDateDateFormat.format(currentDate);
...@@ -954,10 +960,10 @@ void main() { ...@@ -954,10 +960,10 @@ void main() {
locale: _localeName, locale: _localeName,
name: 'helloWorlds', name: 'helloWorlds',
args: <Object>[count, currentDate], args: <Object>[count, currentDate],
one: 'Hello World, today is \${currentDateString}', one: 'Hello World, today is ${currentDateString}',
two: 'Hello two worlds, today is \${currentDateString}', two: 'Hello two worlds, today is ${currentDateString}',
many: 'Hello all \${count} worlds, today is \${currentDateString}', many: 'Hello all ${count} worlds, today is ${currentDateString}',
other: 'Hello other \${count} worlds, today is \${currentDateString}' other: 'Hello other ${count} worlds, today is ${currentDateString}'
); );
} }
return helloWorlds(count, currentDateString); return helloWorlds(count, currentDateString);
...@@ -1001,7 +1007,8 @@ void main() { ...@@ -1001,7 +1007,8 @@ void main() {
expect(generator.classMethods, isNotEmpty); expect(generator.classMethods, isNotEmpty);
expect( expect(
generator.classMethods.first, generator.classMethods.first,
''' String courseCompletion(double progress) { r'''
String courseCompletion(double progress) {
final NumberFormat progressNumberFormat = NumberFormat.compact( final NumberFormat progressNumberFormat = NumberFormat.compact(
locale: _localeName, locale: _localeName,
); );
...@@ -1009,7 +1016,7 @@ void main() { ...@@ -1009,7 +1016,7 @@ void main() {
String courseCompletion(Object progress) { String courseCompletion(Object progress) {
return Intl.message( return Intl.message(
'You have completed \${progress} of the course.', 'You have completed ${progress} of the course.',
locale: _localeName, locale: _localeName,
name: 'courseCompletion', name: 'courseCompletion',
desc: 'The amount of progress the student has made in their class.', desc: 'The amount of progress the student has made in their class.',
...@@ -1070,7 +1077,8 @@ void main() { ...@@ -1070,7 +1077,8 @@ void main() {
expect(generator.classMethods, isNotEmpty); expect(generator.classMethods, isNotEmpty);
expect( expect(
generator.classMethods.first, generator.classMethods.first,
''' String courseCompletion(double progress) { '''
String courseCompletion(double progress) {
final NumberFormat progressNumberFormat = NumberFormat.$numberFormat( final NumberFormat progressNumberFormat = NumberFormat.$numberFormat(
locale: _localeName, locale: _localeName,
decimalDigits: 2, decimalDigits: 2,
...@@ -1133,7 +1141,8 @@ void main() { ...@@ -1133,7 +1141,8 @@ void main() {
expect(generator.classMethods, isNotEmpty); expect(generator.classMethods, isNotEmpty);
expect( expect(
generator.classMethods.first, generator.classMethods.first,
''' String courseCompletion(double progress) { '''
String courseCompletion(double progress) {
final NumberFormat progressNumberFormat = NumberFormat.$numberFormat(_localeName); final NumberFormat progressNumberFormat = NumberFormat.$numberFormat(_localeName);
final String progressString = progressNumberFormat.format(progress); final String progressString = progressNumberFormat.format(progress);
...@@ -1223,7 +1232,8 @@ void main() { ...@@ -1223,7 +1232,8 @@ void main() {
expect(generator.classMethods, isNotEmpty); expect(generator.classMethods, isNotEmpty);
expect( expect(
generator.classMethods.first, generator.classMethods.first,
''' String helloWorlds(int count) { r'''
String helloWorlds(int count) {
return Intl.plural( return Intl.plural(
count, count,
locale: _localeName, locale: _localeName,
...@@ -1232,9 +1242,9 @@ void main() { ...@@ -1232,9 +1242,9 @@ void main() {
zero: 'Hello', zero: 'Hello',
one: 'Hello World', one: 'Hello World',
two: 'Hello two worlds', two: 'Hello two worlds',
few: 'Hello \${count} worlds', few: 'Hello ${count} worlds',
many: 'Hello all \${count} worlds', many: 'Hello all ${count} worlds',
other: 'Hello other \${count} worlds' other: 'Hello other ${count} worlds'
); );
} }
''' '''
...@@ -1273,18 +1283,19 @@ void main() { ...@@ -1273,18 +1283,19 @@ void main() {
expect(generator.classMethods, isNotEmpty); expect(generator.classMethods, isNotEmpty);
expect( expect(
generator.classMethods.first, generator.classMethods.first,
''' String helloWorlds(int count, Object adjective) { r'''
String helloWorlds(int count, Object adjective) {
return Intl.plural( return Intl.plural(
count, count,
locale: _localeName, locale: _localeName,
name: 'helloWorlds', name: 'helloWorlds',
args: <Object>[count, adjective], args: <Object>[count, adjective],
zero: 'Hello', zero: 'Hello',
one: 'Hello \${adjective} World', one: 'Hello ${adjective} World',
two: 'Hello two \${adjective} worlds', two: 'Hello two ${adjective} worlds',
few: 'Hello \${count} \${adjective} worlds', few: 'Hello ${count} ${adjective} worlds',
many: 'Hello all \${count} \${adjective} worlds', many: 'Hello all ${count} ${adjective} worlds',
other: 'Hello other \${count} \${adjective} worlds' other: 'Hello other ${count} ${adjective} worlds'
); );
} }
''' '''
...@@ -1326,7 +1337,8 @@ void main() { ...@@ -1326,7 +1337,8 @@ void main() {
expect(generator.classMethods, isNotEmpty); expect(generator.classMethods, isNotEmpty);
expect( expect(
generator.classMethods.first, generator.classMethods.first,
''' String helloWorlds(int count, DateTime currentDate) { r'''
String helloWorlds(int count, DateTime currentDate) {
final DateFormat currentDateDateFormat = DateFormat.yMMMMEEEEd(_localeName); final DateFormat currentDateDateFormat = DateFormat.yMMMMEEEEd(_localeName);
final String currentDateString = currentDateDateFormat.format(currentDate); final String currentDateString = currentDateDateFormat.format(currentDate);
...@@ -1336,10 +1348,10 @@ void main() { ...@@ -1336,10 +1348,10 @@ void main() {
locale: _localeName, locale: _localeName,
name: 'helloWorlds', name: 'helloWorlds',
args: <Object>[count, currentDate], args: <Object>[count, currentDate],
one: 'Hello World, today is \${currentDateString}', one: 'Hello World, today is ${currentDateString}',
two: 'Hello two worlds, today is \${currentDateString}', two: 'Hello two worlds, today is ${currentDateString}',
many: 'Hello all \${count} worlds, today is \${currentDateString}', many: 'Hello all ${count} worlds, today is ${currentDateString}',
other: 'Hello other \${count} worlds, today is \${currentDateString}' other: 'Hello other ${count} worlds, today is ${currentDateString}'
); );
} }
return helloWorlds(count, currentDateString); return helloWorlds(count, currentDateString);
...@@ -1383,7 +1395,8 @@ void main() { ...@@ -1383,7 +1395,8 @@ void main() {
expect(generator.classMethods, isNotEmpty); expect(generator.classMethods, isNotEmpty);
expect( expect(
generator.classMethods.first, generator.classMethods.first,
''' String helloWorlds(int count, int population) { r'''
String helloWorlds(int count, int population) {
final NumberFormat populationNumberFormat = NumberFormat.compactLong( final NumberFormat populationNumberFormat = NumberFormat.compactLong(
locale: _localeName, locale: _localeName,
); );
...@@ -1395,10 +1408,10 @@ void main() { ...@@ -1395,10 +1408,10 @@ void main() {
locale: _localeName, locale: _localeName,
name: 'helloWorlds', name: 'helloWorlds',
args: <Object>[count, population], args: <Object>[count, population],
one: 'Hello World of \${populationString} citizens', one: 'Hello World of ${populationString} citizens',
two: 'Hello two worlds with \${populationString} total citizens', two: 'Hello two worlds with ${populationString} total citizens',
many: 'Hello all \${count} worlds, with a total of \${populationString} citizens', many: 'Hello all ${count} worlds, with a total of ${populationString} citizens',
other: 'Hello other \${count} worlds, with a total of \${populationString} citizens' other: 'Hello other ${count} worlds, with a total of ${populationString} citizens'
); );
} }
return helloWorlds(count, populationString); return helloWorlds(count, populationString);
......
...@@ -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) {
......
...@@ -70,22 +70,22 @@ Future<void> main() async { ...@@ -70,22 +70,22 @@ Future<void> main() async {
}, },
)); ));
expect(console.join('\n'), matches( expect(console.join('\n'), matches(
'^══╡ EXCEPTION CAUGHT BY ERROR HANDLING TEST ╞═══════════════════════════════════════════════════════\n' r'^══╡ EXCEPTION CAUGHT BY ERROR HANDLING TEST ╞═══════════════════════════════════════════════════════\n'
'The following assertion was thrown testing the error handling logic:\n' r'The following assertion was thrown testing the error handling logic:\n'
'Message goes here\\.\n' r'Message goes here\.\n'
'\'[^\']+flutter/test/foundation/error_reporting_test\\.dart\':\n' r"'[^']+flutter/test/foundation/error_reporting_test\.dart':\n"
'Failed assertion: line [0-9]+ pos [0-9]+: \'false\'\n' r"Failed assertion: line [0-9]+ pos [0-9]+: 'false'\n"
'\n' r'\n'
'When the exception was thrown, this was the stack:\n' r'When the exception was thrown, this was the stack:\n'
'#0 getSampleStack\\.<anonymous closure> \\([^)]+flutter/test/foundation/error_reporting_test\\.dart:[0-9]+:[0-9]+\\)\n' r'#0 getSampleStack\.<anonymous closure> \([^)]+flutter/test/foundation/error_reporting_test\.dart:[0-9]+:[0-9]+\)\n'
'#2 getSampleStack \\([^)]+flutter/test/foundation/error_reporting_test\\.dart:[0-9]+:[0-9]+\\)\n' r'#2 getSampleStack \([^)]+flutter/test/foundation/error_reporting_test\.dart:[0-9]+:[0-9]+\)\n'
'#3 main \\([^)]+flutter/test/foundation/error_reporting_test\\.dart:[0-9]+:[0-9]+\\)\n' r'#3 main \([^)]+flutter/test/foundation/error_reporting_test\.dart:[0-9]+:[0-9]+\)\n'
'(.+\n)+' // TODO(ianh): when fixing #4021, also filter out frames from the test infrastructure below the first call to our main() r'(.+\n)+' // TODO(ianh): when fixing #4021, also filter out frames from the test infrastructure below the first call to our main()
'\\(elided [0-9]+ frames from class _RawReceivePortImpl and dart:async\\)\n' r'\(elided [0-9]+ frames from class _RawReceivePortImpl and dart:async\)\n'
'\n' r'\n'
'line 1 of extra information\n' r'line 1 of extra information\n'
'line 2 of extra information\n' r'line 2 of extra information\n'
'════════════════════════════════════════════════════════════════════════════════════════════════════\$', r'════════════════════════════════════════════════════════════════════════════════════════════════════$',
)); ));
console.clear(); console.clear();
FlutterError.dumpErrorToConsole(FlutterErrorDetails( FlutterError.dumpErrorToConsole(FlutterErrorDetails(
...@@ -102,16 +102,16 @@ Future<void> main() async { ...@@ -102,16 +102,16 @@ Future<void> main() async {
exception: getAssertionErrorWithLongMessage(), exception: getAssertionErrorWithLongMessage(),
)); ));
expect(console.join('\n'), matches( expect(console.join('\n'), matches(
'^══╡ EXCEPTION CAUGHT BY FLUTTER FRAMEWORK ╞═════════════════════════════════════════════════════════\n' r'^══╡ EXCEPTION CAUGHT BY FLUTTER FRAMEWORK ╞═════════════════════════════════════════════════════════\n'
'The following assertion was thrown:\n' r'The following assertion was thrown:\n'
'word word word word word word word word word word word word word word word word word word word word\n' r'word word word word word word word word word word word word word word word word word word word word\n'
'word word word word word word word word word word word word word word word word word word word word\n' r'word word word word word word word word word word word word word word word word word word word word\n'
'word word word word word word word word word word word word word word word word word word word word\n' r'word word word word word word word word word word word word word word word word word word word word\n'
'word word word word word word word word word word word word word word word word word word word word\n' r'word word word word word word word word word word word word word word word word word word word word\n'
'word word word word word word word word word word word word word word word word word word word word\n' r'word word word word word word word word word word word word word word word word word word word word\n'
'\'[^\']+flutter/test/foundation/error_reporting_test\\.dart\':\n' r"'[^']+flutter/test/foundation/error_reporting_test\.dart':\n"
'Failed assertion: line [0-9]+ pos [0-9]+: \'false\'\n' r"Failed assertion: line [0-9]+ pos [0-9]+: 'false'\n"
'════════════════════════════════════════════════════════════════════════════════════════════════════\$', r'════════════════════════════════════════════════════════════════════════════════════════════════════$',
)); ));
console.clear(); console.clear();
FlutterError.dumpErrorToConsole(FlutterErrorDetails( FlutterError.dumpErrorToConsole(FlutterErrorDetails(
...@@ -143,21 +143,21 @@ Future<void> main() async { ...@@ -143,21 +143,21 @@ Future<void> main() async {
}, },
)); ));
expect(console.join('\n'), matches( expect(console.join('\n'), matches(
'^══╡ EXCEPTION CAUGHT BY ERROR HANDLING TEST ╞═══════════════════════════════════════════════════════\n' r'^══╡ EXCEPTION CAUGHT BY ERROR HANDLING TEST ╞═══════════════════════════════════════════════════════\n'
'The following assertion was thrown testing the error handling logic:\n' r'The following assertion was thrown testing the error handling logic:\n'
'\'[^\']+flutter/test/foundation/error_reporting_test\\.dart\':[\n ]' r"'[^']+flutter/test/foundation/error_reporting_test\.dart':[\n ]"
'Failed[\n ]assertion:[\n ]line[\n ][0-9]+[\n ]pos[\n ][0-9]+:[\n ]\'false\':[\n ]is[\n ]not[\n ]true\\.\n' r"Failed[\n ]assertion:[\n ]line[\n ][0-9]+[\n ]pos[\n ][0-9]+:[\n ]'false':[\n ]is[\n ]not[\n ]true\.\n"
'\n' r'\n'
'When the exception was thrown, this was the stack:\n' r'When the exception was thrown, this was the stack:\n'
'#0 getSampleStack\\.<anonymous closure> \\([^)]+flutter/test/foundation/error_reporting_test\\.dart:[0-9]+:[0-9]+\\)\n' r'#0 getSampleStack\.<anonymous closure> \([^)]+flutter/test/foundation/error_reporting_test\.dart:[0-9]+:[0-9]+\)\n'
'#2 getSampleStack \\([^)]+flutter/test/foundation/error_reporting_test\\.dart:[0-9]+:[0-9]+\\)\n' r'#2 getSampleStack \([^)]+flutter/test/foundation/error_reporting_test\.dart:[0-9]+:[0-9]+\)\n'
'#3 main \\([^)]+flutter/test/foundation/error_reporting_test\\.dart:[0-9]+:[0-9]+\\)\n' r'#3 main \([^)]+flutter/test/foundation/error_reporting_test\.dart:[0-9]+:[0-9]+\)\n'
'(.+\n)+' // TODO(ianh): when fixing #4021, also filter out frames from the test infrastructure below the first call to our main() r'(.+\n)+' // TODO(ianh): when fixing #4021, also filter out frames from the test infrastructure below the first call to our main()
'\\(elided [0-9]+ frames from class _RawReceivePortImpl and dart:async\\)\n' r'\(elided [0-9]+ frames from class _RawReceivePortImpl and dart:async\)\n'
'\n' r'\n'
'line 1 of extra information\n' r'line 1 of extra information\n'
'line 2 of extra information\n' r'line 2 of extra information\n'
'════════════════════════════════════════════════════════════════════════════════════════════════════\$', r'════════════════════════════════════════════════════════════════════════════════════════════════════$',
)); ));
console.clear(); console.clear();
FlutterError.dumpErrorToConsole(FlutterErrorDetails( FlutterError.dumpErrorToConsole(FlutterErrorDetails(
...@@ -175,11 +175,11 @@ Future<void> main() async { ...@@ -175,11 +175,11 @@ Future<void> main() async {
exception: exception, exception: exception,
)); ));
expect(console.join('\n'), matches( expect(console.join('\n'), matches(
'^══╡ EXCEPTION CAUGHT BY FLUTTER FRAMEWORK ╞═════════════════════════════════════════════════════════\n' r'^══╡ EXCEPTION CAUGHT BY FLUTTER FRAMEWORK ╞═════════════════════════════════════════════════════════\n'
'The following NoSuchMethodError was thrown:\n' r'The following NoSuchMethodError was thrown:\n'
'Receiver: 5\n' r'Receiver: 5\n'
'Tried calling: foo = 2, 4\n' r'Tried calling: foo = 2, 4\n'
'════════════════════════════════════════════════════════════════════════════════════════════════════\$', r'════════════════════════════════════════════════════════════════════════════════════════════════════$',
)); ));
console.clear(); console.clear();
FlutterError.dumpErrorToConsole(FlutterErrorDetails( FlutterError.dumpErrorToConsole(FlutterErrorDetails(
...@@ -196,10 +196,10 @@ Future<void> main() async { ...@@ -196,10 +196,10 @@ Future<void> main() async {
exception: 'hello', exception: 'hello',
)); ));
expect(console.join('\n'), matches( expect(console.join('\n'), matches(
'^══╡ EXCEPTION CAUGHT BY FLUTTER FRAMEWORK ╞═════════════════════════════════════════════════════════\n' r'^══╡ EXCEPTION CAUGHT BY FLUTTER FRAMEWORK ╞═════════════════════════════════════════════════════════\n'
'The following message was thrown:\n' r'The following message was thrown:\n'
'hello\n' r'hello\n'
'════════════════════════════════════════════════════════════════════════════════════════════════════\$', r'════════════════════════════════════════════════════════════════════════════════════════════════════$',
)); ));
console.clear(); console.clear();
FlutterError.dumpErrorToConsole(const FlutterErrorDetails( FlutterError.dumpErrorToConsole(const FlutterErrorDetails(
......
...@@ -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