diff --git a/test/check-gradient.sikuli/check-gradient.py b/test/check-gradient.sikuli/check-gradient.py index 846f531..dca7f63 100644 --- a/test/check-gradient.sikuli/check-gradient.py +++ b/test/check-gradient.sikuli/check-gradient.py @@ -1 +1 @@ -wait("1529963334209.png") +wait("1529963334209.png", 10) diff --git a/test/virtualbox.sh b/test/virtualbox.sh index c4d808f..f7d87f7 100755 --- a/test/virtualbox.sh +++ b/test/virtualbox.sh @@ -1,4 +1,27 @@ #!/bin/sh set -e -VBoxManage --help \ No newline at end of file +os_file="example-os/os.sh" +img_file="$(tempfile --suffix=".img")" +vbox_dir="vbox_$(date +%s)-$$" +vmname="automatic-os-test-$(date +%s)-$$" + +ln -sf "$(readlink -f "$os_file")" "$img_file" +VBoxManage createvm --name "$vmname" --register --basefolder "/tmp/$vbox_dir" +VBoxManage storagectl "$vmname" --name 'floppy disk drive' --add floppy --bootable on +VBoxManage storageattach "$vmname" --storagectl 'floppy disk drive' --port 0 --device 0 --type fdd --medium "$img_file" +VBoxManage modifyvm "$vmname" --boot1 floppy +VBoxManage startvm "$vmname" --type gui & +pid=$! +runsikulix -r test/check-gradient.sikuli +VBoxManage controlvm "$vmname" poweroff +wait $pid +# TODO: should ensure that the cleanup phase is always done even if the test fails. +for i in `seq 10`; do + if VBoxManage unregistervm "$vmname" --delete; then + break + fi + sleep 0.1 +done +rm "$img_file" +rm "/tmp/$vbox_dir" -fr