From cfccc352c9a30c6e6c26afb3840cc8818baac1e1 Mon Sep 17 00:00:00 2001 From: partizan Date: Mon, 30 Aug 2021 21:18:04 +0300 Subject: test: Add tests for is_in_node_range (#1756) * fix: is_in_node_range now includes end line and col This fixes no indents at the end of python files Refs #1136 * update scala highlights (#1760) * add type highlights * add call expression highlights * add function definition highlights * add expression highlights * add literals highlights * add operator highlights * add punctuation highlights * add comment highlights Co-authored-by: Stevan Milic * test: Add unit tests * Revert "fix: is_in_node_range now includes end line and col" This reverts commit 5a721fef5620eb2fae6d9cebe09bf7b230f2606f. * refactor test * apply stylua * fix luacheck * update `describe` text * smallfix Co-authored-by: Stevan Milic Co-authored-by: Stevan Milic --- scripts/run_tests.sh | 8 +++++--- tests/unit/ts_utils_spec.lua | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 tests/unit/ts_utils_spec.lua diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index c7800d50f..2447bd4c1 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -5,12 +5,14 @@ cd $HERE/.. run() { nvim --headless --noplugin -u scripts/minimal_init.lua \ - -c "PlenaryBustedDirectory tests/indent/ { minimal_init = './scripts/minimal_init.lua' }" + -c "PlenaryBustedDirectory $1 { minimal_init = './scripts/minimal_init.lua' }" } if [[ $1 = '--summary' ]]; then # really simple results summary by filtering plenary busted output - run 2> /dev/null | grep -E '^\S*(Success|Fail(ed)?|Errors?)' + run tests/indent/ 2> /dev/null | grep -E '^\S*(Success|Fail(ed)?|Errors?)' +elif [[ $1 = '--unit' ]]; then + run tests/unit else - run + run tests/indent/ fi diff --git a/tests/unit/ts_utils_spec.lua b/tests/unit/ts_utils_spec.lua new file mode 100644 index 000000000..1825a3b68 --- /dev/null +++ b/tests/unit/ts_utils_spec.lua @@ -0,0 +1,41 @@ +local tsutils = require "nvim-treesitter.ts_utils" + +describe("is_in_node_range", function() + local function test_is_in_node_range(line, col) + local node = { + range = function() + return unpack { 0, 3, 2, 5 } + end, + } + return tsutils.is_in_node_range(node, line, col) + end + + it("returns false before node start", function() + assert.is_false(test_is_in_node_range(0, 0)) + assert.is_false(test_is_in_node_range(0, 1)) + assert.is_false(test_is_in_node_range(0, 2)) + end) + + it("returns true at node start", function() + assert.is_true(test_is_in_node_range(0, 3)) + end) + + it("returns true on first line of the node", function() + assert.is_true(test_is_in_node_range(0, 4)) + end) + + it("returns true between node lines", function() + assert.is_true(test_is_in_node_range(1, 2)) + assert.is_true(test_is_in_node_range(1, 20)) + end) + + it("returns false on node end", function() + -- Ranges are end-exclusive + assert.is_false(test_is_in_node_range(2, 5)) + end) + + it("returns false after node end", function() + assert.is_false(test_is_in_node_range(2, 6)) + assert.is_false(test_is_in_node_range(3, 0)) + end) +end) -- cgit v1.2.3-70-g09d2