mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-15 21:36:50 -05:00
Allow comments in tsconfig.json issue #4987
This commit is contained in:
84
tests/cases/unittests/tsconfigParsing.ts
Normal file
84
tests/cases/unittests/tsconfigParsing.ts
Normal file
@@ -0,0 +1,84 @@
|
||||
/// <reference path="..\..\..\src\harness\harness.ts" />
|
||||
/// <reference path="..\..\..\src\compiler\commandLineParser.ts" />
|
||||
|
||||
module 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));
|
||||
}
|
||||
|
||||
function assertParseError(jsonText: string) {
|
||||
let parsed = ts.parseConfigFileTextToJson("/apath/tsconfig.json", jsonText);
|
||||
assert.isTrue(undefined === parsed.config);
|
||||
assert.isTrue(undefined !== parsed.error);
|
||||
}
|
||||
|
||||
it("returns empty config for file with only whitespaces", () => {
|
||||
assertParseResult("", { config : {} });
|
||||
assertParseResult(" ", { config : {} });
|
||||
});
|
||||
|
||||
it("returns empty config for file with comments only", () => {
|
||||
assertParseResult("// Comment", { config: {} });
|
||||
assertParseResult("# Comment", { config: {} });
|
||||
assertParseResult("/* Comment*/", { config: {} });
|
||||
});
|
||||
|
||||
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": [
|
||||
# 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"] } });
|
||||
assertParseResult(
|
||||
`{
|
||||
"exclude": [
|
||||
"xx/*file.d.ts*/"
|
||||
]
|
||||
}`, { config: { exclude: ["xx/*file.d.ts*/"] } });
|
||||
});
|
||||
|
||||
it("returns object with error when json is invalid", () => {
|
||||
assertParseError("invalid");
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user