diff options
Diffstat (limited to 'nixos/tests/musescore.nix')
-rw-r--r-- | nixos/tests/musescore.nix | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/nixos/tests/musescore.nix b/nixos/tests/musescore.nix new file mode 100644 index 00000000000..96481a9a8bf --- /dev/null +++ b/nixos/tests/musescore.nix @@ -0,0 +1,86 @@ +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") + ''; +}) |