The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

my $server;

if (not open CONFIG, 'testcfg') {
	print "1..0\nConfiguration failed, probably, no remote testing.\n";
	exit;
}

while (<CONFIG>) {
	if (/^remote_server\s*:\s*(\S+)/) {
		$server = $1;
		last;
	}
}
close CONFIG;

if (not defined $server or $server eq '') {
	print "1..0\nNo remote testing configured, fine.\n";
	exit;
}

my ($remote_server, $remote_port) = ($server =~ /^(.+):(\d+)$/);
if (not defined $remote_server ne '') {
	print "1..0\nBroken configuration (remote_server $server).\n";
	exit;
}

print "1..3\n";

print "Will try to contact the remote docserver at $remote_server:$remote_port.\n";
my $version = `$^X -Ilib bin/docclient.pl --server_version --server=$remote_server --port=$remote_port`;
if (defined $version and $version =~ /^This is/) {
	print "Got: $version\nok 1\n";
} else {
	print "No, didn't get any reasonable response, no point in continuing.\nnot ok 1\n";
	exit;
}

my ($command, $got, $expected);

unlink 't/testremote.txt';
$command = "$^X -Ilib bin/docclient.pl --raw --out_format=txt --server=$remote_server --port=$remote_port t/test.doc > t/testremote.txt";
print "Will run command\n$command\nto test conversion to plain text on remote docserver.\n";

system $command;

if (-f 't/testremote.txt' and -s 't/testremote.txt') {
	print "The conversion seems to have run fine.\n";
	print "ok 2\n";

	if (open GOT, 't/testremote.txt') {
		$got = join '', <GOT>;
		close GOT;
		$got =~ s/^\s*|\s*$//g;
		$got =~ s/\s+/ /g;
	}
	if (open EXPECTED, 't/testdoc.exp') {
		$expected = join '', <EXPECTED>;
		close EXPECTED;
		$expected =~ s/^\s*|\s*$//g;
		$expected =~ s/\s+/ /g;
	}

	if ($got ne $expected) {
		print "But expected\n$expected\nand got\n$got\nnot ok 3\n";
	} else {
		print "And the result is fine.\nok 3\n";
	}
} else {
	print "Conversion failed, for one reason or another.\nnot ok 2\nnot ok 3\n";
}