Add NS8 local production smoke
This commit is contained in:
@@ -188,3 +188,68 @@ fn freeRows(rows: [][]const u8) void {
|
||||
for (rows) |row| allocator.free(row);
|
||||
allocator.free(rows);
|
||||
}
|
||||
|
||||
test "regular: ns8 local production smoke covers editor workflow before real-device dogfood" {
|
||||
var client = try tui.Client.initWithIo(allocator, .{ .width = 39, .height = 8 }, std.testing.io);
|
||||
defer client.deinit();
|
||||
|
||||
try client.handleTraceLine("repo_file src/main.zig=pub fn main() void { needle(); }\n");
|
||||
try client.handleTraceLine("repo_file README.md=needle docs\n");
|
||||
try client.handleTraceLine("file_picker");
|
||||
try client.handleTraceLine("list_filter src/main");
|
||||
try client.handleTraceLine("file_open_selected");
|
||||
try client.handleTraceLine("key end");
|
||||
try client.handleInput("i");
|
||||
try client.handleInput("X");
|
||||
try client.handleTraceLine("key escape");
|
||||
try client.handleTraceLine("save_without_format");
|
||||
try std.testing.expect(std.mem.indexOf(u8, try client.saved(), "X") != null);
|
||||
|
||||
try client.handleTraceLine("search_text needle");
|
||||
{
|
||||
const frame = try client.render(allocator);
|
||||
defer allocator.free(frame);
|
||||
try std.testing.expect(std.mem.indexOf(u8, frame, "src/main.zig") != null);
|
||||
try std.testing.expect(frameLinesFit(frame, 39));
|
||||
}
|
||||
|
||||
try client.handleTraceLine("panel_close");
|
||||
try client.handleTraceLine("diagnostic_fixture zls|2|src/main.zig|0|3|warning|demo");
|
||||
try client.handleInput(" ");
|
||||
try client.handleInput("d");
|
||||
{
|
||||
const frame = try client.render(allocator);
|
||||
defer allocator.free(frame);
|
||||
try std.testing.expect(std.mem.indexOf(u8, frame, "diag:fresh:zls") != null);
|
||||
try std.testing.expect(frameLinesFit(frame, 39));
|
||||
}
|
||||
|
||||
try client.handleTraceLine("panel_close");
|
||||
try client.handleTraceLine("key escape");
|
||||
try client.handleInput(" ");
|
||||
try client.handleInput("t");
|
||||
try client.handleInput("x");
|
||||
{
|
||||
const frame = try client.render(allocator);
|
||||
defer allocator.free(frame);
|
||||
try std.testing.expect(std.mem.indexOf(u8, frame, "job:status:cancelled:user") != null);
|
||||
try std.testing.expect(frameLinesFit(frame, 39));
|
||||
}
|
||||
|
||||
var guarded = try tui.Client.init(allocator, .{ .width = 39, .height = 8 });
|
||||
defer guarded.deinit();
|
||||
try guarded.handleTraceLine("open abc");
|
||||
try guarded.handleTraceLine("language_edit zls|format|1|0|3|ZLS");
|
||||
try guarded.handleTraceLine("language_edit prettier|format|1|0|3|PRETTY");
|
||||
try guarded.handleTraceLine("save");
|
||||
try std.testing.expectError(tui.Error.NothingSaved, guarded.saved());
|
||||
const guarded_frame = try guarded.render(allocator);
|
||||
defer allocator.free(guarded_frame);
|
||||
try std.testing.expect(std.mem.indexOf(u8, guarded_frame, "action:format:provider") != null);
|
||||
}
|
||||
|
||||
fn frameLinesFit(frame: []const u8, width: usize) bool {
|
||||
var lines = std.mem.splitScalar(u8, frame, '\n');
|
||||
while (lines.next()) |line| if (line.len > width) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user