Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nixosTests.mpd: port to python #73935

Merged
merged 1 commit into from
Nov 22, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 22 additions & 23 deletions nixos/tests/mpd.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import ./make-test.nix ({ pkgs, lib, ... }:
import ./make-test-python.nix ({ pkgs, lib, ... }:
let
track = pkgs.fetchurl {
# Sourced from http://freemusicarchive.org/music/Blue_Wave_Theory/Surf_Music_Month_Challenge/Skyhawk_Beach_fade_in
Expand Down Expand Up @@ -94,40 +94,39 @@ import ./make-test.nix ({ pkgs, lib, ... }:
};

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.
sub play_some_music {
my $server = $_[0];
def play_some_music(server):
server.wait_for_unit("mpd.service")
server.succeed(f"{mpc} update")
_, tracks = server.execute(f"{mpc} ls")

$server->waitForUnit("mpd.service");
$server->succeed("$mpc update");
my @tracks = $server->execute("$mpc ls");
for track in tracks.splitlines():
server.succeed(f"{mpc} add {track}")

for my $track (split(/\n/, $tracks[1])) {
$server->succeed("$mpc add $track");
};
_, added_tracks = server.execute(f"{mpc} listall")

my @added_tracks = $server->execute("$mpc listall");
(length $added_tracks[1]) > 0 or die "Failed to add audio tracks to the playlist.";
# Check we succeeded adding 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");
my @output = split(/\n/, $status[1]);
$output[1] =~ /.*playing.*/ or die "Audio track is not playing, as expected.";
_, output = server.execute(f"{mpc} status")
# Assure audio track is playing
assert "playing" in output

server.succeed(f"{mpc} stop")

$server->succeed("$mpc stop");
};

play_some_music($serverALSA);
play_some_music($serverPulseAudio);
play_some_music(serverALSA)
play_some_music(serverPulseAudio)

$client->waitForUnit("multi-user.target");
$client->succeed("$mpc -h serverALSA status");
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
# to perform the following test:
$client->fail("$mpc -h serverPulseAudio status");
client.fail(f"{mpc} -h serverPulseAudio status")
'';
})