Skip to content

Commit

Permalink
fix: split comment after and newlines fixes in two cycles
Browse files Browse the repository at this point in the history
  • Loading branch information
hugop95 committed Jan 10, 2025
1 parent dc00b27 commit b162c04
Show file tree
Hide file tree
Showing 5 changed files with 238 additions and 7 deletions.
55 changes: 55 additions & 0 deletions test/rules/sort-classes.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4513,6 +4513,61 @@ describe(ruleName, () => {
valid: [],
},
)

ruleTester.run(
`${ruleName}(${type}): handles newlines and comment after fixes`,
rule,
{
invalid: [
{
output: [
dedent`
class Class {
a // Comment after
b() {}
c() {}
}
`,
dedent`
class Class {
a // Comment after
b() {}
c() {}
}
`,
],
errors: [
{
data: {
rightGroup: 'property',
leftGroup: 'method',
right: 'a',
left: 'b',
},
messageId: 'unexpectedClassesGroupOrder',
},
],
code: dedent`
class Class {
b() {}
a // Comment after
c() {}
}
`,
options: [
{
groups: ['property', 'method'],
newlinesBetween: 'always',
},
],
},
],
valid: [],
},
)
})

describe(`${ruleName}(${type}): sorts inline elements correctly`, () => {
Expand Down
55 changes: 55 additions & 0 deletions test/rules/sort-interfaces.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2390,6 +2390,61 @@ describe(ruleName, () => {
valid: [],
},
)

ruleTester.run(
`${ruleName}(${type}): handles newlines and comment after fixes`,
rule,
{
invalid: [
{
output: [
dedent`
interface Interface {
a: string // Comment after
b: () => void
c: () => void
};
`,
dedent`
interface Interface {
a: string // Comment after
b: () => void
c: () => void
};
`,
],
errors: [
{
data: {
rightGroup: 'property',
leftGroup: 'method',
right: 'a',
left: 'b',
},
messageId: 'unexpectedInterfacePropertiesGroupOrder',
},
],
code: dedent`
interface Interface {
b: () => void
a: string // Comment after
c: () => void
};
`,
options: [
{
groups: ['property', 'method'],
newlinesBetween: 'always',
},
],
},
],
valid: [],
},
)
})

ruleTester.run(
Expand Down
55 changes: 55 additions & 0 deletions test/rules/sort-object-types.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2186,6 +2186,61 @@ describe(ruleName, () => {
valid: [],
},
)

ruleTester.run(
`${ruleName}(${type}): handles newlines and comment after fixes`,
rule,
{
invalid: [
{
output: [
dedent`
type Test = {
a: string // Comment after
b: () => void
c: () => void
};
`,
dedent`
type Test = {
a: string // Comment after
b: () => void
c: () => void
};
`,
],
errors: [
{
data: {
rightGroup: 'property',
leftGroup: 'method',
right: 'a',
left: 'b',
},
messageId: 'unexpectedObjectTypesGroupOrder',
},
],
code: dedent`
type Test = {
b: () => void
a: string // Comment after
c: () => void
};
`,
options: [
{
groups: ['property', 'method'],
newlinesBetween: 'always',
},
],
},
],
valid: [],
},
)
})

ruleTester.run(
Expand Down
55 changes: 55 additions & 0 deletions test/rules/sort-objects.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2130,6 +2130,61 @@ describe(ruleName, () => {
valid: [],
},
)

ruleTester.run(
`${ruleName}(${type}): handles newlines and comment after fixes`,
rule,
{
invalid: [
{
output: [
dedent`
let obj = {
a, // Comment after
b() {},
c() {},
};
`,
dedent`
let obj = {
a, // Comment after
b() {},
c() {},
};
`,
],
errors: [
{
data: {
rightGroup: 'unknown',
leftGroup: 'method',
right: 'a',
left: 'b',
},
messageId: 'unexpectedObjectsGroupOrder',
},
],
code: dedent`
let obj = {
b() {},
a, // Comment after
c() {},
};
`,
options: [
{
groups: ['unknown', 'method'],
newlinesBetween: 'always',
},
],
},
],
valid: [],
},
)
})

ruleTester.run(
Expand Down
25 changes: 18 additions & 7 deletions utils/make-order-comments-after-and-newlines-fixes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ import type { TSESLint } from '@typescript-eslint/utils'

import type { SortingNode } from '../types/sorting-node'

import { makeOrderAndCommentsAfterFixes } from './make-order-and-comments-after-fixes'
import { makeCommentAfterFixes } from './make-comment-after-fixes'
import { makeNewlinesFixes } from './make-newlines-fixes'
import { makeOrderFixes } from './make-order-fixes'

interface MakeOrderCommentsAfterAndNewlinesFixesParameters {
options: {
Expand Down Expand Up @@ -42,20 +43,30 @@ export let makeOrderCommentsAfterAndNewlinesFixes = ({
options,
fixer,
nodes,
}: MakeOrderCommentsAfterAndNewlinesFixesParameters): TSESLint.RuleFix[] => [
...makeOrderAndCommentsAfterFixes({
}: MakeOrderCommentsAfterAndNewlinesFixesParameters): TSESLint.RuleFix[] => {
let orderFixes = makeOrderFixes({
ignoreFirstNodeHighestBlockComment,
sortedNodes,
sourceCode,
options,
nodes,
fixer,
})
let commentAfterFixes = makeCommentAfterFixes({
sortedNodes,
sourceCode,
nodes,
}),
...makeNewlinesFixes({
fixer,
})
if (commentAfterFixes.length) {
return [...orderFixes, ...commentAfterFixes]
}
let newlinesFixes = makeNewlinesFixes({
sortedNodes,
sourceCode,
options,
fixer,
nodes,
}),
]
})
return [...orderFixes, ...newlinesFixes]
}

0 comments on commit b162c04

Please sign in to comment.