| 
									
										
										
										
											2020-04-19 20:01:37 +02:00
										 |  |  | import ./make-test-python.nix ({ pkgs, ... }: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let | 
					
						
							|  |  |  |   hello-world = pkgs.writeText "hello-world" ''
 | 
					
						
							|  |  |  |     open import IO | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     main = run(putStrLn "Hello World!") | 
					
						
							|  |  |  |   '';
 | 
					
						
							|  |  |  | in | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   name = "agda"; | 
					
						
							| 
									
										
										
										
											2021-01-10 20:08:30 +01:00
										 |  |  |   meta = with pkgs.lib.maintainers; { | 
					
						
							| 
									
										
										
										
											2020-04-19 20:01:37 +02: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-01-18 20:01:31 +01: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-04-19 20:01:37 +02: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-09-16 11:59:30 +02:00
										 |  |  |     # Hello world | 
					
						
							| 
									
										
										
										
											2020-04-19 20:01:37 +02:00
										 |  |  |     machine.succeed( | 
					
						
							|  |  |  |         "cp ${hello-world} HelloWorld.agda" | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |     machine.succeed("agda -l standard-library -i . -c HelloWorld.agda") | 
					
						
							| 
									
										
										
										
											2021-01-22 17:25:29 +01:00
										 |  |  |     # Check execution | 
					
						
							|  |  |  |     assert "Hello World!" in machine.succeed( | 
					
						
							|  |  |  |         "./HelloWorld" | 
					
						
							|  |  |  |     ), "HelloWorld does not run properly" | 
					
						
							| 
									
										
										
										
											2020-04-19 20:01:37 +02:00
										 |  |  |   '';
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ) |