87 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| import ./make-test-python.nix ({ pkgs, ...} :
 | |
| 
 | |
| let
 | |
|   # Make sure we don't have to go through the startup tutorial
 | |
|   customMuseScoreConfig = pkgs.writeText "MuseScore3.ini" ''
 | |
|     [application]
 | |
|     startup\firstStart=false
 | |
| 
 | |
|     [ui]
 | |
|     application\startup\showTours=false
 | |
|     application\startup\showStartCenter=false
 | |
|     '';
 | |
| in
 | |
| {
 | |
|   name = "musescore";
 | |
|   meta = with pkgs.lib.maintainers; {
 | |
|     maintainers = [ turion ];
 | |
|   };
 | |
| 
 | |
|   machine = { ... }:
 | |
| 
 | |
|   {
 | |
|     imports = [
 | |
|       ./common/x11.nix
 | |
|     ];
 | |
| 
 | |
|     services.xserver.enable = true;
 | |
|     environment.systemPackages = with pkgs; [
 | |
|       musescore
 | |
|       pdfgrep
 | |
|     ];
 | |
|   };
 | |
| 
 | |
|   enableOCR = true;
 | |
| 
 | |
|   testScript = { ... }: ''
 | |
|     start_all()
 | |
|     machine.wait_for_x()
 | |
| 
 | |
|     # Inject custom settings
 | |
|     machine.succeed("mkdir -p /root/.config/MuseScore/")
 | |
|     machine.succeed(
 | |
|         "cp ${customMuseScoreConfig} /root/.config/MuseScore/MuseScore3.ini"
 | |
|     )
 | |
| 
 | |
|     # Start MuseScore window
 | |
|     machine.execute("DISPLAY=:0.0 mscore &")
 | |
| 
 | |
|     # Wait until MuseScore has launched
 | |
|     machine.wait_for_window("MuseScore")
 | |
| 
 | |
|     # Wait until the window has completely initialised
 | |
|     machine.wait_for_text("MuseScore")
 | |
| 
 | |
|     # Start entering notes
 | |
|     machine.send_key("n")
 | |
|     # Type the beginning of https://de.wikipedia.org/wiki/Alle_meine_Entchen
 | |
|     machine.send_chars("cdef6gg5aaaa7g")
 | |
|     # Make sure the VM catches up with all the keys
 | |
|     machine.sleep(1)
 | |
| 
 | |
|     machine.screenshot("MuseScore0")
 | |
| 
 | |
|     # Go to the export dialogue and create a PDF
 | |
|     machine.send_key("alt-f")
 | |
|     machine.sleep(1)
 | |
|     machine.send_key("e")
 | |
| 
 | |
|     # Wait until the export dialogue appears.
 | |
|     machine.wait_for_window("Export")
 | |
|     machine.screenshot("MuseScore1")
 | |
|     machine.send_key("ret")
 | |
|     machine.sleep(1)
 | |
|     machine.send_key("ret")
 | |
| 
 | |
|     machine.screenshot("MuseScore2")
 | |
| 
 | |
|     # Wait until PDF is exported
 | |
|     machine.wait_for_file("/root/Documents/MuseScore3/Scores/Untitled.pdf")
 | |
| 
 | |
|     # Check that it contains the title of the score
 | |
|     machine.succeed("pdfgrep Title /root/Documents/MuseScore3/Scores/Untitled.pdf")
 | |
| 
 | |
|     machine.screenshot("MuseScore3")
 | |
|   '';
 | |
| })
 | 
