📦 deps(lsp_server): update conan dependencies
lsp-server ci / build-and-test (push) Failing after 0s

This commit is contained in:
csh
2026-05-27 09:54:39 +08:00
parent 7838f3ec3d
commit f4f629c232
9 changed files with 380 additions and 16 deletions
@@ -6,7 +6,10 @@ export module lsp.test.lsp_any.transformer;
import lsp.test.framework;
import lsp.protocol.common.basic_types;
import lsp.protocol.common.message;
import lsp.protocol.text_document.completion;
import lsp.codec.common;
import lsp.codec.facade;
import lsp.codec.transformer;
export namespace lsp::test
@@ -69,6 +72,7 @@ export namespace lsp::test
static TestResult testNestedVector();
static TestResult testNestedLSPObject();
static TestResult testMixedTypeNesting();
static TestResult testCompletionListWithDataObject();
};
}
@@ -124,6 +128,7 @@ namespace lsp::test
runner.addTest("Transformer - 嵌套Vector", testNestedVector);
runner.addTest("Transformer - 嵌套LSPObject", testNestedLSPObject);
runner.addTest("Transformer - 混合类型嵌套", testMixedTypeNesting);
runner.addTest("Transformer - CompletionList data对象", testCompletionListWithDataObject);
}
// ==================== ToLSPAny 基本类型测试 ====================
@@ -717,4 +722,32 @@ namespace lsp::test
return result;
}
TestResult TransformerTests::testCompletionListWithDataObject()
{
TestResult result;
result.passed = true;
const auto response_json = std::string{
R"json({"jsonrpc":"2.0","id":"c1","result":{"isIncomplete":false,"itemDefaults":{},"items":[{"data":{"class":"Widget","ctx":"call","is_static":true,"kind":"method","name":"StaticFoo","unit":"MainUnit","uri":"file:///home/csh/windows_share/tinysoft/tsl-devkit/lsp-server/test/test_provider/fixtures/main_unit.tsf"},"kind":2,"label":"StaticFoo","labelDetails":{"description":"[E]","detail":"(y: integer)"}}]}})json"
};
auto response = transform::Deserialize<protocol::ResponseMessage>(response_json);
assertTrue(response.has_value(), "应该能反序列化 ResponseMessage");
assertTrue(response->result.has_value(), "ResponseMessage.result 应该有值");
auto completion_list = transform::FromLSPAny.template operator()<protocol::CompletionList>(response->result.value());
assertEqual(size_t(1), completion_list.items.size(), "应该保留一个补全项");
assertTrue(completion_list.items[0].data.has_value(), "CompletionItem.data 应该有值");
assertTrue(completion_list.items[0].data->Is<protocol::LSPObject>(), "CompletionItem.data 应该是对象");
const auto& result_data = completion_list.items[0].data->Get<protocol::LSPObject>();
assertEqual(std::string("Widget"), result_data.at("class").Get<protocol::string>(), "data.class 应该保留");
assertEqual(std::string("call"), result_data.at("ctx").Get<protocol::string>(), "data.ctx 应该保留");
assertEqual(true, result_data.at("is_static").Get<protocol::boolean>(), "data.is_static 应该保留");
result.message = "成功";
return result;
}
} // namespace lsp::test