/ tests / spec / wezterm_loader_spec.lua
wezterm_loader_spec.lua
 1  -- Busted spec for WezTerm config loader (implements wezterm_loader.feature scenarios).
 2  -- Run with: busted tests/spec/wezterm_loader_spec.lua (describe/it/assert are provided by Busted)
 3  
 4  -- Repo root (assume we run from repo root or tests/spec)
 5  local repo_root = os.getenv('DOTFILES_HOME') or (os.getenv('HOME') and (os.getenv('HOME') .. '/.dotfiles')) or '.'
 6  local wezterm_path = repo_root .. '/wezterm/?.lua'
 7  
 8  describe('WezTerm config loader', function()
 9    local loader
10    local log_warn_calls
11  
12    before_each(function()
13      log_warn_calls = {}
14      package.loaded['wezterm'] = {
15        log_warn = function(_, key)
16          table.insert(log_warn_calls, key)
17        end,
18      }
19      package.loaded['config'] = nil
20      package.loaded['config.init'] = nil
21      package.path = package.path .. ';' .. wezterm_path
22      local config = require('config.init')
23      loader = config:init()
24    end)
25  
26    after_each(function()
27      package.loaded['wezterm'] = nil
28      package.loaded['config'] = nil
29    end)
30  
31    it('Scenario: Appending options merges new keys into config', function()
32      loader:append({ font_size = 12 })
33      loader:append({ line_height = 1.2 })
34      assert.is_equal(12, loader.options.font_size)
35      assert.is_equal(1.2, loader.options.line_height)
36    end)
37  
38    it('Scenario: Appending duplicate key does not overwrite and is reported', function()
39      loader:append({ font_size = 12 })
40      loader:append({ font_size = 14 })
41      assert.is_equal(12, loader.options.font_size)
42      assert.is_true(#log_warn_calls >= 1)
43    end)
44  end)