diff options
author | Brad Fitzpatrick <bradfitz@golang.org> | 2011-07-07 17:45:28 -0700 |
---|---|---|
committer | Brad Fitzpatrick <bradfitz@golang.org> | 2011-07-07 17:45:28 -0700 |
commit | 3236097ab02943068c7d29c5fd43e97962363b7d (patch) | |
tree | f19559e9b8e6ed756174d873b01fec034bcf3a91 | |
parent | b39afde805f632bfbe5c4be7a68d01db03de2ce8 (diff) | |
download | go-3236097ab02943068c7d29c5fd43e97962363b7d.tar.gz go-3236097ab02943068c7d29c5fd43e97962363b7d.zip |
cgi: don't depend on CGI.pm for tests
CGI.pm used to be part of the Perl core,
but some distros now bundle perl-core
and perl-modules separately.
It's not worth depending on.
R=golang-dev, mattn.jp
CC=golang-dev
https://golang.org/cl/4675063
-rwxr-xr-x | src/pkg/http/cgi/testdata/test.cgi | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/src/pkg/http/cgi/testdata/test.cgi b/src/pkg/http/cgi/testdata/test.cgi index 4779890703..36c107f76b 100755 --- a/src/pkg/http/cgi/testdata/test.cgi +++ b/src/pkg/http/cgi/testdata/test.cgi @@ -6,10 +6,9 @@ # Test script run as a child process under cgi_test.go use strict; -use CGI; use Cwd; -my $q = CGI->new; +my $q = MiniCGI->new; my $params = $q->Vars; if ($params->{"loc"}) { @@ -53,3 +52,37 @@ if ($^O eq 'MSWin32' || $^O eq 'msys') { $dir = getcwd(); } print "cwd=$dir\n"; + + +# A minimal version of CGI.pm, for people without the perl-modules +# package installed. (CGI.pm used to be part of the Perl core, but +# some distros now bundle perl-base and perl-modules separately...) +package MiniCGI; + +sub new { + my $class = shift; + return bless {}, $class; +} + +sub Vars { + my $self = shift; + my $pairs; + if ($ENV{CONTENT_LENGTH}) { + $pairs = do { local $/; <STDIN> }; + } else { + $pairs = $ENV{QUERY_STRING}; + } + my $vars = {}; + foreach my $kv (split(/&/, $pairs)) { + my ($k, $v) = split(/=/, $kv, 2); + $vars->{_urldecode($k)} = _urldecode($v); + } + return $vars; +} + +sub _urldecode { + my $v = shift; + $v =~ tr/+/ /; + $v =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; + return $v; +} |