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.
52 lines
818 B
Lua
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)
|