* fix search filtering pass along * prepare inclusion 'modernize' linter and use errors.join instead
78 lines
1.6 KiB
Go
78 lines
1.6 KiB
Go
package lua
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func writeLuaFile(t *testing.T, body string) string {
|
|
t.Helper()
|
|
|
|
dir := t.TempDir()
|
|
path := filepath.Join(dir, "init.lua")
|
|
require.NoError(t, os.WriteFile(path, []byte(body), 0o600))
|
|
|
|
return path
|
|
}
|
|
|
|
func TestLoadIntoStrictFailsOnUnknownKey(t *testing.T) {
|
|
t.Parallel()
|
|
path := writeLuaFile(t, `
|
|
yay.opt.unknown_key = true
|
|
`)
|
|
|
|
cfg := &testConfig{}
|
|
err := LoadInto(nil, path, cfg)
|
|
require.Error(t, err)
|
|
require.Contains(t, err.Error(), "unknown yay.opt key: unknown_key")
|
|
}
|
|
|
|
func TestLoadIntoStrictFailsOnTypeMismatch(t *testing.T) {
|
|
t.Parallel()
|
|
path := writeLuaFile(t, `
|
|
yay.opt.devel = "true"
|
|
`)
|
|
|
|
cfg := &testConfig{}
|
|
err := LoadInto(nil, path, cfg)
|
|
require.Error(t, err)
|
|
require.Contains(t, err.Error(), "yay.opt.devel: expected boolean")
|
|
}
|
|
|
|
func TestLoadIntoAppliesValidValues(t *testing.T) {
|
|
t.Parallel()
|
|
path := writeLuaFile(t, `
|
|
yay.opt.build_dir = "/tmp/yay"
|
|
yay.opt.request_split_n = 123
|
|
yay.opt.devel = true
|
|
`)
|
|
|
|
cfg := &testConfig{}
|
|
err := LoadInto(nil, path, cfg)
|
|
require.NoError(t, err)
|
|
require.Equal(t, "/tmp/yay", cfg.BuildDir)
|
|
require.Equal(t, 123, cfg.RequestSplitN)
|
|
require.True(t, cfg.Devel)
|
|
}
|
|
|
|
func TestLoadReturnsLiveEngine(t *testing.T) {
|
|
t.Parallel()
|
|
path := writeLuaFile(t, `
|
|
yay.create_autocmd("AURPreInstall", {
|
|
callback = function() end,
|
|
})
|
|
yay.opt.build_dir = "/tmp/yay"
|
|
`)
|
|
|
|
cfg := &testConfig{}
|
|
engine, err := Load(nil, path, cfg)
|
|
require.NoError(t, err)
|
|
t.Cleanup(engine.Close)
|
|
|
|
require.Equal(t, "/tmp/yay", cfg.BuildDir)
|
|
require.True(t, engine.HasAutocmd(EventAURPreInstall))
|
|
}
|