2020-05-15 21:57:56 +00:00
|
|
|
|
import ./make-test-python.nix ({ pkgs, ... }:
|
|
|
|
|
|
|
|
|
|
let
|
|
|
|
|
hello-world = pkgs.writeText "hello-world" ''
|
|
|
|
|
open import IO
|
2021-04-05 15:23:46 +00:00
|
|
|
|
open import Level
|
2020-05-15 21:57:56 +00:00
|
|
|
|
|
2021-04-05 15:23:46 +00:00
|
|
|
|
main = run {0ℓ} (putStrLn "Hello World!")
|
2020-05-15 21:57:56 +00:00
|
|
|
|
'';
|
|
|
|
|
in
|
|
|
|
|
{
|
|
|
|
|
name = "agda";
|
2021-01-15 22:18:51 +00:00
|
|
|
|
meta = with pkgs.lib.maintainers; {
|
2020-05-15 21:57:56 +00:00
|
|
|
|
maintainers = [ alexarice turion ];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
machine = { pkgs, ... }: {
|
|
|
|
|
environment.systemPackages = [
|
|
|
|
|
(pkgs.agda.withPackages {
|
|
|
|
|
pkgs = p: [ p.standard-library ];
|
|
|
|
|
})
|
|
|
|
|
];
|
|
|
|
|
virtualisation.memorySize = 2000; # Agda uses a lot of memory
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
testScript = ''
|
2021-02-05 17:12:51 +00:00
|
|
|
|
assert (
|
|
|
|
|
"${pkgs.agdaPackages.lib.interfaceFile "Everything.agda"}" == "Everything.agdai"
|
|
|
|
|
), "wrong interface file for Everything.agda"
|
|
|
|
|
assert (
|
|
|
|
|
"${pkgs.agdaPackages.lib.interfaceFile "tmp/Everything.agda.md"}" == "tmp/Everything.agdai"
|
|
|
|
|
), "wrong interface file for tmp/Everything.agda.md"
|
|
|
|
|
|
2020-05-15 21:57:56 +00:00
|
|
|
|
# Minimal script that typechecks
|
|
|
|
|
machine.succeed("touch TestEmpty.agda")
|
|
|
|
|
machine.succeed("agda TestEmpty.agda")
|
|
|
|
|
|
|
|
|
|
# Minimal script that actually uses the standard library
|
|
|
|
|
machine.succeed('echo "import IO" > TestIO.agda')
|
|
|
|
|
machine.succeed("agda -l standard-library -i . TestIO.agda")
|
|
|
|
|
|
2020-10-11 12:50:04 +00:00
|
|
|
|
# Hello world
|
2020-05-15 21:57:56 +00:00
|
|
|
|
machine.succeed(
|
|
|
|
|
"cp ${hello-world} HelloWorld.agda"
|
|
|
|
|
)
|
|
|
|
|
machine.succeed("agda -l standard-library -i . -c HelloWorld.agda")
|
2021-02-05 17:12:51 +00:00
|
|
|
|
# Check execution
|
|
|
|
|
assert "Hello World!" in machine.succeed(
|
|
|
|
|
"./HelloWorld"
|
|
|
|
|
), "HelloWorld does not run properly"
|
2020-05-15 21:57:56 +00:00
|
|
|
|
'';
|
|
|
|
|
}
|
|
|
|
|
)
|