From ae93dc18c3275a645211db5ea4d826d024f256bb Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Thu, 25 Apr 2019 20:17:00 +0200 Subject: [PATCH] Fix race condition in test_println_output test --- src/vga_buffer.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/vga_buffer.rs b/src/vga_buffer.rs index 85177df9..1a9dd744 100644 --- a/src/vga_buffer.rs +++ b/src/vga_buffer.rs @@ -196,14 +196,20 @@ fn test_println_many() { #[test_case] fn test_println_output() { + use core::fmt::Write; + use x86_64::instructions::interrupts; + serial_print!("test_println_output... "); let s = "Some test string that fits on a single line"; - println!("{}", s); - for (i, c) in s.chars().enumerate() { - let screen_char = WRITER.lock().buffer.chars[BUFFER_HEIGHT - 2][i].read(); - assert_eq!(char::from(screen_char.ascii_character), c); - } + interrupts::without_interrupts(|| { + let mut writer = WRITER.lock(); + writeln!(writer, "\n{}", s).expect("writeln failed"); + for (i, c) in s.chars().enumerate() { + let screen_char = writer.buffer.chars[BUFFER_HEIGHT - 2][i].read(); + assert_eq!(char::from(screen_char.ascii_character), c); + } + }); serial_println!("[ok]"); }