226299e1a2
The Everthing module is not part of a library and should therefore not be copied to the nix store. This is particularly bad, if the Everything module is defined in an agda library included directory, e.g. consider an agda-lib with include: . and Everything.agda in the project root (.), in which case the Everything module would become part of the library. If multiple such projects are in the dependency tree, the Everything module becomes ambiguous and the build would fail.
48 lines
1.3 KiB
Nix
48 lines
1.3 KiB
Nix
import ./make-test-python.nix ({ pkgs, ... }:
|
|
|
|
let
|
|
hello-world = pkgs.writeText "hello-world" ''
|
|
open import IO
|
|
|
|
main = run(putStrLn "Hello World!")
|
|
'';
|
|
in
|
|
{
|
|
name = "agda";
|
|
meta = with pkgs.lib.maintainers; {
|
|
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 = ''
|
|
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"
|
|
|
|
# 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")
|
|
|
|
# Hello world
|
|
machine.succeed(
|
|
"cp ${hello-world} HelloWorld.agda"
|
|
)
|
|
machine.succeed("agda -l standard-library -i . -c HelloWorld.agda")
|
|
'';
|
|
}
|
|
)
|