For Development HEAD DRAFTSearch (procedure/syntax/module):

12.98 www.cgi.test - CGIのテスト

Module: www.cgi.test

CGIスクリプトをテストするための便利な手続きを定義しています。 このテストは、指定された環境変数をセットし、実際にスクリプトを 実行し、出力を取得します。ユーザのテスト手続きは、その出力が 期待したものであるかどうかを検査します。

Function: cgi-test-environment-ref envvar-name
Function: (setter cgi-test-environment-ref) envvar-name value

{www.cgi.test} モジュールにより、CGIスクリプトが実行される際の環境変数の デフォルト値のテーブルが保持されます。プログラマは、これらの 手続きを使ってそのデフォルト値を取得したり設定したりできます。

CGIスクリプトの呼び出し毎に、これらのデフォルト値を上書きしたり、 追加の環境変数を渡したりできます。

デフォルトでは、下記の環境変数が設定されています。

NameValue
SERVER_SOFTWAREcgitest/1.0
SERVER_NAMElocalhost
GATEWAY_INTERFACECGI/1.1
SERVER_PROTOCOLHTTP/1.1
SERVER_PORT80
REQUEST_METHODGET
REMOTE_HOSTremote
REMOTE_ADDR127.0.0.1
Function: call-with-cgi-script script proc :key (environment ()) (parameters #f)

{www.cgi.test} 与えられた環境でスクリプトを実行し、そのスクリプトの標準出力のパイプに 接続された入力ポートを1つ引数に取る proc を呼び出します。

引数 script は、プログラムの名前とその引数のリストでなければ なりません。リストの要素はそれぞれ、文字列化されるためにまず x->stringに渡されます。

スクリプトは、変数 environment で与えられる環境と、上述した デフォルトのテスト環境の下で実行されます。 environmentは、キー(car)がその環境変数の名前、 cdrが対応する値であるような連想リストでなければなりません。 両方ともまず x->string に渡されます。 environment とデフォルトのテスト環境に同じ環境変数がある場合は、 environment にあるものが使われます。

さらに、引数 parameters に連想リストが渡された場合、そこから クエリストリングが作られスクリプトに渡されます。 クエリストリングを渡す実際のメソッドは、環境変数 REQUEST_METHODの 値に依存します。REQUEST_METHODGETHEAD で ある場合は、クエリストリングは環境変数 QUERY_STRING に置かれます。 REQUEST_METHODPOST の場合は、クエリストリングは スクリプトの標準入力から取得されます。後者の場合、CONTENT_TYPE には application/x-www-form-urlencodedが、 CONTENT_LENGTH には QUERY_STRINGの長さが、それぞれ自動的に セットされます。REQUEST_METHOD がその他の値の場合は、 parameters は無視されます。 必要であれば、このメカニズムをバイパスして、環境変数 QUERY_STRING を 直接セットアップすることも可能です。

Function: run-cgi-script->header&body script reader :key environment parameters

{www.cgi.test} call-with-cgi-script の便利なラッパー手続きです。 scriptenvironmentparametersは、 そのまま call-with-cgi-scriptに渡されます。 スクリプトの出力は、run-cgi-script->header&bodyにより パーズされます。 最初に、RFC2822ヘッダフィールドが rfc822-read-headers (rfc.822 - RFC822メッセージ形式参照)によりパーズされます。 次に、readerが、スクリプトの出力にパイプされた入力ポートと ともに呼ばれます。

run-cgi-script->header&bodyは、ヘッダのリスト (rfc822-read-headersによりパーズされたもの)と readerの戻り値の2つの値を返します。

Function: run-cgi-script->sxml script :key environment parameters

{www.cgi.test} この手続きでは、run-cgi-script->header&bodyreaderとして、ssax:xml->sxml (sxml.ssax - 関数的なXMLパーザ参照)を使います。 整形式(Well-formed)のHTMLやXMLドキュメントを生成する CGIスクリプトをテストする場合に便利です。

Function: run-cgi-script->string script :key environment parameters
Function: run-cgi-script->string-list script :key environment parameters

{www.cgi.test} これらの手続きは、run-cgi-script->header&bodyreaderとして、それぞれ port->stringport->string-listを使います。

例:

(run-cgi-script->string-list "bbs.cgi"
                             :environment '((REMOTE_ADDR . "12.34.56.78"))
                             :parameters '((command . "view")
                                           (page . 1234)))


For Development HEAD DRAFTSearch (procedure/syntax/module):
DRAFT