Fedora Advent Calendar day 2

The beakerlib package
The beakerlib is a testing framework written in bash. It helps you to write a test case in bash. It provides several features such as Journaling, Logging, Assertion, and so on.
For example, QA:Testcase ClamAV would be implemented like this.

#!/bin/bash

# Include the BeakerLib environment
. /usr/share/beakerlib/beakerlib.sh

# Packaget to be tested
PACKAGE="clamav"

# Set the full test name
TEST="QA:Testcase ClamAV"

rlJournalStart
    rlPhaseStartTest
        grep "^Example" /etc/freshclam.conf
        if [ $? -eq 0 ]; then
            rlRun "sed -i 's/Example/#Example/' /etc/freshclam.conf" 0 "Comment out Example line"
        fi
    rlPhaseEnd

    rlPhaseStartTest
        rlRun "freshclam" 0 "Run freshclam"
    rlPhaseEnd

    rlPhaseStartSetup
        rlRun "curl -O http://www.eicar.org/download/eicar.com" 0 "Getting test virus"
    rlPhaseEnd

    rlPhaseStartTest
        # if virus is found, it returns 1
        rlRun "clamscan eicar.com" 1 "Scanning test virus"
    rlPhaseEnd

    rlPhaseStartCleanup
        rlRun "rm -f eicar.com" 0 "Remove test virus"
    rlPhaseEnd

rlJournalEnd

# Print the test report
rlJournalPrintText

As you can see there are three "rlPhaseStartSetup" block, and one "rlPhaseStartSetup" block, and one "rlPhaseStartCleanup" block. These block is the test steps in the wiki. It is no problems to only use rlPhaseStartSetup block instead of using setup or cleanup block but it seems not actual test case so I use setup and cleanup functions.
Anyway, running this script result like this.

[masami@rune:~/tests]$ sudo ./clamav-test.sh

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: [   LOG    ] :: Test
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::



::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: [   LOG    ] :: Test
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


ClamAV update process started at Fri Dec  2 21:41:26 2011
main.cvd is up to date (version: 54, sigs: 1044387, f-level: 60, builder: sven)
daily.cvd is up to date (version: 14063, sigs: 43201, f-level: 60, builder: arna
ud)
bytecode.cvd is up to date (version: 154, sigs: 38, f-level: 60, builder: edwin)

:: [   PASS   ] :: Run freshclam

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: [   LOG    ] :: Setup
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    68  100    68    0     0     99      0 --:--:-- --:--:-- --:--:--   221
:: [   PASS   ] :: Getting test virus

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: [   LOG    ] :: Test
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


eicar.com: Eicar-Test-Signature FOUND

----------- SCAN SUMMARY -----------
Known viruses: 1086364
Engine version: 0.97.3
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 2.287 sec (0 m 2 s)
:: [   PASS   ] :: Scanning test virus

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: [   LOG    ] :: Cleanup
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


:: [   PASS   ] :: Remove test virus
:: [21:41:31] ::  JOURNAL XML: /tmp/beakerlib-iMxU4xi/journal.xml
:: [21:41:31] ::  JOURNAL TXT: /tmp/beakerlib-iMxU4xi/journal.txt

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: [   LOG    ] :: TEST PROTOCOL
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


:: [   LOG    ] :: Test run ID   : iMxU4xi
:: [   LOG    ] :: Package       : clamav
:: [   LOG    ] :: Installed:    : clamav-0.97.3-1600.fc16.x86_64
:: [   LOG    ] :: Test started  : 2011-12-02 21:41:26 JST
:: [   LOG    ] :: Test finished : 2011-12-02 21:41:31 JST
:: [   LOG    ] :: Test name     : QA:Testcase ClamAV
:: [   LOG    ] :: Distro:       : Fedora release 16 (Verne)
:: [   LOG    ] :: Hostname      : rune
:: [   LOG    ] :: Architecture  : x86_64

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: [   LOG    ] :: Test description
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


PURPOSE of /tests/clamav-test.sh
Description: Testing ClamAV package
Author: Masami Ichikawa <masami256@gmail.com>

This test script is implementing
https://fedoraproject.org/wiki/QA:Testcase_ClamAV test case using beakerlib.
It does all test steps in the test case.



::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: [   LOG    ] :: Test
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


:: [   LOG    ] :: Duration: 0s
:: [   LOG    ] :: Assertions: 0 good, 0 bad
:: [   PASS   ] :: RESULT: Test

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: [   LOG    ] :: Test
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


:: [   PASS   ] :: Run freshclam
:: [   LOG    ] :: Duration: 1s
:: [   LOG    ] :: Assertions: 1 good, 0 bad
:: [   PASS   ] :: RESULT: Test

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: [   LOG    ] :: Setup
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


:: [   PASS   ] :: Getting test virus
:: [   LOG    ] :: Duration: 1s
:: [   LOG    ] :: Assertions: 1 good, 0 bad
:: [   PASS   ] :: RESULT: Setup

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: [   LOG    ] :: Test
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


:: [   PASS   ] :: Scanning test virus
:: [   LOG    ] :: Duration: 3s
:: [   LOG    ] :: Assertions: 1 good, 0 bad
:: [   PASS   ] :: RESULT: Test

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: [   LOG    ] :: Cleanup
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


:: [   PASS   ] :: Remove test virus
:: [   LOG    ] :: Duration: 0s
:: [   LOG    ] :: Assertions: 1 good, 0 bad
:: [   PASS   ] :: RESULT: Cleanup
:: [   LOG    ] :: JOURNAL XML: /tmp/beakerlib-iMxU4xi/journal.xml
:: [   LOG    ] :: JOURNAL TXT: /tmp/beakerlib-iMxU4xi/journal.txt

In this log, you can see "PURPOSE of /tests/clamav-test.sh" line. This values came from PURPOSE file which use to write test purpose. You don't have to have the file but it would be nice to have it to understand your test purpose.