Skip to content

Commit e3fe043

Browse files
committed
add LSP server life-cycle test
1 parent b83822d commit e3fe043

File tree

3 files changed

+27
-18
lines changed

3 files changed

+27
-18
lines changed

src/Server.zig

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1804,23 +1804,6 @@ fn pushJob(server: *Server, job: Job) error{OutOfMemory}!void {
18041804
};
18051805
}
18061806

1807-
test {
1808-
const gpa = std.testing.allocator;
1809-
var config: Config = .{};
1810-
defer @import("legacy_json.zig").parseFree(Config, gpa, config);
1811-
var server = try Server.create(gpa, &config, null);
1812-
defer server.destroy();
1813-
1814-
var arena_allocator = std.heap.ArenaAllocator.init(gpa);
1815-
defer arena_allocator.deinit();
1816-
const arena = arena_allocator.allocator();
1817-
1818-
_ = try server.sendRequestSync(arena, "initialize", .{ .capabilities = .{} });
1819-
_ = try server.sendNotificationSync(arena, "initialized", .{});
1820-
_ = try server.sendRequestSync(arena, "shutdown", {});
1821-
_ = try server.sendNotificationSync(arena, "exit", {});
1822-
}
1823-
18241807
//
18251808
// LSP helper functions
18261809
//

tests/lifecycle.zig

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
const std = @import("std");
2+
const zls = @import("zls");
3+
4+
const allocator = std.testing.allocator;
5+
6+
test "LSP lifecycle" {
7+
var config: zls.Config = .{};
8+
defer zls.legacy_json.parseFree(zls.Config, allocator, config);
9+
10+
var server = try zls.Server.create(allocator, &config, null);
11+
defer server.destroy();
12+
13+
var arena_allocator = std.heap.ArenaAllocator.init(allocator);
14+
defer arena_allocator.deinit();
15+
const arena = arena_allocator.allocator();
16+
17+
try std.testing.expectEqual(zls.Server.Status.uninitialized, server.status);
18+
_ = try server.sendRequestSync(arena, "initialize", .{ .capabilities = .{} });
19+
try std.testing.expectEqual(zls.Server.Status.initializing, server.status);
20+
try server.sendNotificationSync(arena, "initialized", .{});
21+
try std.testing.expectEqual(zls.Server.Status.initialized, server.status);
22+
_ = try server.sendRequestSync(arena, "shutdown", {});
23+
try std.testing.expectEqual(zls.Server.Status.shutdown, server.status);
24+
try server.sendNotificationSync(arena, "exit", {});
25+
try std.testing.expectEqual(zls.Server.Status.exiting_success, server.status);
26+
}

tests/tests.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ comptime {
77
_ = @import("utility/uri.zig");
88
_ = @import("utility/diff.zig");
99

10-
// TODO Lifecycle Messages
10+
_ = @import("lifecycle.zig");
1111

1212
// TODO Document Synchronization
1313

0 commit comments

Comments
 (0)