1
0
mirror of https://github.com/golang/go synced 2024-11-22 01:34:41 -07:00

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
This commit is contained in:
Brad Fitzpatrick 2011-07-07 17:45:28 -07:00
parent b39afde805
commit 3236097ab0

View File

@ -6,10 +6,9 @@
# Test script run as a child process under cgi_test.go # Test script run as a child process under cgi_test.go
use strict; use strict;
use CGI;
use Cwd; use Cwd;
my $q = CGI->new; my $q = MiniCGI->new;
my $params = $q->Vars; my $params = $q->Vars;
if ($params->{"loc"}) { if ($params->{"loc"}) {
@ -53,3 +52,37 @@ if ($^O eq 'MSWin32' || $^O eq 'msys') {
$dir = getcwd(); $dir = getcwd();
} }
print "cwd=$dir\n"; 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;
}