--- /dev/null
+local eq = assert.are.same
+local ale = require("ale")
+
+describe("ale.get_filename_mappings", function()
+ local buffer_map
+
+ setup(function()
+ _G.vim = {
+ api = {
+ nvim_buf_get_var = function(buffer, key)
+ local buffer_table = buffer_map[buffer] or {}
+ local value = buffer_table[key]
+
+ if value == nil then
+ error(key .. " is missing")
+ end
+
+ return value
+ end,
+ },
+ g = {
+ },
+ }
+ end)
+
+ teardown(function()
+ _G.vim = nil
+ end)
+
+ before_each(function()
+ buffer_map = {[42] = {}}
+ _G.vim.g = {}
+ end)
+
+ it("should return the correct mappings for given linters/fixers", function()
+ vim.g.ale_filename_mappings = {
+ a = {{"foo", "bar"}},
+ b = {{"baz", "foo"}},
+ }
+
+ eq({{"foo", "bar"}}, ale.get_filename_mappings(42, "a"))
+ eq({{"baz", "foo"}}, ale.get_filename_mappings(42, "b"))
+ eq({}, ale.get_filename_mappings(42, "c"))
+
+ buffer_map[42].ale_filename_mappings = {b = {{"abc", "xyz"}}}
+
+ eq({}, ale.get_filename_mappings(42, "a"))
+ eq({{"abc", "xyz"}}, ale.get_filename_mappings(42, "b"))
+ eq({}, ale.get_filename_mappings(42, "c"))
+ end)
+
+ it("should return arrays set for use with all tools", function()
+ vim.g.ale_filename_mappings = {{"foo", "bar"}}
+
+ eq({{"foo", "bar"}}, ale.get_filename_mappings(42, "a"))
+ eq({{"foo", "bar"}}, ale.get_filename_mappings(42, ""))
+ eq({{"foo", "bar"}}, ale.get_filename_mappings(42, nil))
+
+ buffer_map[42].ale_filename_mappings = {{"abc", "xyz"}}
+
+ eq({{"abc", "xyz"}}, ale.get_filename_mappings(42, "a"))
+ eq({{"abc", "xyz"}}, ale.get_filename_mappings(42, ""))
+ eq({{"abc", "xyz"}}, ale.get_filename_mappings(42, nil))
+ end)
+
+ it("should let you use * as a fallback", function()
+ vim.g.ale_filename_mappings = {
+ a = {{"foo", "bar"}},
+ ["*"] = {{"abc", "xyz"}},
+ }
+
+ eq({{"foo", "bar"}}, ale.get_filename_mappings(42, "a"))
+ eq({{"abc", "xyz"}}, ale.get_filename_mappings(42, "b"))
+ eq({{"abc", "xyz"}}, ale.get_filename_mappings(42, ""))
+ eq({{"abc", "xyz"}}, ale.get_filename_mappings(42, nil))
+ end)
+end)