nixosTests.mpd: port to python

This commit is contained in:
Florian Klink 2019-11-22 21:21:05 +01:00
parent c81e4f10c2
commit 5121706951

View file

@ -1,4 +1,4 @@
import ./make-test.nix ({ pkgs, lib, ... }: import ./make-test-python.nix ({ pkgs, lib, ... }:
let let
track = pkgs.fetchurl { track = pkgs.fetchurl {
# Sourced from http://freemusicarchive.org/music/Blue_Wave_Theory/Surf_Music_Month_Challenge/Skyhawk_Beach_fade_in # Sourced from http://freemusicarchive.org/music/Blue_Wave_Theory/Surf_Music_Month_Challenge/Skyhawk_Beach_fade_in
@ -94,40 +94,39 @@ import ./make-test.nix ({ pkgs, lib, ... }:
}; };
testScript = '' testScript = ''
my $mpc = "${pkgs.mpc_cli}/bin/mpc --wait"; mpc = "${pkgs.mpc_cli}/bin/mpc --wait"
# Connects to the given server and attempts to play a tune. # Connects to the given server and attempts to play a tune.
sub play_some_music { def play_some_music(server):
my $server = $_[0]; server.wait_for_unit("mpd.service")
server.succeed(f"{mpc} update")
_, tracks = server.execute(f"{mpc} ls")
$server->waitForUnit("mpd.service"); for track in tracks.splitlines():
$server->succeed("$mpc update"); server.succeed(f"{mpc} add {track}")
my @tracks = $server->execute("$mpc ls");
for my $track (split(/\n/, $tracks[1])) { _, added_tracks = server.execute(f"{mpc} listall")
$server->succeed("$mpc add $track");
};
my @added_tracks = $server->execute("$mpc listall"); # Check we succeeded adding audio tracks to the playlist
(length $added_tracks[1]) > 0 or die "Failed to add audio tracks to the playlist."; assert len(added_tracks.splitlines()) > 0
$server->succeed("$mpc play"); server.succeed(f"{mpc} play")
my @status = $server->execute("$mpc status"); _, output = server.execute(f"{mpc} status")
my @output = split(/\n/, $status[1]); # Assure audio track is playing
$output[1] =~ /.*playing.*/ or die "Audio track is not playing, as expected."; assert "playing" in output
$server->succeed("$mpc stop"); server.succeed(f"{mpc} stop")
};
play_some_music($serverALSA);
play_some_music($serverPulseAudio);
$client->waitForUnit("multi-user.target"); play_some_music(serverALSA)
$client->succeed("$mpc -h serverALSA status"); play_some_music(serverPulseAudio)
client.wait_for_unit("multi-user.target")
client.succeed(f"{mpc} -h serverALSA status")
# The PulseAudio-based server is configured not to accept external client connections # The PulseAudio-based server is configured not to accept external client connections
# to perform the following test: # to perform the following test:
$client->fail("$mpc -h serverPulseAudio status"); client.fail(f"{mpc} -h serverPulseAudio status")
''; '';
}) })