Files
skill-ls/tests/test_helpers.py
T
2026-06-19 17:52:39 +02:00

32 lines
1.2 KiB
Python

from skillls.helpers import build_node_hierarchy
from skillls.types import Node, NodeKind
from lsprotocol.types import Range, Position
import pytest
@pytest.fixture
def sample_range():
return Range(Position(0, 0), Position(5, 10))
def test_build_node_hierarchy():
# Create a root node
root_range = Range(Position(0, 0), Position(5, 10))
root = Node(node="root", kind=NodeKind.PROC, location=root_range)
# Create a child node that should be contained within the root's range
child_range = Range(Position(1, 1), Position(2, 2))
child = Node(node="child", kind=NodeKind.LET, location=child_range)
# Create another child node that is NOT in the root's range (outside)
grandchild_range = Range(Position(6, 0), Position(7, 0))
grandchild = Node(node="grandelse", kind=NodeKind.PROC, location=grandchild_range)
# Build hierarchy
hierarchy = build_node_hierarchy([root, child, grandchild])
# Root should be in the hierarchy
assert root in hierarchy
# Child should be a child of root because its range is within root's range (in our mock)
assert child in root.children
# Grandchild is outside root range so it should be in the top level list
assert grandchild in hierarchy