| // Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| import 'package:analyzer/src/util/platform_info.dart'; | |
| /// The EOL being used for file content in the current test run. | |
| /// | |
| /// This is not used by the server itself. | |
| String get testEol => | |
| // TODO(dantup): Support overridding this with an env var (similar to the | |
| // existing `TEST_ANALYZER_WINDOWS_PATHS` var) to allow testing | |
| // `\n` on Windows or `\r\n` on non-Windows, to ensure we don't have any | |
| // code just assuming the platform EOL (instead of the files EOL). | |
| // [normalizeNewlinesForPlatform] may need updating to not assume it only | |
| // needs to run for Windows. | |
| platform.lineTerminator; | |
| /// Normalizes content to use platform-specific newlines. | |
| /// | |
| /// This ensures that when running on Windows, '\r\n' is used, even though | |
| /// source files are checked out using '\n'. | |
| String normalizeNewlinesForPlatform(String input) { | |
| // TODO(dantup): Try to minimize the number of explicit calls here from | |
| // tests and have them automatically normalized. | |
| // Skip normalising for other platforms, as the 'gitattributes' for the Dart | |
| // SDK ensures all files are '\n'. | |
| if (!platform.isWindows) { | |
| return input; | |
| } | |
| var newlinePattern = RegExp(r'\r?\n'); // Either '\r\n' or '\n'. | |
| return input.replaceAll(newlinePattern, testEol); | |
| } |