Skip to content

Commit

Permalink
Restore parserServices tests
Browse files Browse the repository at this point in the history
  • Loading branch information
nzakas committed Dec 14, 2023
1 parent 8ba1ae2 commit ffb5d0a
Showing 1 changed file with 129 additions and 0 deletions.
129 changes: 129 additions & 0 deletions tests/lib/linter/linter.js
Original file line number Diff line number Diff line change
Expand Up @@ -480,6 +480,57 @@ describe("Linter", () => {
assert.strictEqual(suppressedMessages.length, 0);
});

it("should expose parser services when using parseForESLint() and services are specified", () => {
linter.defineParser("enhanced-parser", testParsers.enhancedParser);
linter.defineRule("test-service-rule", {
create: context => ({
Literal(node) {
context.report({
node,
message: context.sourceCode.parserServices.test.getMessage()
});
}
})
});

const config = { rules: { "test-service-rule": 2 }, parser: "enhanced-parser" };
const messages = linter.verify("0", config, filename);
const suppressedMessages = linter.getSuppressedMessages();

assert.strictEqual(messages.length, 1);
assert.strictEqual(messages[0].message, "Hi!");
assert.strictEqual(suppressedMessages.length, 0);
});

it("should use the same parserServices if source code object is reused", () => {
linter.defineParser("enhanced-parser", testParsers.enhancedParser);
linter.defineRule("test-service-rule", {
create: context => ({
Literal(node) {
context.report({
node,
message: context.sourceCode.parserServices.test.getMessage()
});
}
})
});

const config = { rules: { "test-service-rule": 2 }, parser: "enhanced-parser" };
const messages = linter.verify("0", config, filename);
const suppressedMessages = linter.getSuppressedMessages();

assert.strictEqual(messages.length, 1);
assert.strictEqual(messages[0].message, "Hi!");
assert.strictEqual(suppressedMessages.length, 0);

const messages2 = linter.verify(linter.getSourceCode(), config, filename);
const suppressedMessages2 = linter.getSuppressedMessages();

assert.strictEqual(messages2.length, 1);
assert.strictEqual(messages2[0].message, "Hi!");
assert.strictEqual(suppressedMessages2.length, 0);
});

it("should pass parser as parserPath to all rules when default parser is used", () => {
linter.defineRule("test-rule", {
create: sinon.mock().withArgs(
Expand Down Expand Up @@ -7648,6 +7699,84 @@ describe("Linter with FlatConfigArray", () => {
assert.strictEqual(suppressedMessages.length, 0);
});

it("should expose parser services when using parseForESLint() and services are specified", () => {

const config = {
plugins: {
test: {
rules: {
"test-service-rule": {
create: context => ({
Literal(node) {
context.report({
node,
message: context.sourceCode.parserServices.test.getMessage()
});
}
})
}
}
}
},
languageOptions: {
parser: testParsers.enhancedParser
},
rules: {
"test/test-service-rule": 2
}
};

const messages = linter.verify("0", config, filename);
const suppressedMessages = linter.getSuppressedMessages();

assert.strictEqual(messages.length, 1);
assert.strictEqual(messages[0].message, "Hi!");

assert.strictEqual(suppressedMessages.length, 0);
});

it("should use the same parserServices if source code object is reused", () => {

const config = {
plugins: {
test: {
rules: {
"test-service-rule": {
create: context => ({
Literal(node) {
context.report({
node,
message: context.sourceCode.parserServices.test.getMessage()
});
}
})
}
}
}
},
languageOptions: {
parser: testParsers.enhancedParser
},
rules: {
"test/test-service-rule": 2
}
};

const messages = linter.verify("0", config, filename);
const suppressedMessages = linter.getSuppressedMessages();

assert.strictEqual(messages.length, 1);
assert.strictEqual(messages[0].message, "Hi!");
assert.strictEqual(suppressedMessages.length, 0);

const messages2 = linter.verify(linter.getSourceCode(), config, filename);
const suppressedMessages2 = linter.getSuppressedMessages();

assert.strictEqual(messages2.length, 1);
assert.strictEqual(messages2[0].message, "Hi!");
assert.strictEqual(suppressedMessages2.length, 0);
});

it("should pass parser as context.languageOptions.parser to all rules when default parser is used", () => {

// references to Espree get messed up in a browser context, so wrap it
Expand Down

0 comments on commit ffb5d0a

Please sign in to comment.