Wiki
Download
Manual
Eggs
API
Tests
Bugs
show
edit
history
You can edit this page using
wiki syntax
for markup.
Article contents:
== Outdated egg! This is an egg for CHICKEN 3, the unsupported old release. You're almost certainly looking for [[/eggref/4/testbase-results|the CHICKEN 4 version of this egg]], if it exists. If it does not exist, there may be equivalent functionality provided by another egg; have a look at the [[https://wiki.call-cc.org/chicken-projects/egg-index-4.html|egg index]]. Otherwise, please consider porting this egg to the current version of CHICKEN. [[tags: eggs testing testbase]] [[toc:]] == Introduction TestBase test results database access procedures. == Test Results Object Procedures === Usage (require-extension testbase-results) === Parameters ==== default-test-file-extension <parameter>(default-test-file-extension [EXTENSION])</parameter> Get or set the test file source filename extension. {{EXTENSION}} is a string. ==== test-files-directory <parameter>(test-files-directory [DIRECTORY])</parameter> Get or set the test file source repository directory. {{DIRECTORY}} is an absolute directory pathname string. ==== test-results-directory <parameter>(test-results-directory [DIRECTORY])</parameter> Get or set the test file results repository directory. {{DIRECTORY}} is an absolute directory pathname string. === Reader Extensions ==== load-test-results-reader-extension <procedure>(load-test-results-reader-extension EXTENSIONS)</procedure> ==== test-results-reader-setup <procedure>(test-results-reader-setup EXPRESSIONS)</procedure> === Pathname Constructors ==== make-test-file-pathname <procedure>(make-test-file-pathname FILENAME)</procedure> Returns an absolute pathname of a test file for {{FILENAME}}. ==== make-test-results-pathname <procedure>(make-test-results-pathname FILENAME)</procedure> Returns an absolute pathname of a results file for {{FILENAME}}. === Test Results File Procedures ==== create-test-results-file <procedure>(create-test-results-file FILENAME)</procedure> Creates a test results file {{FILENAME}}. If necessary an absolute pathname will be constructed using the current parameters. ==== delete-test-results-file <procedure>(delete-test-results-file FILENAME)</procedure> Deletes the test results file {{FILENAME}}. If necessary an absolute pathname will be constructed using the current parameters. ==== read-test-results-file <procedure>(read-test-results-file FILENAME [FOLD-PROCEDURE [INITIAL-VALUE]])</procedure> Reads the contents of the test results file {{FILENAME}} and returns the last result of calling the {{FOLD-PROCEDURE}}. If necessary an absolute pathname will be constructed using the current parameters. {{FOLD-PROCEDURE}} is a two argument procedure where the first argument is the current row and the second argument is the result of the previous call. The initial second argument is the empty list, {{'()}}. Default {{FOLD-PROCEDURE}} is {{cons}}. Default {{INITIAL-VALUE}} is {{'()}}. ==== append-test-results-row <procedure>(append-test-results-row FILENAME ROW [HEADER '()])</procedure> Write the test results file entry {{ROW}} to the test results file {{FILENAME}}, with the optional {{HEADER}}. If necessary an absolute pathname will be constructed using the current parameters. The {{HEADER}} is a list of key+value pairs where the key is a symbol. The only recognized header entries are {{extension}} and {{setup}}. === Test Results Port Procedures ==== read-test-results-rows <procedure>(read-test-results-rows PORT [FOLD-PROCEDURE [INITIAL-VALUE]])</procedure> Reads the contents of the test results file from the open input {{PORT}} and calls the {{FOLD-PROCEDURE}} on each row and the accumulated result. {{FOLD-PROCEDURE}} is a two argument procedure where the first argument is the current row and the second argument is the result of the previous call. The initial second argument is the empty list, {{'()}}. Default {{FOLD-PROCEDURE}} is {{cons}}. Default {{INITIAL-VALUE}} is {{'()}}. == Test Results File Entry Procedures ==== make-test-results-row <procedure>(make-test-results-row RESULTS [FIELD ...])</procedure> Returns a test results file entry for the test results {{RESULTS}} and the optional {{FIELD ...}}. A {{FIELD}} is a {{pair}} of {{(KEY . VALUE)}}. ==== test-results-row-field <procedure>(test-results-row-field ROW KEY)</procedure> Returns the test results file entry {{ROW}} field of the given name {{KEY}}. ==== test-results-row-when <procedure>(test-results-row-when ROW)</procedure> Returns the test results file entry {{ROW}} {{when}} field, a vector as returned by {{seconds->local-time}}. ==== test-results-row-results <procedure>(test-results-row-results ROW)</procedure> Returns the test results file entry {{ROW}} {{results}} field, a list. == Test Results Procedures ==== test-results-failures <procedure>(test-results-failures RESULTS [TYPE-LIST '(expectation error)])</procedure> Returns a list of the test failures in the {{RESULTS}} list for the given test types {{TYPE-LIST}}. See {{Test Result Fields}} in the {{Test Result Object}} section. ==== test-results-remove! <procedure>(test-results-remove! RESULTS IDENTIFIER-LIST)</procedure> Returns the {{RESULTS}} list with all tests from the {{IDENTIFIER-LIST}} removed. == Test Result Object === Test Result Fields ==== Test Types - type field ; begin : Begin a test container ; end : End a test container ; expectation : Single test ; error : Test terminated ; annotation : Messages from the test ==== Test Kinds - possible kind field for type ; begin, end : test-procedure, test-suite, test-case ; annotation : gloss, todo, skip ; error : message ; expectation : The kind suffix for a expectation. Example - 'expect-foo' is 'foo' ==== Other Fields Object refers to any Scheme object. Atomic means boolean, number, string, symbol. ; id : Test unique Id. A symbol. ; name : Given test name. Atomic, but usually a string. Optional. ; warning : Test warning notice. Object, but usually a string. Optional. ; message : Test notice. Object, but usually a string. Optional. ; finding : Test result. Object, but usually a boolean. ; unevaluated : Expectation form to test. Object. Optional. ; expected : Expectation test expected result. Object. Optional. ; actual : Expectation evaluated form result. Object. Optional. ; tolerance : Fuzzy expectation allowable difference. Object, but usually number. Optional. ; container : Kind of test container. A symbol. ; location : A test identifier (name or id). Atomic, but usually a string or symbol. === Test Result Procedures ==== make-test-abnormal-exit-result <procedure>(make-test-abnormal-exit-result EXIT-CODE ERROR-STRING)</procedure> Returns a test result object that indicates a test process failed. Really only for use by a test runner. ==== test-result-field <procedure>(test-result-field RESULT KEY)</procedure> Returns the test result {{RESULT}} field of the given name {{KEY}}. ==== test-result-fields <procedure>(test-result-fields RESULT [KEY ...])</procedure> Returns the test result {{RESULT}} fields of the given name {{KEY}} as a list. ==== test-result-finding <procedure>(test-result-finding RESULT)</procedure> Returns the test result {{RESULT}} finding field, which could be any object but usually a boolean. Since any object is possible use the {{test-result-passed?}} procedure to determine whether the test passed. ==== test-result-identifier <procedure>(test-result-identifier RESULT)</procedure> Returns the test result {{RESULT}} name, message, or id field, which could be any object but usually a string or symbol. The id field is returned when the name is missing. ==== test-result-passed? <procedure>(test-result-passed? RESULT)</procedure> Does the test result {{RESULT}} finding field indicate this test passed? ==== test-result-type <procedure>(test-result-type RESULT)</procedure> Returns the test result {{RESULT}} type field, a symbol. == Test Results Report Procedures === Usage (require-extension testbase-reports) ==== test-results-row-match? <procedure>(test-results-row-match? ROW [KEY OPER VAL] ...)</procedure> Returns {{#t}} when all match expressions {{KEY OPER VAL}} are true, and {{#f}} otherwise. Operates as if there is an implicit {{AND}} between each match expression. {{KEY}} is a {{symbol}}. A test-results-row field name. {{OPER}} is one of {{= < > <= >= <>}}. {{VAL}} is some object of the proper type for the test-results-row field. ==== declare-test-results-row-field <procedure>(declare-test-results-row-field [KEY PRED COMP] ...)</procedure> Sets the type predicate {{PRED}} & comparison function {{COMP}} for the test-results-row field named {{KEY}}. {{KEY}} is a {{symbol}}. {{PRED}} is single-argument function returning {{#t}} when {{OBJECT}} is of the correct type, and {{#f}} otherwise. {{COMP}} is a two-argument function returning a {{negative fixnum}} for {{A < B}}, {{zero fixnum}} for {{A = B}}, and {{positive fixnum}} for {{A > B}}. ; {{when}} : ten-element time-vector, using {{#f}} for missing element. ; {{model}} : symbol, {{compile}} or {{interpret}}. ; {{mode}} : symbol, {{all}} or {{errors}}. ; {{feature}} : list of symbol, a module-identifier. ; {{purpose}} : list. ''Cannot be matched.'' ; {{results}} : list. ''Cannot be matched.'' The {{time-vector}} comparison checks the three-element time & three-element date components. Either must be complete (no {{#f}} elements) for a valid comparison. Comparisons are case-sensitive. ==== print-test-result <procedure>(print-test-result RESULT)</procedure> Print the test result {{RESULT}} to the current output port. ==== print-test-results <procedure>(print-test-results RESULTS)</procedure> Print the test results list {{RESULTS}} to the current output port. ==== print-test-results-row <procedure>(print-test-results-row ROW [KEY OPER VAL] ...)</procedure> Print the test results file entry {{ROW}} to the current output port. ==== print-test-results-rows <procedure>(print-test-results-rows ROWS [KEY OPER VAL] ...)</procedure> Print the test results file entry list {{ROWS}} to the current output port. ==== print-test-results-file <procedure>(print-test-results-file FILENAME [KEY OPER VAL] ...)</procedure> Print the test results file {{FILENAME}} to the current output port. If necessary an absolute pathname will be constructed using the current parameters. == Requirements [[http://www.call-with-current-continuation.org/eggs/numbers.html|numbers]] [[http://www.call-with-current-continuation.org/eggs/misc-extn.html|misc-extn]] [[http://www.call-with-current-continuation.org/eggs/miscmacros.html|miscmacros]] [[http://www.call-with-current-continuation.org/eggs/testbase.html|testbase]] == Authors [[Kon Lovett]] == License Copyright (c) 2007, 2008 Kon Lovett. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the Software), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ASIS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. == Version History ; 2.1.0 : Removed 'knd' parameter from 'make-test-results-row'. Removed 'test-results-row-model' Added 'declare-test-results-row-field' & 'test-results-row-match?'. ; 2.0.0 : Removed 'fold-test-results-rows' & added optional folding paramters to 'read-test-results-rows' & 'read-test-results-file'. ; 1.1 : Split out print procedures into own file ; 1.0 : Initial release == Bugs
Description of your changes:
I would like to authenticate
Authentication
Username:
Password:
Spam control
What do you get when you add 8 to 19?