Skip to content

Commit ff8bb3c

Browse files
committed
Fix check for 'fatal'
1 parent 43ea0b9 commit ff8bb3c

File tree

3 files changed

+63
-32
lines changed

3 files changed

+63
-32
lines changed

src/git.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@ describe("git", () => {
2121
expect(getRangesForDiff(includingOnlyRemovals)).toMatchSnapshot();
2222
});
2323

24+
it("should work for hunks which include only-removal-ranges", () => {
25+
expect(() =>
26+
getRangesForDiff("@@ invalid hunk header @@")
27+
).toThrowErrorMatchingInlineSnapshot(
28+
`"Couldn't match regex with line '@@ invalid hunk header @@'"`
29+
);
30+
});
31+
2432
it("should get the staged diff of a file", () => {
2533
mockedChildProcess.execSync.mockReturnValue(Buffer.from(hunks));
2634

src/git.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,9 @@ const getGitFileList = (): string[] => {
8080

8181
const getIgnorePatterns = (staged = false): string[] => {
8282
const changedFiles = getDiffFileList(staged);
83+
const repositoryFiles = getGitFileList();
8384

84-
const unchangedFiles = getGitFileList()
85+
const unchangedFiles = repositoryFiles
8586
.filter((x) => !changedFiles.includes(x))
8687
.map((x) => path.join("/", path.relative(process.cwd(), x)));
8788

@@ -130,5 +131,11 @@ const getRangesForDiff = (diff: string): Range[] =>
130131
.map(getRangeForChangedLines)
131132
.filter(removeNullRanges);
132133

133-
export { getDiffForFile, getIgnorePatterns, getRangesForDiff, getDiffFileList };
134+
export {
135+
getDiffForFile,
136+
getIgnorePatterns,
137+
getRangesForDiff,
138+
getDiffFileList,
139+
getGitFileList,
140+
};
134141
export type { Range };

src/processors.ts

Lines changed: 46 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,29 @@ const diff = {
1717
messages: Linter.LintMessage[][],
1818
filename: string
1919
): Linter.LintMessage[] => {
20-
const shouldKeepFile = getDiffFileList().includes(filename);
21-
22-
return shouldKeepFile
23-
? messages
24-
.map((message) =>
25-
message.filter(({ fatal, line }) => {
26-
const shouldKeepLine = getRangesForDiff(
27-
getDiffForFile(filename)
28-
).some(isLineWithinRange(line));
29-
30-
return fatal ?? shouldKeepLine;
31-
})
32-
)
33-
.reduce((a, b) => a.concat(b), [])
34-
: [];
20+
const isFilenameExcluded = !getDiffFileList().includes(filename);
21+
22+
if (isFilenameExcluded) {
23+
return [];
24+
}
25+
26+
return messages
27+
.map((message) => {
28+
const filteredMessage = message.filter(({ fatal, line }) => {
29+
if (fatal === true) {
30+
return true;
31+
}
32+
33+
const isLineWithinSomeRange = getRangesForDiff(
34+
getDiffForFile(filename)
35+
).some(isLineWithinRange(line));
36+
37+
return isLineWithinSomeRange;
38+
});
39+
40+
return filteredMessage;
41+
})
42+
.reduce((a, b) => a.concat(b), []);
3543
},
3644

3745
supportsAutofix: true,
@@ -53,21 +61,29 @@ const staged = {
5361
messages: Linter.LintMessage[][],
5462
filename: string
5563
): Linter.LintMessage[] => {
56-
const shouldKeepFile = getDiffFileList().includes(filename);
57-
58-
return shouldKeepFile
59-
? messages
60-
.map((message) =>
61-
message.filter(({ fatal, line }) => {
62-
const shouldKeepLine = getRangesForDiff(
63-
getDiffForFile(filename, STAGED)
64-
).some(isLineWithinRange(line));
65-
66-
return fatal ?? shouldKeepLine;
67-
})
68-
)
69-
.reduce((a, b) => a.concat(b), [])
70-
: [];
64+
const isFilenameExcluded = !getDiffFileList().includes(filename);
65+
66+
if (isFilenameExcluded) {
67+
return [];
68+
}
69+
70+
return messages
71+
.map((message) => {
72+
const filteredMessage = message.filter(({ fatal, line }) => {
73+
if (fatal === true) {
74+
return true;
75+
}
76+
77+
const isLineWithinSomeRange = getRangesForDiff(
78+
getDiffForFile(filename, STAGED)
79+
).some(isLineWithinRange(line));
80+
81+
return isLineWithinSomeRange;
82+
});
83+
84+
return filteredMessage;
85+
})
86+
.reduce((a, b) => a.concat(b), []);
7187
},
7288

7389
supportsAutofix: true,

0 commit comments

Comments
 (0)