diff --git a/lua/pytrize/jump/fixture.lua b/lua/pytrize/jump/fixture.lua index 83f37cc..aeb8971 100644 --- a/lua/pytrize/jump/fixture.lua +++ b/lua/pytrize/jump/fixture.lua @@ -32,7 +32,7 @@ M.to_declaration = function() end open_file(location.file) - vim.api.nvim_win_set_cursor(0, {location.linenr, 0}) + vim.api.nvim_win_set_cursor(0, {location.linenr, location.col}) if require('pytrize.settings').settings.metrics then local total = hrtime() - t0 diff --git a/lua/pytrize/ts.lua b/lua/pytrize/ts.lua index cd54d95..183e080 100644 --- a/lua/pytrize/ts.lua +++ b/lua/pytrize/ts.lua @@ -97,10 +97,11 @@ M.scan_fixtures = function(filepath) local fixtures = {} for _, def in ipairs(defs) do - local row = def.name_node:start() + local row, col = def.func_node:start() fixtures[def.name] = { file = filepath, linenr = row + 1, + col = col, } end diff --git a/tests/pytrize/ts_spec.lua b/tests/pytrize/ts_spec.lua index 7c44d24..2dc295b 100644 --- a/tests/pytrize/ts_spec.lua +++ b/tests/pytrize/ts_spec.lua @@ -150,6 +150,34 @@ describe("scan_fixtures", function() os.remove(path) end) + it("returns col=0 for a top-level fixture", function() + local path = write_tmp_py("scan_col_top", { + "import pytest", + "", + "@pytest.fixture", + "def db():", + " return 'connection'", + }) + local fixtures = ts_utils.scan_fixtures(path) + assert.are.equal(0, fixtures.db.col) + os.remove(path) + end) + + it("returns correct col for a fixture defined inside a class", function() + local path = write_tmp_py("scan_col_class", { + "import pytest", + "", + "class TestFixtures:", + " @pytest.fixture", + " def class_fix(self):", + " return 42", + }) + local fixtures = ts_utils.scan_fixtures(path) + assert.are.equal(5, fixtures.class_fix.linenr) + assert.are.equal(4, fixtures.class_fix.col) + os.remove(path) + end) + it("cleans up buffer for files that were not previously loaded", function() local path = write_tmp_py("scan4", { "import pytest",