module; export module lsp.test.provider.main; import std; import lsp.test.framework; import lsp.test.provider.completion; import lsp.test.provider.definitions; import lsp.test.provider.json_flow; import lsp.test.provider.misc; import lsp.test.provider.surface; import lsp.test.provider.fixtures; export int Run(int argc, char** argv) { if (argc > 0 && argv && argv[0]) { lsp::test::provider::SetExecutablePath(std::filesystem::absolute(argv[0]).string()); } for (int i = 1; i < argc; ++i) { if (std::string_view(argv[i]) == "--exit-provider") { return lsp::test::provider::RunExitProviderChild(); } } lsp::test::TestRunner runner; std::cout << "\n========================================" << std::endl; std::cout << " LSP Provider Test Suite" << std::endl; std::cout << "========================================\n" << std::endl; std::cout << "Registering tests..." << std::endl; std::cout << " - Completion tests" << std::endl; lsp::test::provider::CompletionTests::Register(runner); std::cout << " - Definition tests" << std::endl; lsp::test::provider::DefinitionTests::Register(runner); std::cout << " - JSON flow tests" << std::endl; lsp::test::provider::JsonFlowTests::Register(runner); std::cout << " - Other provider tests" << std::endl; lsp::test::provider::ProviderMiscTests::Register(runner); std::cout << " - Provider surface tests" << std::endl; lsp::test::provider::ProviderSurfaceTests::Register(runner); runner.runAllTests(); return runner.getFailedCount(); }