blob: ab7b14e11e05bb103e85fcc826df683c20977846 [file] [log] [blame]
// 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 'dart:io';
/// 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);
}