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)