craftos-pc: add basic tests
This ensures that most obvious breakages will be caught before they are shipped.
This commit is contained in:
parent
4bc5836dc2
commit
9cdeb84cd9
|
@ -1,6 +1,7 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, callPackage
|
||||
, patchelf
|
||||
, unzip
|
||||
, poco
|
||||
|
@ -59,6 +60,11 @@ stdenv.mkDerivation rec {
|
|||
cp -R ${craftos2-rom}/* $out/share/craftos
|
||||
'';
|
||||
|
||||
passthru.tests = {
|
||||
eval-hello-world = callPackage ./test-eval-hello-world { };
|
||||
eval-periphemu = callPackage ./test-eval-periphemu { };
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "An implementation of the CraftOS-PC API written in C++ using SDL";
|
||||
homepage = "https://www.craftos-pc.cc";
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
{ stdenv
|
||||
, craftos-pc
|
||||
, grep
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "craftos-pc-test-eval-hello-world";
|
||||
meta.timeout = 60;
|
||||
nativeBuildInputs = [ craftos-pc grep ];
|
||||
buildCommand = ''
|
||||
export HOME=$(pwd)
|
||||
mkdir $HOME/.local $HOME/.config
|
||||
export XDG_CONFIG_DIR=$HOME/.config
|
||||
export XDG_DATA_DIR=$HOME/.local
|
||||
craftos --headless --script ${./init.lua} | grep "Hello Nixpkgs!" > /dev/null
|
||||
touch $out
|
||||
'';
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
print("Hello Nixpkgs!")
|
||||
|
||||
shell.run("shutdown")
|
|
@ -0,0 +1,19 @@
|
|||
{ stdenv
|
||||
, craftos-pc
|
||||
, grep
|
||||
}:
|
||||
stdenv.mkDerivation {
|
||||
name = "craftos-pc-test-eval-periphemu";
|
||||
meta.timeout = 60;
|
||||
nativeBuildInputs = [ craftos-pc grep ];
|
||||
buildCommand = ''
|
||||
export HOME=$(pwd)
|
||||
mkdir $HOME/.local $HOME/.config
|
||||
export XDG_CONFIG_DIR=$HOME/.config
|
||||
export XDG_DATA_DIR=$HOME/.local
|
||||
if craftos --headless --script ${./init.lua} | grep -q "FAIL"; then
|
||||
exit 1
|
||||
fi
|
||||
touch $out
|
||||
'';
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
local function assert(cond1, cond2)
|
||||
if not cond1 == cond2 then print("FAIL") end
|
||||
end
|
||||
|
||||
local function driveTests()
|
||||
periphemu.create("left", "drive")
|
||||
local p = peripheral.wrap("left")
|
||||
|
||||
assert(p.isDiskPresent(), false)
|
||||
p.insertDisk(649)
|
||||
assert(p.isDiskPresent(), true)
|
||||
assert(p.getDiskID(), 649)
|
||||
assert(p.getDiskLabel(), nil)
|
||||
end
|
||||
|
||||
driveTests()
|
||||
|
||||
shell.run("shutdown")
|
Loading…
Reference in a new issue