Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -83,15 +83,15 @@
],
"license": "Apache-2.0",
"dependencies": {
"@eslint/core": "^0.15.2",
"@eslint/plugin-kit": "^0.3.5",
"@eslint/core": "^0.16.0",
"@eslint/plugin-kit": "^0.4.0",
"@humanwhocodes/momoa": "^3.3.9",
"natural-compare": "^1.4.0"
},
"devDependencies": {
"c8": "^10.1.3",
"dedent": "^1.5.3",
"eslint": "^9.35.0",
"eslint": "^9.36.0",
"eslint-config-eslint": "^13.0.0",
"eslint-plugin-eslint-plugin": "^6.3.2",
"got": "^14.4.2",
Expand Down
202 changes: 202 additions & 0 deletions tests/languages/json-source-code.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,208 @@ describe("JSONSourceCode", () => {
});
});

describe("getLocFromIndex()", () => {
it("should convert index to location correctly", () => {
const file = { body: '{\n "a": "b"\r\n}', path: "test.json" };
const language = new JSONLanguage({ mode: "json" });
const parseResult = language.parse(file);
const sourceCode = new JSONSourceCode({
text: file.body,
ast: parseResult.ast,
});

assert.deepStrictEqual(sourceCode.getLocFromIndex(0), {
line: 1,
column: 1,
});
assert.deepStrictEqual(sourceCode.getLocFromIndex(1), {
line: 1,
column: 2,
});
assert.deepStrictEqual(sourceCode.getLocFromIndex(2), {
line: 2,
column: 1,
});
assert.deepStrictEqual(sourceCode.getLocFromIndex(3), {
line: 2,
column: 2,
});
assert.deepStrictEqual(sourceCode.getLocFromIndex(4), {
line: 2,
column: 3,
});
assert.deepStrictEqual(sourceCode.getLocFromIndex(5), {
line: 2,
column: 4,
});
assert.deepStrictEqual(sourceCode.getLocFromIndex(6), {
line: 2,
column: 5,
});
assert.deepStrictEqual(sourceCode.getLocFromIndex(7), {
line: 2,
column: 6,
});
assert.deepStrictEqual(sourceCode.getLocFromIndex(8), {
line: 2,
column: 7,
});
assert.deepStrictEqual(sourceCode.getLocFromIndex(9), {
line: 2,
column: 8,
});
assert.deepStrictEqual(sourceCode.getLocFromIndex(10), {
line: 2,
column: 9,
});
assert.deepStrictEqual(sourceCode.getLocFromIndex(11), {
line: 2,
column: 10,
});
assert.deepStrictEqual(sourceCode.getLocFromIndex(12), {
line: 2,
column: 11,
});
assert.deepStrictEqual(sourceCode.getLocFromIndex(13), {
line: 2,
column: 12,
});
assert.deepStrictEqual(sourceCode.getLocFromIndex(14), {
line: 3,
column: 1,
});
assert.deepStrictEqual(sourceCode.getLocFromIndex(15), {
line: 3,
column: 2,
});
});
});

describe("getIndexFromLoc()", () => {
it("should convert location to index correctly", () => {
const file = { body: '{\n "a": "b"\r\n}', path: "test.json" };
const language = new JSONLanguage({ mode: "json" });
const parseResult = language.parse(file);
const sourceCode = new JSONSourceCode({
text: file.body,
ast: parseResult.ast,
});

assert.deepStrictEqual(
sourceCode.getIndexFromLoc({
line: 1,
column: 1,
}),
0,
);
assert.deepStrictEqual(
sourceCode.getIndexFromLoc({
line: 1,
column: 2,
}),
1,
);
assert.deepStrictEqual(
sourceCode.getIndexFromLoc({
line: 2,
column: 1,
}),
2,
);
assert.deepStrictEqual(
sourceCode.getIndexFromLoc({
line: 2,
column: 2,
}),
3,
);
assert.deepStrictEqual(
sourceCode.getIndexFromLoc({
line: 2,
column: 3,
}),
4,
);
assert.deepStrictEqual(
sourceCode.getIndexFromLoc({
line: 2,
column: 4,
}),
5,
);
assert.deepStrictEqual(
sourceCode.getIndexFromLoc({
line: 2,
column: 5,
}),
6,
);
assert.deepStrictEqual(
sourceCode.getIndexFromLoc({
line: 2,
column: 6,
}),
7,
);
assert.deepStrictEqual(
sourceCode.getIndexFromLoc({
line: 2,
column: 7,
}),
8,
);
assert.deepStrictEqual(
sourceCode.getIndexFromLoc({
line: 2,
column: 8,
}),
9,
);
assert.deepStrictEqual(
sourceCode.getIndexFromLoc({
line: 2,
column: 9,
}),
10,
);
assert.deepStrictEqual(
sourceCode.getIndexFromLoc({
line: 2,
column: 10,
}),
11,
);
assert.deepStrictEqual(
sourceCode.getIndexFromLoc({
line: 2,
column: 11,
}),
12,
);
assert.deepStrictEqual(
sourceCode.getIndexFromLoc({
line: 2,
column: 12,
}),
13,
);
assert.deepStrictEqual(
sourceCode.getIndexFromLoc({
line: 3,
column: 1,
}),
14,
);
assert.deepStrictEqual(
sourceCode.getIndexFromLoc({
line: 3,
column: 2,
}),
15,
);
});
});

describe("getRange()", () => {
it("should return the range property of a node", () => {
const range = [0, 1];
Expand Down
7 changes: 6 additions & 1 deletion tests/types/types.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import json, { JSONSourceCode } from "@eslint/json";
import { ESLint } from "eslint";
import type { ESLint } from "eslint";
import type {
JSONSyntaxElement,
JSONRuleDefinition,
Expand Down Expand Up @@ -71,6 +71,11 @@ json.configs.recommended.plugins satisfies object;
| ObjectNode,
) {
sourceCode.getLoc(node) satisfies SourceLocation;
sourceCode.getLocFromIndex(0) satisfies {
line: number;
column: number;
};
sourceCode.getIndexFromLoc({ line: 1, column: 1 }) satisfies number;
sourceCode.getRange(node) satisfies SourceRange;
sourceCode.getParent(node) satisfies AnyNode | undefined;
sourceCode.getAncestors(node) satisfies JSONSyntaxElement[];
Expand Down
Loading