1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use WgetFeature qw(iri);
7use HTTPTest;
8
9# " Kon'nichiwa <dot> Japan
10my $euc_jp_hostname = "\272\243\306\374\244\317.\306\374\313\334";
11my $punycoded_hostname = 'xn--v9ju72g90p.xn--wgv71a';
12
13###############################################################################
14
15my $starter_file = <<EOF;
16<a href="http://$euc_jp_hostname/foo.txt">The link</a>
17EOF
18
19my $result_file = <<EOF;
20Found me!
21EOF
22
23# code, msg, headers, content
24my %urls = (
25    "http://$punycoded_hostname/index.html" => {
26        code => "200",
27        msg => "Yes, please",
28        headers => {
29            'Content-Type' => 'text/html; charset=EUC-JP',
30        },
31        content => $starter_file,
32    },
33    "http://$punycoded_hostname/foo.txt" => {
34        code => "200",
35        msg => "Uh-huh",
36        headers => {
37            'Content-Type' => 'text/plain',
38        },
39        content => $result_file,
40    },
41    "http://$punycoded_hostname/robots.txt" => {
42        code => "200",
43        msg => "Uh-huh",
44        headers => {
45            'Content-Type' => 'text/plain',
46        },
47        content => '',
48    },
49);
50
51my $cmdline = $WgetTest::WGETPATH . " --debug --iri -rH"
52    . " -e http_proxy=localhost:{{port}} --local-encoding=EUC-JP"
53    . " http://$euc_jp_hostname/";
54
55my $expected_error_code = 0;
56
57my %expected_downloaded_files = (
58    "$punycoded_hostname/index.html" => {
59        content => $starter_file,
60    },
61    "$punycoded_hostname/foo.txt" => {
62        content => $result_file,
63    },
64    "$punycoded_hostname/robots.txt" => {
65        content => '',
66    },
67);
68
69###############################################################################
70
71my $the_test = HTTPTest->new (name => "Test-idn-robots",
72                              input => \%urls,
73                              cmdline => $cmdline,
74                              errcode => $expected_error_code,
75                              output => \%expected_downloaded_files);
76exit $the_test->run();
77
78# vim: et ts=4 sw=4
79
80