From 031f4f3addd4524c797cf1d2f22fcdb9b1571be7 Mon Sep 17 00:00:00 2001 From: copy Date: Fri, 5 Feb 2016 14:40:46 +0100 Subject: [PATCH] Test cases with bochs BIOS --- bios/bochs-bios.bin | Bin 0 -> 65536 bytes bios/bochs-vgabios.bin | Bin 0 -> 43008 bytes tests/full/run.js | 43 ++++++++++++++++++++++++++++++++++++----- 3 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 bios/bochs-bios.bin create mode 100644 bios/bochs-vgabios.bin diff --git a/bios/bochs-bios.bin b/bios/bochs-bios.bin new file mode 100644 index 0000000000000000000000000000000000000000..8ea144ee46daf1323a894a3d59eaed4e5345587d GIT binary patch literal 65536 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 literal 0 HcmV?d00001 diff --git a/bios/bochs-vgabios.bin b/bios/bochs-vgabios.bin new file mode 100644 index 0000000000000000000000000000000000000000..311168e5620eaeccb8c94e82485964b4ab46b84d GIT binary patch literal 43008 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 Ee-eD?SO5S3 literal 0 HcmV?d00001 diff --git a/tests/full/run.js b/tests/full/run.js index f7ac4957..3325ea45 100755 --- a/tests/full/run.js +++ b/tests/full/run.js @@ -58,6 +58,15 @@ if(cluster.isMaster) "Welcome to FreeDOS", ], }, + { + name: "FreeDOS boot with Bochs BIOS", + fda: root_path + "/images/freedos722.img", + timeout: 10, + alternative_bios: true, + expected_texts: [ + "Welcome to FreeDOS", + ], + }, { name: "Windows 1.01 boot", fda: root_path + "/images/windows101.img", @@ -68,7 +77,7 @@ if(cluster.isMaster) { name: "Sol OS", fda: root_path + "/images/os8.dsk", - timeout: 10, + timeout: 20, expect_graphical_mode: true, expect_mouse_registered: true, actions: [ @@ -81,7 +90,7 @@ if(cluster.isMaster) { name: "Linux", cdrom: root_path + "/images/linux.iso", - timeout: 70, + timeout: 75, expected_texts: [ "/root%", "test passed", @@ -93,6 +102,22 @@ if(cluster.isMaster) }, ], }, + { + name: "Linux with Bochs BIOS", + cdrom: root_path + "/images/linux.iso", + timeout: 75, + expected_texts: [ + "/root%", + "test passed", + ], + alternative_bios: true, + actions: [ + { + on_text: "/root%", + run: "cd tests; ./test-i386 > emu.test; diff emu.test reference.test > /dev/null && echo test pas''sed || echo failed\n", + }, + ], + }, { name: "Linux 3", cdrom: root_path + "/images/linux3.iso", @@ -117,7 +142,7 @@ if(cluster.isMaster) { name: "OpenBSD", fda: root_path + "/images/openbsd.img", - timeout: 120, + timeout: 180, expected_texts: ["(I)nstall, (U)pgrade or (S)hell"], }, ]; @@ -187,8 +212,16 @@ function run_test(test, done) { console.log("Starting test: %s", test.name); - var bios = readfile(root_path + "/bios/seabios.bin"); - var vga_bios = readfile(root_path + "/bios/vgabios.bin"); + if(test.alternative_bios) + { + var bios = readfile(root_path + "/bios/bochs-bios.bin"); + var vga_bios = readfile(root_path + "/bios/bochs-vgabios.bin"); + } + else + { + var bios = readfile(root_path + "/bios/seabios.bin"); + var vga_bios = readfile(root_path + "/bios/vgabios.bin"); + } var settings = { bios: { buffer: bios },