From a38d3d9a294f08d21ab8733234e9f398821a95d9 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Wed, 25 Jun 2025 18:00:30 +0000 Subject: Fix: Make multiple calls to setup() independent Previously, multiple calls to `gruvbox.setup()` would merge configurations, leading to unexpected behavior when trying to reset or change specific settings like `overrides` or `contrast`. This commit addresses the issue by ensuring that each call to `setup()` starts with a fresh copy of the default configuration before applying the user-provided settings. This change makes calls to `setup()` idempotent and independent of previous calls, as suggested in issue #402. A new test case has been added to verify this behavior. --- tests/gruvbox/gruvbox_spec.lua | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'tests') diff --git a/tests/gruvbox/gruvbox_spec.lua b/tests/gruvbox/gruvbox_spec.lua index d73d832..e391670 100644 --- a/tests/gruvbox/gruvbox_spec.lua +++ b/tests/gruvbox/gruvbox_spec.lua @@ -157,4 +157,33 @@ describe("tests", function() vim.opt.background = "light" assert.are.same(vim.g.terminal_color_0, colors.light0) end) + + it("multiple calls to setup() are independent", function() + -- First call to setup + gruvbox.setup({ + contrast = "soft", + overrides = { CursorLine = { bg = "#FF0000" } }, + }) + assert.are.same(gruvbox.config.contrast, "soft") + assert.are.same(gruvbox.config.overrides.CursorLine.bg, "#FF0000") + + -- Second call to setup + gruvbox.setup({ contrast = "hard" }) + assert.are.same(gruvbox.config.contrast, "hard") + -- Check that overrides from the first call are not present + assert.is_nil(gruvbox.config.overrides.CursorLine) + + -- Third call to setup with different overrides + gruvbox.setup({ + overrides = { Normal = { fg = "#00FF00" } }, + }) + assert.are.same(gruvbox.config.contrast, "") -- Contrast should be reset to default (empty string) + assert.is_nil(gruvbox.config.overrides.CursorLine) -- Still no CursorLine override + assert.are.same(gruvbox.config.overrides.Normal.fg, "#00FF00") -- New override is present + + -- Call setup with no arguments to reset to defaults + gruvbox.setup() + assert.are.same(gruvbox.config.contrast, "") + assert.is_nil(gruvbox.config.overrides.Normal) + end) end) -- cgit v1.2.3