2015-10-29 12:56:13 +01:00
|
|
|
/// <reference path="..\..\..\src\harness\harness.ts" />
|
|
|
|
/// <reference path="..\..\..\src\compiler\commandLineParser.ts" />
|
|
|
|
|
2015-11-01 15:31:16 +01:00
|
|
|
namespace ts {
|
|
|
|
describe('parseConfigFileTextToJson', () => {
|
|
|
|
function assertParseResult(jsonText: string, expectedConfigObject: { config?: any; error?: Diagnostic }) {
|
|
|
|
let parsed = ts.parseConfigFileTextToJson("/apath/tsconfig.json", jsonText);
|
|
|
|
assert.equal(JSON.stringify(parsed), JSON.stringify(expectedConfigObject));
|
|
|
|
}
|
2015-10-29 12:56:13 +01:00
|
|
|
|
2015-11-01 15:31:16 +01:00
|
|
|
function assertParseError(jsonText: string) {
|
|
|
|
let parsed = ts.parseConfigFileTextToJson("/apath/tsconfig.json", jsonText);
|
|
|
|
assert.isTrue(undefined === parsed.config);
|
|
|
|
assert.isTrue(undefined !== parsed.error);
|
|
|
|
}
|
2015-10-29 12:56:13 +01:00
|
|
|
|
2015-11-01 15:31:16 +01:00
|
|
|
it("returns empty config for file with only whitespaces", () => {
|
|
|
|
assertParseResult("", { config : {} });
|
|
|
|
assertParseResult(" ", { config : {} });
|
|
|
|
});
|
2015-10-29 12:56:13 +01:00
|
|
|
|
2015-11-01 15:31:16 +01:00
|
|
|
it("returns empty config for file with comments only", () => {
|
|
|
|
assertParseResult("// Comment", { config: {} });
|
|
|
|
assertParseResult("/* Comment*/", { config: {} });
|
|
|
|
});
|
2015-10-29 12:56:13 +01:00
|
|
|
|
2015-11-01 15:31:16 +01:00
|
|
|
it("returns empty config when config is empty object", () => {
|
|
|
|
assertParseResult("{}", { config: {} });
|
|
|
|
});
|
|
|
|
|
|
|
|
it("returns config object without comments", () => {
|
|
|
|
assertParseResult(
|
|
|
|
`{ // Excluded files
|
|
|
|
"exclude": [
|
|
|
|
// Exclude d.ts
|
|
|
|
"file.d.ts"
|
|
|
|
]
|
|
|
|
}`, { config: { exclude: ["file.d.ts"] } });
|
|
|
|
|
|
|
|
assertParseResult(
|
|
|
|
`{
|
|
|
|
/* Excluded
|
|
|
|
Files
|
|
|
|
*/
|
|
|
|
"exclude": [
|
|
|
|
/* multiline comments can be in the middle of a line */"file.d.ts"
|
|
|
|
]
|
|
|
|
}`, { config: { exclude: ["file.d.ts"] } });
|
|
|
|
});
|
|
|
|
|
|
|
|
it("keeps string content untouched", () => {
|
|
|
|
assertParseResult(
|
|
|
|
`{
|
|
|
|
"exclude": [
|
|
|
|
"xx//file.d.ts"
|
|
|
|
]
|
|
|
|
}`, { config: { exclude: ["xx//file.d.ts"] } });
|
|
|
|
assertParseResult(
|
|
|
|
`{
|
|
|
|
"exclude": [
|
|
|
|
"xx/*file.d.ts*/"
|
|
|
|
]
|
|
|
|
}`, { config: { exclude: ["xx/*file.d.ts*/"] } });
|
|
|
|
});
|
|
|
|
|
|
|
|
it("handles escaped characters in strings correctly", () => {
|
|
|
|
assertParseResult(
|
|
|
|
`{
|
|
|
|
"exclude": [
|
|
|
|
"xx\\"//files"
|
|
|
|
]
|
|
|
|
}`, { config: { exclude: ["xx\"//files"] } });
|
|
|
|
|
|
|
|
assertParseResult(
|
|
|
|
`{
|
|
|
|
"exclude": [
|
|
|
|
"xx\\\\" // end of line comment
|
|
|
|
]
|
|
|
|
}`, { config: { exclude: ["xx\\"] } });
|
|
|
|
});
|
|
|
|
|
|
|
|
it("returns object with error when json is invalid", () => {
|
|
|
|
assertParseError("invalid");
|
|
|
|
});
|
2015-10-29 12:56:13 +01:00
|
|
|
});
|
|
|
|
}
|