Difference between revisions of "Test"
Line 1: | Line 1: | ||
Odamex has a lot of working features. The doom engine is sensitive to change, so to preserve functionality we have a set of tests to run on every submission. They are located in the tests directory. | Odamex has a lot of working features. The doom engine is sensitive to change, so to preserve functionality we have a set of tests to run on every submission. They are located in the tests directory. | ||
+ | |||
+ | ==Running tests== | ||
+ | You will need to have TCL installed (see tcl.tk) | ||
+ | |||
+ | ===Under Windows=== | ||
+ | Open a command window (Start, Run: cmd). Navigate to your working directory (the one which contains client, server and common folders). Run one of the tests: | ||
+ | <pre> | ||
+ | cd trunk | ||
+ | tests\commands\cmdSay.tcl | ||
+ | </pre> | ||
+ | |||
+ | ===Under unix and OSX=== | ||
+ | You can run all tests with ''make test'', or a specific test by navigating to the working directory and invoking one of the tcl test scripts from there: | ||
+ | <pre> | ||
+ | cd trunk | ||
+ | tests/commands/cmdSay.tcl | ||
+ | </pre> | ||
==Writing tests== | ==Writing tests== |
Revision as of 18:30, 5 May 2008
Odamex has a lot of working features. The doom engine is sensitive to change, so to preserve functionality we have a set of tests to run on every submission. They are located in the tests directory.
Contents
Running tests
You will need to have TCL installed (see tcl.tk)
Under Windows
Open a command window (Start, Run: cmd). Navigate to your working directory (the one which contains client, server and common folders). Run one of the tests:
cd trunk tests\commands\cmdSay.tcl
Under unix and OSX
You can run all tests with make test, or a specific test by navigating to the working directory and invoking one of the tcl test scripts from there:
cd trunk tests/commands/cmdSay.tcl
Writing tests
Tests are written in TCL, as this is a portable scripting language. It is best to start by copying an existing test. Tests should output lines containing the words "PASS" or "FAIL".
Tests can start/stop clients and servers, control them and monitor the output. Complexity of the test increases with the complexity of the feature, this should encourage smaller individual changes.
Example
#!/bin/bash # Do not change these first three lines \ exec tclsh "$0" "$@" # Create a list of demos to test lappend demos "DOOM2.WAD DEMO1 {15eb4720 3ccc7a1 3fc7e27 800000}" lappend demos "DOOM2.WAD DEMO2 {cea29400 289b9c2 fece4356 600000}" lappend demos "DOOM2.WAD DEMO3 {dca00040 fd6a4b9c ff7bee0a ff000000}" foreach demo $demos { # Run this demo set stdout [exec ./odamex -nosound -novideo \ -iwad [lindex $demo 1] \ +demotest [lindex $demo 1]] # Take the last line of output set result [lindex [split $stdout "\n"] end] # Take the last item in this demo line (see top of test) set expected [lindex $demo 2] # Compare them if { $result != $expected} { puts "FAIL $demo | $result" } else { puts "PASS $demo | $result" } }