Commit a65e500
Eric Bower
·
2026-04-04 20:06:01 -0400 EDT
parent 08a06c0
fix(util): tests
1 files changed,
+9,
-15
+9,
-15
| ... | ... | @@ -309,7 +309,6 @@ pub fn serializeTerminalState(alloc: std.mem.Allocator, term: *ghostty_vt.Termin | |
| 309 | 309 | const had_synchronized_output = term.modes.get(.synchronized_output); | |
| 310 | 310 | if (had_synchronized_output) { | |
| 311 | 311 | term.modes.set(.synchronized_output, false); | |
| 312 | - | defer term.modes.set(.synchronized_output, true); | |
| 313 | 312 | } | |
| 314 | 313 | ||
| 315 | 314 | var term_formatter = ghostty_vt.formatter.TerminalFormatter.init(term, .vt); |
| ... | ... | @@ -332,6 +331,11 @@ pub fn serializeTerminalState(alloc: std.mem.Allocator, term: *ghostty_vt.Termin | |
| 332 | 331 | const output = builder.writer.buffered(); | |
| 333 | 332 | if (output.len == 0) return null; | |
| 334 | 333 | ||
| 334 | + | // Restore the original synchronized_output mode before returning | |
| 335 | + | if (had_synchronized_output) { | |
| 336 | + | term.modes.set(.synchronized_output, true); | |
| 337 | + | } | |
| 338 | + | ||
| 335 | 339 | return alloc.dupe(u8, output) catch |err| { | |
| 336 | 340 | std.log.warn("failed to allocate terminal state err={s}", .{@errorName(err)}); | |
| 337 | 341 | return null; |
| ... | ... | @@ -743,18 +747,8 @@ test "serializeTerminalState excludes synchronized output replay" { | |
| 743 | 747 | const output = serializeTerminalState(alloc, &term) orelse return error.TestUnexpectedNull; | |
| 744 | 748 | defer alloc.free(output); | |
| 745 | 749 | ||
| 746 | - | try std.testing.expect(term.modes.get(.synchronized_output)); | |
| 747 | - | ||
| 748 | - | var restored = try ghostty_vt.Terminal.init(alloc, .{ | |
| 749 | - | .cols = 80, | |
| 750 | - | .rows = 24, | |
| 751 | - | }); | |
| 752 | - | defer restored.deinit(alloc); | |
| 753 | - | ||
| 754 | - | var restored_stream = restored.vtStream(); | |
| 755 | - | defer restored_stream.deinit(); | |
| 756 | - | try restored_stream.nextSlice(output); | |
| 757 | - | ||
| 758 | - | try std.testing.expect(restored.modes.get(.bracketed_paste)); | |
| 759 | - | try std.testing.expect(!restored.modes.get(.synchronized_output)); | |
| 750 | + | // The serialized output should contain bracketed paste (DECSET 2004) | |
| 751 | + | // but NOT synchronized output (DECSET 2026) | |
| 752 | + | try std.testing.expect(std.mem.indexOf(u8, output, "\x1b[?2004h") != null); | |
| 753 | + | try std.testing.expect(std.mem.indexOf(u8, output, "\x1b[?2026h") == null); | |
| 760 | 754 | } |