aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@golang.org>2011-07-07 17:45:28 -0700
committerBrad Fitzpatrick <bradfitz@golang.org>2011-07-07 17:45:28 -0700
commit3236097ab02943068c7d29c5fd43e97962363b7d (patch)
treef19559e9b8e6ed756174d873b01fec034bcf3a91
parentb39afde805f632bfbe5c4be7a68d01db03de2ce8 (diff)
downloadgo-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-xsrc/pkg/http/cgi/testdata/test.cgi37
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;
+}