| ... | ... | @@ -312,16 +312,10 @@ fn bufWrite(self: *Progress, end: *usize, comptime format: []const u8, args: any |
| 312 | 312 | error.NoSpaceLeft => { |
| 313 | 313 | self.columns_written += self.output_buffer.len - end.*; |
| 314 | 314 | end.* = self.output_buffer.len; |
| 315 | const suffix = "... "; |
| 316 | std.mem.copy(u8, self.output_buffer[self.output_buffer.len - suffix.len ..], suffix); |
| 315 | 317 | }, |
| 316 | 318 | } |
| 317 | | const bytes_needed_for_esc_codes_at_end: u8 = if (self.is_windows_terminal) 0 else 11; |
| 318 | | const max_end = self.output_buffer.len - bytes_needed_for_esc_codes_at_end; |
| 319 | | if (end.* > max_end) { |
| 320 | | const suffix = "... "; |
| 321 | | self.columns_written = self.columns_written - (end.* - max_end) + suffix.len; |
| 322 | | std.mem.copy(u8, self.output_buffer[max_end..], suffix); |
| 323 | | end.* = max_end + suffix.len; |
| 324 | | } |
| 325 | 319 | } |
| 326 | 320 | |
| 327 | 321 | test "basic functionality" { |
| ... | ... | @@ -335,6 +329,8 @@ test "basic functionality" { |
| 335 | 329 | const root_node = progress.start("", 100); |
| 336 | 330 | defer root_node.end(); |
| 337 | 331 | |
| 332 | const speed_factor = std.time.ns_per_ms; |
| 333 | |
| 338 | 334 | const sub_task_names = [_][]const u8{ |
| 339 | 335 | "reticulating splines", |
| 340 | 336 | "adjusting shoes", |
| ... | ... | @@ -350,24 +346,24 @@ test "basic functionality" { |
| 350 | 346 | next_sub_task = (next_sub_task + 1) % sub_task_names.len; |
| 351 | 347 | |
| 352 | 348 | node.completeOne(); |
| 353 | | std.time.sleep(5 * std.time.ns_per_ms); |
| 349 | std.time.sleep(5 * speed_factor); |
| 354 | 350 | node.completeOne(); |
| 355 | 351 | node.completeOne(); |
| 356 | | std.time.sleep(5 * std.time.ns_per_ms); |
| 352 | std.time.sleep(5 * speed_factor); |
| 357 | 353 | node.completeOne(); |
| 358 | 354 | node.completeOne(); |
| 359 | | std.time.sleep(5 * std.time.ns_per_ms); |
| 355 | std.time.sleep(5 * speed_factor); |
| 360 | 356 | |
| 361 | 357 | node.end(); |
| 362 | 358 | |
| 363 | | std.time.sleep(5 * std.time.ns_per_ms); |
| 359 | std.time.sleep(5 * speed_factor); |
| 364 | 360 | } |
| 365 | 361 | { |
| 366 | 362 | var node = root_node.start("this is a really long name designed to activate the truncation code. let's find out if it works", 0); |
| 367 | 363 | node.activate(); |
| 368 | | std.time.sleep(10 * std.time.ns_per_ms); |
| 364 | std.time.sleep(10 * speed_factor); |
| 369 | 365 | progress.refresh(); |
| 370 | | std.time.sleep(10 * std.time.ns_per_ms); |
| 366 | std.time.sleep(10 * speed_factor); |
| 371 | 367 | node.end(); |
| 372 | 368 | } |
| 373 | 369 | } |