Add basic NixOS tests for TiMidity++
This commit is contained in:
parent
7d96814b29
commit
7518588df6
@ -1041,6 +1041,7 @@ in {
|
|||||||
tika = runTest ./tika.nix;
|
tika = runTest ./tika.nix;
|
||||||
timescaledb = handleTest ./timescaledb.nix {};
|
timescaledb = handleTest ./timescaledb.nix {};
|
||||||
timezone = handleTest ./timezone.nix {};
|
timezone = handleTest ./timezone.nix {};
|
||||||
|
timidity = handleTest ./timidity {};
|
||||||
tinc = handleTest ./tinc {};
|
tinc = handleTest ./tinc {};
|
||||||
tinydns = handleTest ./tinydns.nix {};
|
tinydns = handleTest ./tinydns.nix {};
|
||||||
tinyproxy = handleTest ./tinyproxy.nix {};
|
tinyproxy = handleTest ./tinyproxy.nix {};
|
||||||
|
20
nixos/tests/timidity/basic.nix
Normal file
20
nixos/tests/timidity/basic.nix
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import ../make-test-python.nix (
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
|
||||||
|
name = "timidity";
|
||||||
|
|
||||||
|
nodes.machine =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
environment.systemPackages = [ pkgs.timidity ];
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
start_all ()
|
||||||
|
|
||||||
|
## TiMidity++ is around.
|
||||||
|
machine.succeed("command -v timidity")
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
)
|
4
nixos/tests/timidity/default.nix
Normal file
4
nixos/tests/timidity/default.nix
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
inputs: {
|
||||||
|
basic = import ./basic.nix inputs;
|
||||||
|
with-vorbis = import ./with-vorbis.nix inputs;
|
||||||
|
}
|
BIN
nixos/tests/timidity/tam-lin.midi
Normal file
BIN
nixos/tests/timidity/tam-lin.midi
Normal file
Binary file not shown.
40
nixos/tests/timidity/with-vorbis.nix
Normal file
40
nixos/tests/timidity/with-vorbis.nix
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
import ../make-test-python.nix (
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
|
||||||
|
name = "timidity-with-vorbis";
|
||||||
|
|
||||||
|
nodes.machine =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
(timidity.override { enableVorbis = true; })
|
||||||
|
ffmpeg # # for `ffprobe`
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
import json
|
||||||
|
|
||||||
|
start_all()
|
||||||
|
|
||||||
|
## TiMidity++ is around and it claims to support Ogg Vorbis.
|
||||||
|
machine.succeed("command -v timidity")
|
||||||
|
machine.succeed("timidity --help | grep 'Ogg Vorbis'")
|
||||||
|
|
||||||
|
## TiMidity++ manages to process a MIDI input and produces an Ogg Vorbis
|
||||||
|
## output file. NOTE: the `timidity` CLI succeeds even when the input file
|
||||||
|
## does not exist; hence our test for the output file's existence.
|
||||||
|
machine.succeed("cp ${./tam-lin.midi} tam-lin.midi")
|
||||||
|
machine.succeed("timidity -Ov tam-lin.midi && test -e tam-lin.ogg")
|
||||||
|
|
||||||
|
## The output file has the expected characteristics.
|
||||||
|
metadata_as_text = machine.succeed("ffprobe -show_format -print_format json -i tam-lin.ogg")
|
||||||
|
metadata = json.loads(metadata_as_text)
|
||||||
|
assert metadata['format']['format_name'] == 'ogg', \
|
||||||
|
f"expected 'format_name' to be 'ogg', got '{metadata['format']['format_name']}'"
|
||||||
|
assert 37 <= float(metadata['format']['duration']) <= 38, \
|
||||||
|
f"expected 'duration' to be between 37s and 38s, got {metadata['format']['duration']}s"
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user