Compiler flag to specify line ending #1693 unit tests

This commit is contained in:
kmashint 2015-05-02 16:18:37 -04:00
parent bcdf5bba64
commit 2e0a55c4d3
11 changed files with 96 additions and 7 deletions

View file

@ -9,6 +9,9 @@ module ts {
/** The version of the TypeScript compiler release */
export const version = "1.5.0";
const NEWLINE_CRLF = "\r\n";
const NEWLINE_LF = "\n";
export function findConfigFile(searchPath: string): string {
var fileName = "tsconfig.json";
@ -91,9 +94,9 @@ module ts {
}
}
let newLine =
options.newLine === NewLineKind.CarriageReturnLineFeed ? "\r\n" :
options.newLine === NewLineKind.LineFeed ? "\n" :
let newLine =
options.newLine === NewLineKind.CarriageReturnLineFeed ? NEWLINE_CRLF :
options.newLine === NewLineKind.LineFeed ? NEWLINE_LF :
sys.newLine;
return {

View file

@ -805,6 +805,9 @@ module Harness {
return result;
}
const NEWLINE_CRLF = "\r\n";
const NEWLINE_LF = "\n";
export var defaultLibFileName = 'lib.d.ts';
export var defaultLibSourceFile = createSourceFileAndAssertInvariants(defaultLibFileName, IO.readFile(libFolder + 'lib.core.d.ts'), /*languageVersion*/ ts.ScriptTarget.Latest);
export var defaultES6LibSourceFile = createSourceFileAndAssertInvariants(defaultLibFileName, IO.readFile(libFolder + 'lib.core.es6.d.ts'), /*languageVersion*/ ts.ScriptTarget.Latest);
@ -822,7 +825,8 @@ module Harness {
scriptTarget: ts.ScriptTarget,
useCaseSensitiveFileNames: boolean,
// the currentDirectory is needed for rwcRunner to passed in specified current directory to compiler host
currentDirectory?: string): ts.CompilerHost {
currentDirectory?: string,
newLineKind?: ts.NewLineKind): ts.CompilerHost {
// Local get canonical file name function, that depends on passed in parameter for useCaseSensitiveFileNames
function getCanonicalFileName(fileName: string): string {
@ -841,6 +845,11 @@ module Harness {
};
inputFiles.forEach(register);
let newLine =
newLineKind === ts.NewLineKind.CarriageReturnLineFeed ? NEWLINE_CRLF :
newLineKind === ts.NewLineKind.LineFeed ? NEWLINE_LF :
ts.sys.newLine;
return {
getCurrentDirectory,
getSourceFile: (fn, languageVersion) => {
@ -869,7 +878,7 @@ module Harness {
writeFile,
getCanonicalFileName,
useCaseSensitiveFileNames: () => useCaseSensitiveFileNames,
getNewLine: () => ts.sys.newLine
getNewLine: () => newLine
};
}
@ -1042,7 +1051,16 @@ module Harness {
case 'newline':
case 'newlines':
newLine = setting.value;
if (setting.value.toLowerCase() === 'crlf') {
options.newLine = ts.NewLineKind.CarriageReturnLineFeed;
} else if (setting.value.toLowerCase() === 'lf') {
options.newLine = ts.NewLineKind.LineFeed;
} else if (setting.value === '\\n') {
// Handle old usage, e.g. contextualTyping.ts:// @newline: \n
newLine = setting.value;
} else {
throw new Error('Unknown option for newLine: ' + setting.value);
}
break;
case 'comments':
@ -1103,7 +1121,7 @@ module Harness {
var programFiles = inputFiles.concat(includeBuiltFiles).map(file => file.unitName);
var program = ts.createProgram(programFiles, options, createCompilerHost(inputFiles.concat(includeBuiltFiles).concat(otherFiles),
(fn, contents, writeByteOrderMark) => fileOutputs.push({ fileName: fn, code: contents, writeByteOrderMark: writeByteOrderMark }),
options.target, useCaseSensitiveFileNames, currentDirectory));
options.target, useCaseSensitiveFileNames, currentDirectory, options.newLine));
var emitResult = program.emit();

View file

@ -0,0 +1,9 @@
//// [newLineFlagWithCRLF.ts]
var x=1;
x=2;
//// [newLineFlagWithCRLF.js]
var x = 1;
x = 2;

View file

@ -0,0 +1,8 @@
=== tests/cases/compiler/newLineFlagWithCRLF.ts ===
var x=1;
>x : Symbol(x, Decl(newLineFlagWithCRLF.ts, 0, 3))
x=2;
>x : Symbol(x, Decl(newLineFlagWithCRLF.ts, 0, 3))

View file

@ -0,0 +1,11 @@
=== tests/cases/compiler/newLineFlagWithCRLF.ts ===
var x=1;
>x : number
>1 : number
x=2;
>x=2 : number
>x : number
>2 : number

View file

@ -0,0 +1,9 @@
//// [newLineFlagWithLF.ts]
var x=1;
x=2;
//// [newLineFlagWithLF.js]
var x = 1;
x = 2;

View file

@ -0,0 +1,8 @@
=== tests/cases/compiler/newLineFlagWithLF.ts ===
var x=1;
>x : Symbol(x, Decl(newLineFlagWithLF.ts, 0, 3))
x=2;
>x : Symbol(x, Decl(newLineFlagWithLF.ts, 0, 3))

View file

@ -0,0 +1,11 @@
=== tests/cases/compiler/newLineFlagWithLF.ts ===
var x=1;
>x : number
>1 : number
x=2;
>x=2 : number
>x : number
>2 : number

View file

@ -0,0 +1,4 @@
// @newline: CR
var x=1;
x=2;

View file

@ -0,0 +1,4 @@
// @newline: CRLF
var x=1;
x=2;

View file

@ -0,0 +1,4 @@
// @newline: LF
var x=1;
x=2;