#!/usr/bin/perl use strict; use warnings; use Test::More; # no plan here -- plan later use Test::Cmd; my @cases = ( # label, args, exit, expected, regex [ "plain", "", 0, "Linux", "Linux" ], [ "with node", "-n", 0, "Desktop1", "Desktop" ], ); my $tests_per_case = 3; plan tests => $tests_per_case * @cases; for my $case ( @cases ) { my ($label, $args, $exit, $expected, $regex) = @$case; my $cmd = Test::Cmd->new( prog => "/bin/uname $args" ); is $cmd->run, $exit, '$label\: uname ran okay'; is $cmd->stdout, $expected, "$label\: Test uname $args"; like $cmd->stdout, qr/$regex/, "$label\: Found uname parameter '$regex'"; }