Files
nvim-cmp/lua/cmp/utils/misc_spec.lua
Charly Delay b10bb327f3 misc.merge: ensure that misc.none is never returned (#441)
Before this change:

1. `misc.merge({a = misc.none}, {a = nil})` returned `{a = misc.none}`
2. `misc.merge({a = nil}, {a = misc.none})` returned `{a = misc.none}`

(1) can cause error if a non-existing mapping is set to `config.disable`
(which is an alias for `misc.none`).

(2) does not cause any issue to date, but is inconsistent with the
expected behavior of `misc.merge(…)`.

After this change:

1. `misc.merge({a = misc.none}, {a = nil})` returns `{a = nil}`
2. `misc.merge({a = nil}, {a = misc.none})` returns `{a = nil}`

Fixes #440.
2021-10-30 19:05:20 +09:00

52 lines
818 B
Lua

local spec = require('cmp.utils.spec')
local misc = require('cmp.utils.misc')
describe('misc', function()
before_each(spec.before)
it('merge', function()
local merged
merged = misc.merge({
a = {},
}, {
a = {
b = 1,
},
})
assert.are.equal(merged.a.b, 1)
merged = misc.merge({
a = false,
}, {
a = {
b = 1,
},
})
assert.are.equal(merged.a, false)
merged = misc.merge({
a = misc.none,
}, {
a = {
b = 1,
},
})
assert.are.equal(merged.a, nil)
merged = misc.merge({
a = misc.none,
}, {
a = nil,
})
assert.are.equal(merged.a, nil)
merged = misc.merge({
a = nil,
}, {
a = misc.none,
})
assert.are.equal(merged.a, nil)
end)
end)