Skip to content

Commit

Permalink
Merge pull request #84 from hjdivad/hjdivad/tests
Browse files Browse the repository at this point in the history
chore: test harness
  • Loading branch information
hjdivad committed Apr 22, 2024
2 parents 578de0c + 4592873 commit d9030df
Show file tree
Hide file tree
Showing 13 changed files with 575 additions and 55 deletions.
12 changes: 6 additions & 6 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,12 @@ jobs:

- name: Download Neovim
run: |
mkdir -p build
wget https://github.com/neovim/neovim/releases/download/v0.8.2/nvim.appimage
chmod +x nvim.appimage
mkdir -p /tmp/nvim
wget -q https://github.com/neovim/neovim/releases/download/nightly/nvim.appimage -O /tmp/nvim/nvim.appimage
cd /tmp/nvim
chmod a+x ./nvim.appimage
./nvim.appimage --appimage-extract
echo "${PWD}/squashfs-root/usr/bin" >> $GITHUB_PATH
echo "/tmp/nvim/squashfs-root/usr/bin/" >> $GITHUB_PATH
- name: Install python3
uses: actions/setup-python@v4
Expand Down Expand Up @@ -71,5 +72,4 @@ jobs:
- name: test
env:
DEBUG: ${{ secrets.Debug }}
run: |
echo TODO: tests
run: tests/run
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
packages/nvim/config/lua/config/local_options.lua
/packages/nvim/config/lua/config/local_options.lua
/.tests/
66 changes: 33 additions & 33 deletions packages/nvim/config/lazy-lock.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"LazyVim": { "branch": "main", "commit": "5646ee5191da244ff8ea57b9dba8a7e0d1dbdd42" },
"LuaSnip": { "branch": "master", "commit": "825a61bad1d60d917a7962d73cf3c683f4e0407e" },
"SchemaStore.nvim": { "branch": "main", "commit": "f0ca13e2634f08f127e086909d18a9387a47e760" },
"bufferline.nvim": { "branch": "main", "commit": "64e2c5def50dfd6b6f14d96a45fa3d815a4a1eef" },
"catppuccin": { "branch": "main", "commit": "aebe43db9cb26e1c70fc5b2fd4158169c405e720" },
"LuaSnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" },
"SchemaStore.nvim": { "branch": "main", "commit": "f7cae6f1b38cb296f48ce1a9c5ed1a419d912a42" },
"bufferline.nvim": { "branch": "main", "commit": "f6f00d9ac1a51483ac78418f9e63126119a70709" },
"catppuccin": { "branch": "main", "commit": "a1439ad7c584efb3d0ce14ccb835967f030450fe" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
"cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" },
Expand All @@ -13,61 +13,61 @@
"cmp-nvim-wikilinks": { "branch": "master", "commit": "058fbd51b01db67d2fd21c6d8b54e4613a6838c6" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
"conform.nvim": { "branch": "master", "commit": "9d5ba06d6ee7418c674f498634617416d15b6239" },
"crates.nvim": { "branch": "main", "commit": "b4f4987ccdb1cc3899ee541ef4375c73c48c4570" },
"conform.nvim": { "branch": "master", "commit": "a6965ac128eba75537ec2bc5ddd5d5e357062bdc" },
"crates.nvim": { "branch": "main", "commit": "786d12a70c9b91fa2d0d102bb07df02be0db31a1" },
"dressing.nvim": { "branch": "master", "commit": "18e5beb3845f085b6a33c24112b37988f3f93c06" },
"flash.nvim": { "branch": "main", "commit": "48817af25f51c0590653bbc290866e4890fe1cbe" },
"gitsigns.nvim": { "branch": "main", "commit": "a4db718c78bff65198e3b63f1043f1e7bb5e05c8" },
"gitsigns.nvim": { "branch": "main", "commit": "7e38f07cab0e5387f9f41e92474db174a63a4725" },
"headlines.nvim": { "branch": "master", "commit": "618ef1b2502c565c82254ef7d5b04402194d9ce3" },
"indent-blankline.nvim": { "branch": "master", "commit": "3d08501caef2329aba5121b753e903904088f7e6" },
"lazy.nvim": { "branch": "main", "commit": "bef521ac89c8d423f9d092e37b58e8af0c099309" },
"lualine.nvim": { "branch": "master", "commit": "b5e8bb642138f787a2c1c5aedc2a78cb2cebbd67" },
"lualine.nvim": { "branch": "master", "commit": "0a5a66803c7407767b799067986b4dc3036e1983" },
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "9dfcf2036c223920826140f0151d929a43f9eceb" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "44509689b9bf3984d729cc264aacb31cb7f41668" },
"mason-nvim-dap.nvim": { "branch": "main", "commit": "67210c0e775adec55de9826b038e8b62de554afc" },
"mason.nvim": { "branch": "main", "commit": "751b1fcbf3d3b783fcf8d48865264a9bcd8f9b10" },
"mini.ai": { "branch": "main", "commit": "ee9446a17c160aba6a04ff22097389c41872c878" },
"mini.bufremove": { "branch": "main", "commit": "931a3bb514147d9e812767275c4beba6b779b1d3" },
"mini.comment": { "branch": "main", "commit": "ea3021eb959080a4ed4793733f12a194dfe06edc" },
"mini.indentscope": { "branch": "main", "commit": "cf07f19e718ebb0bcc5b00999083ce11c37b8d40" },
"neo-tree.nvim": { "branch": "v3.x", "commit": "16d1b194376bf1fc2acd89ccb3c29ba8315bfcea" },
"neoconf.nvim": { "branch": "main", "commit": "f41d28e3f9c873de17ecab12e767fc8cfd94c7a2" },
"mini.comment": { "branch": "main", "commit": "f9f1a646fd3d9df7397aa1b9550a875fe8189eb0" },
"mini.indentscope": { "branch": "main", "commit": "a8274b6ea2d868198d27bd91a31ed5ea3a6a5744" },
"neo-tree.nvim": { "branch": "v3.x", "commit": "7aad1bf3f6b849cbf108e02c55ad4d701cb4d33a" },
"neoconf.nvim": { "branch": "main", "commit": "a7da418753379af428f5d26ac91aa6fc18baf86e" },
"neodev.nvim": { "branch": "main", "commit": "ce9a2e8eaba5649b553529c5498acb43a6c317cd" },
"neotest": { "branch": "master", "commit": "e07fe8241112274aae9947b98d255763738a1d52" },
"neotest": { "branch": "master", "commit": "f03a78cef74db5638e4312e18b767294a90de8da" },
"neotest-plenary": { "branch": "master", "commit": "dcaf5ed67a9e28a246e9783319e5aa6c9ea1c584" },
"neotest-python": { "branch": "master", "commit": "2e83d2bc00acbcc1fd529dbf0a0e677cabfe6b50" },
"noice.nvim": { "branch": "main", "commit": "0cbe3f88d038320bdbda3c4c5c95f43a13c3aa12" },
"nui.nvim": { "branch": "main", "commit": "cbd2668414331c10039278f558630ed19b93e69b" },
"nvim-cmp": { "branch": "main", "commit": "ce16de5665c766f39c271705b17fff06f7bcb84f" },
"nvim-dap": { "branch": "master", "commit": "405df1dcc2e395ab5173a9c3d00e03942c023074" },
"nvim-dap-python": { "branch": "master", "commit": "66560f0ebddf96604f7037e1efad3ba6942761e6" },
"nvim-dap": { "branch": "master", "commit": "6ae8a14828b0f3bff1721a35a1dfd604b6a933bb" },
"nvim-dap-python": { "branch": "master", "commit": "3dffa58541d1f52c121fe58ced046268c838d802" },
"nvim-dap-ui": { "branch": "master", "commit": "edfa93f60b189e5952c016eee262d0685d838450" },
"nvim-dap-virtual-text": { "branch": "master", "commit": "baa5b0dc6663284cce32e0d00ac1f2511b13496f" },
"nvim-dap-virtual-text": { "branch": "master", "commit": "3e8e207513e6ef520894950acd76b79902714103" },
"nvim-jdtls": { "branch": "master", "commit": "8eb5f0dbe6e126b392ddcaf45893358619893e45" },
"nvim-lint": { "branch": "master", "commit": "6670b3ac73fa4caf720f017b91c619e9424d955e" },
"nvim-lspconfig": { "branch": "master", "commit": "f4619ab31fc4676001ea05ae8200846e6e7700c7" },
"nvim-nio": { "branch": "master", "commit": "173f285eebb410199273fa178aa517fd2d7edd80" },
"nvim-spectre": { "branch": "master", "commit": "2b012554a2536465243c0dff3605b5927c49ed23" },
"nvim-surround": { "branch": "main", "commit": "d47001f8ddf9646c24f16d2732d4d0255acd2121" },
"nvim-treesitter": { "branch": "master", "commit": "54cf9180a36299265e217858e6e531245074c3f4" },
"nvim-treesitter-context": { "branch": "master", "commit": "f19766163c18515fb4d3c12d572bf9cba6cdb990" },
"nvim-treesitter-textobjects": { "branch": "master", "commit": "d2a4ffc22d9d38d44edb73da007b3cf43451e9b4" },
"nvim-lint": { "branch": "master", "commit": "f098232d70cebe90e27404928c9bc19ca7a5a7b5" },
"nvim-lspconfig": { "branch": "master", "commit": "ed8b8a15acc441aec669f97d75f2c1f2ac8c8aa5" },
"nvim-nio": { "branch": "master", "commit": "5800f585def265d52f1d8848133217c800bcb25d" },
"nvim-spectre": { "branch": "master", "commit": "9653847cf2f225648967f6e9363643e327387579" },
"nvim-surround": { "branch": "main", "commit": "a4e30d33add8a9743b4f518b3a788b3c8e5def71" },
"nvim-treesitter": { "branch": "master", "commit": "bc808622986b0ba8eb64780b94d30cdfbd7c6a9f" },
"nvim-treesitter-context": { "branch": "master", "commit": "ba4289ad345ececd335a9cdd7b9616fd0bb6be92" },
"nvim-treesitter-textobjects": { "branch": "master", "commit": "23b820146956b3b681c19e10d3a8bc0cbd9a1d4c" },
"nvim-ts-autotag": { "branch": "main", "commit": "531f48334c422222aebc888fd36e7d109cb354cd" },
"nvim-ts-context-commentstring": { "branch": "main", "commit": "734ebad31c81c6198dfe102aa23280937c937c42" },
"nvim-web-devicons": { "branch": "master", "commit": "3ee60deaa539360518eaab93a6c701fe9f4d82ef" },
"one-small-step-for-vimkind": { "branch": "main", "commit": "cd2500ab74addeed6ac260a008dd649c01d3ba12" },
"nvim-ts-context-commentstring": { "branch": "main", "commit": "a6382f744f584bbf71d0a563af789af7190aabda" },
"nvim-web-devicons": { "branch": "master", "commit": "b3468391470034353f0e5110c70babb5c62967d3" },
"one-small-step-for-vimkind": { "branch": "main", "commit": "93af151b02d2952977fd3db20b07d2a5d23b60f6" },
"persistence.nvim": { "branch": "main", "commit": "4982499c1636eac254b72923ab826ee7827b3084" },
"plenary.nvim": { "branch": "master", "commit": "8aad4396840be7fc42896e3011751b7609ca4119" },
"rustaceanvim": { "branch": "master", "commit": "e2dbf91daed26d4dd7263affbecbf9a36e0096e5" },
"rustaceanvim": { "branch": "master", "commit": "2a53e2fe911e971fa90341af27d2fe1447c0cbd2" },
"tailwindcss-colorizer-cmp.nvim": { "branch": "main", "commit": "3d3cd95e4a4135c250faf83dd5ed61b8e5502b86" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "9ef21b2e6bb6ebeaf349a0781745549bbb870d27" },
"telescope-tmux.nvim": { "branch": "master", "commit": "cf857c1d28f6a5b0fd78ecb9d7c03fe95aa8eb3e" },
"telescope.nvim": { "branch": "master", "commit": "4626aaa2bcfdacf55fd6d44b430e2df81b2403ff" },
"telescope.nvim": { "branch": "master", "commit": "d00d9df48c00d8682c14c2b5da78bda7ef06b939" },
"todo-comments.nvim": { "branch": "main", "commit": "a7e39ae9e74f2c8c6dc4eea6d40c3971ae84752d" },
"tokyonight.nvim": { "branch": "main", "commit": "9bf9ec53d5e87b025e2404069b71e7ebdc3a13e5" },
"trouble.nvim": { "branch": "dev", "commit": "10eff94809ecd6ee6cc59f42e9521b9b8a14e9ce" },
"venv-selector.nvim": { "branch": "main", "commit": "3c57922256e7e26205a25f5a42ecf7104d9f2c78" },
"vim-fugitive": { "branch": "master", "commit": "c0b03f1cac242d96837326d300f42a660306fc1a" },
"vim-illuminate": { "branch": "master", "commit": "305bf07b919ac526deb5193280379e2f8b599926" },
"vim-fugitive": { "branch": "master", "commit": "dac8e5c2d85926df92672bf2afb4fc48656d96c7" },
"vim-illuminate": { "branch": "master", "commit": "e522e0dd742a83506db0a72e1ced68c9c130f185" },
"vim-rhubarb": { "branch": "master", "commit": "ee69335de176d9325267b0fd2597a22901d927b1" },
"vim-startuptime": { "branch": "master", "commit": "ac2cccb5be617672add1f4f3c0a55ce99ba34e01" },
"which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" }
Expand Down
8 changes: 8 additions & 0 deletions packages/nvim/config/lua/config/autocmds.lua
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,14 @@ vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
end,
})

vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
pattern = "*_spec.lua",
group = ft_group,
callback = function()
require('luasnip').filetype_extend('lua', { 'plenary' })
end,
})

vim.api.nvim_create_autocmd("FileType", {
group = ft_group,
pattern = { "typescriptreact" },
Expand Down
4 changes: 4 additions & 0 deletions packages/nvim/config/lua/hjdivad_util/init.lua
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
local map_stack = require('hjdivad_util/map_stack')

local M = {}

M.map_stack = map_stack

--- Concatenates multiple array-like tables into one.
--- This function accepts a variable number of table
--- arguments and concatenates their elements into a single
Expand Down
149 changes: 149 additions & 0 deletions packages/nvim/config/lua/hjdivad_util/map_stack.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
---@class MapStack
local M = {}

local stack = {}

local function reset()
stack = {}
end

local function tbl_empty_dict(t)
for _, _ in pairs(t) do
return false
end

return true
end

---@param lhs string
---@param mode string
local function push_restore_fn(lhs, mode)
---@type table
---@diagnostic disable-next-line: assign-type-mismatch, param-type-mismatch
local maparg = vim.fn.maparg(lhs, mode, false, true)
if maparg["buffer"] == 1 then
--FIXME: handle case where a buf-local mapping shadowed a global mapping we
--should have restored here
--
--e.g.
-- nmap lhs rhs_g
-- nmap <buffer> lhs rhs
-- push
-- nmap lhs rhs2
-- pop
--
--probably requires manually re-implementing maparg and mapset, which is
--also needed for proper buffer keymap support
maparg = {}
end

local restore_fn
if tbl_empty_dict(maparg) then
restore_fn = function()
vim.keymap.del(mode, lhs)
end
else
restore_fn = function()
vim.fn.mapset(mode, false, maparg)
end
end

local frame = stack[#stack]
table.insert(frame, restore_fn)
end

---@class KeymapProxy
local keymap = {}

---@param modes string|table
---@param cb fun(mode: string)
local function for_each_mode(modes, cb)
if type(modes) == "table" then
for _, mode in ipairs(modes) do
cb(mode)
end
elseif type(modes) == "string" then
cb(modes)
else
error("Invalid type(modes) '" .. type(modes) .. "'")
end
end

---@param modes string|table
---@param lhs string
---@param rhs string|function
---@param opts? table
---see :help vim.keymap.set
keymap.set = function(modes, lhs, rhs, opts)
for_each_mode(modes, function(mode)
push_restore_fn(lhs, mode)
vim.keymap.set(mode, lhs, rhs, opts)
end)
end

---@param modes string|table
---@param lhs string
---@param opts? table
---see :help vim.keymap.del
keymap.del = function(modes, lhs, opts)
for_each_mode(modes, function(mode)
push_restore_fn(lhs, mode)
vim.keymap.del(mode, lhs, opts)
end)
end

keymap.buf = {}

---@param buffer integer
---@param modes string|table
---@param lhs string
---@param rhs string|function
---@param opts? table
keymap.buf.set = function(buffer, modes, lhs, rhs, opts)
for_each_mode(modes, function(mode)
-- push_restore_fn(...)
-- vim.api.nvim_buf_set_keymap(buffer, mode, lhs, rhs, opts)
end)
end

---@param buffer integer
---@param modes string|table
---@param lhs string
---@param opts? table
keymap.buf.del = function(buffer, modes, lhs, opts)
for_each_mode(modes, function(mode)
-- push_restore_fn(...)
-- vim.api.nvim_buf_del_keymap(buffer, mode, lhs)
end)
end

---Create a new keymap frame. `cb` will be called with a stack-aware `keymap`
---that can be used the same as `vim.keymap.set` and `vim.keymap.del`. Any
--changes made will be saved to the current stack frame and can be shadowed by
--future calls to `push`, and undone by calls to `pop`.
---
---@param cb fun(keymap: KeymapProxy)
M.push = function(cb)
table.insert(stack, {})
cb(keymap)
end

---Remove the most recent stack frame, restoring the state of the keymaps at
---the prior frame.
M.pop = function()
-- run all the restore operations to undo the effects of the mappings set during the last push
local frame = stack[#stack]
for _, restore_fn in ipairs(frame) do
restore_fn()
end
table.remove(stack)
end

M._debug = function()
return {
stack = stack,
reset = reset,
}
end

return M
41 changes: 34 additions & 7 deletions packages/nvim/config/lua/plugins/extras/test/neotest.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
return {
{
"nvim-neotest/neotest",
dependencies = { "nvim-neotest/neotest-plenary" },
-- see ~/.local/share/nvim/lazy/LazyVim/lua/lazyvim/plugins/extras/test/core.lua
opts = {
-- --- @type neotest.Config.summary
Expand All @@ -10,13 +11,40 @@ return {
-- ---@type neotest.Config.diagnostic
-- diagnostic = { enabled = true, severity = vim.diagnostic.severity.ERROR },
---@type neotest.Config.output
output = { enabled = true, open_on_run = false }
output = { enabled = true, open_on_run = false },
---@type neotest.Adapter[]
adapters = {
-- Can't just require it here because of load-order issues, but it's
-- safe to call setup repeatedly so in a .nvim.lua
-- require('neotest').setup({ adapters={ require('neotes-plenary')}})
-- require("neotest-plenary"),
},
},
keys = {
{ "<leader>tt", false },
{ "<leader>ts", false },
{ "<leader>to", function() require("neotest").output.open({ enter = true, auto_close = true, last_run = true }) end, desc = "Show Output" },
{ "<leader>tr", function() require("neotest").summary.run_marked() end, desc = "Run Marked" },
{
"<leader>to",
function()
require("neotest").output.open({ enter = true, auto_close = true, last_run = true })
end,
desc = "Show Output",
},
{
"<leader>tr",
function()
require("neotest").summary.run_marked()
end,
desc = "Run Marked",
},
{
"<leader>tR",
function()
require("neotest").run.run()
require("neotest").output.open({ enter = true, auto_close = true, last_run = true })
end,
desc = "Run Nearest",
},
{
"<leader>tS",
function()
Expand All @@ -32,17 +60,16 @@ return {
end
end, 101)
end,
desc = "Toggle Summary"
desc = "Toggle Summary",
},
{
"<leader>tf",
function()
require("neotest").run.run(vim.fn.expand("%"))
require("neotest").summary.open()
end,
desc = "Run File"
desc = "Run File",
},
}
,
},
},
}
4 changes: 2 additions & 2 deletions packages/nvim/config/snippets/all.lua
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ ls.add_snippets("all", {
return sn(nil, t(os.date('%e %b %Y (%A)')))
end)
}),
s("::tts::", {
s("::today-short::", {
d(1, function ()
return sn(nil, t(os.date('%e %b')))
end)
Expand All @@ -128,7 +128,7 @@ ls.add_snippets("all", {
-- 2. return sn with inputs (date + format)
-- 3. on exit, mv state to 1 and run again
-- 4. this time return the computed date
s("::tt::", {
s("::date::", {
d(1, function(_args, snip)
if tt_state == tt_states.start then
return sn(nil, {
Expand Down

0 comments on commit d9030df

Please sign in to comment.