11 my ($urls, $cmdline, $expected_error_code, $expected_downloaded_files) = @_;
13 my $pid = HTTPServer::run (%{$urls});
15 print "Spawned HTTP server with pid: $pid\n";
17 my $returned_error_code = system ($cmdline);
21 print "Killed HTTP server\n";
23 $returned_error_code == $expected_error_code
24 or die "Test failed: wrong code returned (was: $returned_error_code, expected: $expected_error_code)";
26 if (my $str = verify_download (%{$expected_downloaded_files})) {
30 print "Test successful."
35 my (%expected_downloaded_files) = @_;
37 # use slurp mode to read file content
38 my $old_input_record_separator = $/;
41 while (my ($filename, $expected_content) = each %expected_downloaded_files) {
42 open (FILE, $filename) or return "Test failed: file $filename not downloaded";
45 $content eq $expected_content or return "Test failed: wrong content for file $filename";
50 $/ = $old_input_record_separator;