Merge pull request #24048 from amcasey/GH23366

Ignore case when sorting imports
This commit is contained in:
Andrew Casey 2018-05-10 19:11:44 -07:00 committed by GitHub
commit 020d6c7ba3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 2 deletions

View file

@ -23,6 +23,15 @@ namespace ts {
`import x from "./lib";`);
});
it("Sort - case-insensitive", () => {
assertSortsBefore(
`import y from "a";`,
`import x from "Z";`);
assertSortsBefore(
`import y from "A";`,
`import x from "z";`);
});
function assertSortsBefore(importString1: string, importString2: string) {
const [{moduleSpecifier: moduleSpecifier1}, {moduleSpecifier: moduleSpecifier2}] = parseImports(importString1, importString2);
assert.equal(OrganizeImports.compareModuleSpecifiers(moduleSpecifier1, moduleSpecifier2), Comparison.LessThan);
@ -42,6 +51,13 @@ namespace ts {
assertListEqual(actualCoalescedImports, expectedCoalescedImports);
});
it("Sort specifiers - case-insensitive", () => {
const sortedImports = parseImports(`import { default as M, a as n, B, y, Z as O } from "lib";`);
const actualCoalescedImports = OrganizeImports.coalesceImports(sortedImports);
const expectedCoalescedImports = parseImports(`import { a as n, B, default as M, y, Z as O } from "lib";`);
assertListEqual(actualCoalescedImports, expectedCoalescedImports);
});
it("Combine side-effect-only imports", () => {
const sortedImports = parseImports(
`import "lib";`,

View file

@ -256,7 +256,7 @@ namespace ts.OrganizeImports {
}
function compareIdentifiers(s1: Identifier, s2: Identifier) {
return compareStringsCaseSensitive(s1.text, s2.text);
return compareStringsCaseInsensitive(s1.text, s2.text);
}
}
@ -279,6 +279,6 @@ namespace ts.OrganizeImports {
const name2 = getExternalModuleName(m2);
return compareBooleans(name1 === undefined, name2 === undefined) ||
compareBooleans(isExternalModuleNameRelative(name1), isExternalModuleNameRelative(name2)) ||
compareStringsCaseSensitive(name1, name2);
compareStringsCaseInsensitive(name1, name2);
}
}