@@ -9831,6 +9831,117 @@ describe("Linter with FlatConfigArray", () => {
9831
9831
});
9832
9832
});
9833
9833
9834
+ // https://github.com/eslint/eslint/issues/17669
9835
+ it("should use `cwd` constructor option as config `basePath` when config is not an instance of FlatConfigArray", () => {
9836
+ const rule = {
9837
+ create(context) {
9838
+ return {
9839
+ Program(node) {
9840
+ context.report({ node, message: "Bad program." });
9841
+ }
9842
+ };
9843
+ }
9844
+ };
9845
+
9846
+ const code = "foo";
9847
+ const config = [
9848
+ {
9849
+ plugins: {
9850
+ test: {
9851
+ rules: {
9852
+ "test-rule-1": rule,
9853
+ "test-rule-2": rule,
9854
+ "test-rule-3": rule
9855
+ }
9856
+ }
9857
+ }
9858
+ },
9859
+ {
9860
+ rules: {
9861
+ "test/test-rule-1": 2
9862
+ }
9863
+ },
9864
+ {
9865
+ files: ["**/*.ts"],
9866
+ rules: {
9867
+ "test/test-rule-2": 2
9868
+ }
9869
+ },
9870
+ {
9871
+ files: ["bar/file.ts"],
9872
+ rules: {
9873
+ "test/test-rule-3": 2
9874
+ }
9875
+ }
9876
+ ];
9877
+
9878
+ const linterWithOptions = new Linter({
9879
+ configType: "flat",
9880
+ cwd: "/foo"
9881
+ });
9882
+
9883
+ let messages;
9884
+
9885
+ messages = linterWithOptions.verify(code, config, "/file.js");
9886
+ assert.strictEqual(messages.length, 1);
9887
+ assert.deepStrictEqual(messages[0], {
9888
+ ruleId: null,
9889
+ severity: 1,
9890
+ message: "No matching configuration found for /file.js.",
9891
+ line: 0,
9892
+ column: 0,
9893
+ nodeType: null
9894
+ });
9895
+
9896
+ messages = linterWithOptions.verify(code, config, "/file.ts");
9897
+ assert.strictEqual(messages.length, 1);
9898
+ assert.deepStrictEqual(messages[0], {
9899
+ ruleId: null,
9900
+ severity: 1,
9901
+ message: "No matching configuration found for /file.ts.",
9902
+ line: 0,
9903
+ column: 0,
9904
+ nodeType: null
9905
+ });
9906
+
9907
+ messages = linterWithOptions.verify(code, config, "/bar/foo/file.js");
9908
+ assert.strictEqual(messages.length, 1);
9909
+ assert.deepStrictEqual(messages[0], {
9910
+ ruleId: null,
9911
+ severity: 1,
9912
+ message: "No matching configuration found for /bar/foo/file.js.",
9913
+ line: 0,
9914
+ column: 0,
9915
+ nodeType: null
9916
+ });
9917
+
9918
+ messages = linterWithOptions.verify(code, config, "/bar/foo/file.ts");
9919
+ assert.strictEqual(messages.length, 1);
9920
+ assert.deepStrictEqual(messages[0], {
9921
+ ruleId: null,
9922
+ severity: 1,
9923
+ message: "No matching configuration found for /bar/foo/file.ts.",
9924
+ line: 0,
9925
+ column: 0,
9926
+ nodeType: null
9927
+ });
9928
+
9929
+ messages = linterWithOptions.verify(code, config, "/foo/file.js");
9930
+ assert.strictEqual(messages.length, 1);
9931
+ assert.strictEqual(messages[0].ruleId, "test/test-rule-1");
9932
+
9933
+ messages = linterWithOptions.verify(code, config, "/foo/file.ts");
9934
+ assert.strictEqual(messages.length, 2);
9935
+ assert.strictEqual(messages[0].ruleId, "test/test-rule-1");
9936
+ assert.strictEqual(messages[1].ruleId, "test/test-rule-2");
9937
+
9938
+ messages = linterWithOptions.verify(code, config, "/foo/bar/file.ts");
9939
+ assert.strictEqual(messages.length, 3);
9940
+ assert.strictEqual(messages[0].ruleId, "test/test-rule-1");
9941
+ assert.strictEqual(messages[1].ruleId, "test/test-rule-2");
9942
+ assert.strictEqual(messages[2].ruleId, "test/test-rule-3");
9943
+ });
9944
+
9834
9945
describe("Plugins", () => {
9835
9946
9836
9947
it("should not load rule definition when rule isn't used", () => {
@@ -11976,7 +12087,7 @@ describe("Linter with FlatConfigArray", () => {
11976
12087
...baseConfig
11977
12088
};
11978
12089
11979
- linterWithOption.verify(code, config);
12090
+ linterWithOption.verify(code, config, `${cwd}/file.js` );
11980
12091
assert(spy && spy.calledOnce);
11981
12092
});
11982
12093
@@ -12059,7 +12170,7 @@ describe("Linter with FlatConfigArray", () => {
12059
12170
...baseConfig
12060
12171
};
12061
12172
12062
- linterWithOption.verify(code, config);
12173
+ linterWithOption.verify(code, config, `${cwd}/file.js` );
12063
12174
assert(spy && spy.calledOnce);
12064
12175
});
12065
12176
0 commit comments