# Scope

## Identification

This software test plan provides detailed tests that are used to evaluate the stability and compliance of the Common UNIX Printing System ("CUPS") Version 1.1.

## Document Overview

This software test plan is organized into the following sections:

- 1 - Scope
- 2 - References
- 3 - Test Procedure
- 4 - IPP Compliance Tests
- 5 - Command Tests
- A - Glossary

# Test Procedure

The test software and data files are located in the test subdirectory of the source distribution. A script is provided to compile the `ipptest` program and run all of the tests that follow, producing a success/fail report.

The `test` target of the top-level makefile can be used to run this script:

    make test

or you can run the test script directly:

    cd test
    ./run-stp-tests

A Software Test Report is stored in HTML and PDF files that are generated using the HTMLDOC software.

# IPP Compliance Tests

This section describes the tests used to validate the IPP standards compliance of the CUPS server.

## Request Tests

These tests verify that the CUPS scheduler only accepts valid IPP requests that start with the `attributes-charset` and `attributes-natural-language` attributes and also contain a `printer-uri` or `job-uri` attribute.

It also verifies that the CUPS scheduler always responds with `attributes-charset` and `attributes-natural-language` attributes, using default values if they are not provided by the client.

## CUPS Printer Operation Tests

These tests verify that the CUPS printer operations are supported and function properly. Two printers called `Test1` and `Test2` are created, one as a PostScript printer and one as a raster printer.

## Job Operation Tests

These test verify that the CUPS scheduler accepts print jobs for all supported file formats and that the `cancel-job`, `hold-job`, and `resume-job` operations work.

# Command Tests

This section describes the tests used to validate the Berkeley and System V commands included with CUPS.

## lpadmin

This test verifies that printers can be added, modified, and defaulted using the `lpadmin` command.

## lpc

This test verifies that the `lpc` command can show the current status of all print queues.

## lpq

This test verifies that the `lpq` command lists any jobs in the queue.

## lpstat

This test verifies that the `lpstat` command works with all reports using the "`-t`" option.

## lp

This test verifies that the `lp` command works with both the default destination and a specific destination.

## lpr

This test verifies that the `lpr` command works with both the default destination and a specific destination.

## lprm

This test verifies that the `lprm` command can properly cancel a job.

## cancel

This test verifies that the `cancel` command can properly cancel a job or all jobs.

## lpinfo

This test verifies that the `lpinfo` command returns a list of available printer drivers and devices.