diff options
-rw-r--r-- | CHANGES-1.5.txt | 10 | ||||
-rw-r--r-- | CHANGES-IPPTOOL.txt | 35 | ||||
-rw-r--r-- | cups/array-private.h | 2 | ||||
-rw-r--r-- | cups/http.c | 2 | ||||
-rw-r--r-- | cups/ipp-support.c | 102 | ||||
-rw-r--r-- | cups/ipp.c | 2 | ||||
-rw-r--r-- | cups/ipp.h | 1 | ||||
-rw-r--r-- | man/lp.man | 6 | ||||
-rw-r--r-- | notifier/dbus.c | 9 | ||||
-rw-r--r-- | systemv/cupstestppd.c | 85 | ||||
-rw-r--r-- | test/ipp-1.1.test | 205 | ||||
-rw-r--r-- | test/ipp-2.0.test | 41 | ||||
-rw-r--r-- | test/ipp-2.2.test | 2 | ||||
-rw-r--r-- | test/ippserver.c | 69 | ||||
-rw-r--r-- | test/ipptool.c | 372 | ||||
-rw-r--r-- | xcode/CUPS.xcodeproj/project.pbxproj | 62 |
16 files changed, 606 insertions, 399 deletions
diff --git a/CHANGES-1.5.txt b/CHANGES-1.5.txt index 70e968109..736f43be4 100644 --- a/CHANGES-1.5.txt +++ b/CHANGES-1.5.txt @@ -3,13 +3,17 @@ CHANGES-1.5.txt CHANGES IN CUPS V1.5.1 - - Documentation updates (STR #3885) + - Documentation updates (STR #3885, STR #3946) + - The DBUS notifier could crash (STR #3947) + - Relaxed some of the page size checks in cupstestppd. + - The ipptool program now reports attributes that are repeated within + the same attribute group. - Updated the PWG raster support to match the current draft specification. - Fixed some IPP conformance issues in the scheduler. - Added ipptool support for repeating requests. - - Added IPP/2.2 conformance tests and greatly improved the IPP/1.1 - conformance testing. + - Added IPP/2.2 conformance tests and greatly improved the IPP/1.1, + IPP/2.0, and IPP/2.1 conformance testing. - IPP messages containing mixed integer/rangeOfInteger values did not work (STR #3942) - The ipptool program now provides additional diagnostics for badly- diff --git a/CHANGES-IPPTOOL.txt b/CHANGES-IPPTOOL.txt index e107c3cff..b7c55a1c8 100644 --- a/CHANGES-IPPTOOL.txt +++ b/CHANGES-IPPTOOL.txt @@ -1,10 +1,43 @@ -CHANGES-IPPTOOL.txt - 2011-09-28 +CHANGES-IPPTOOL.txt - 2011-10-04 -------------------------------- This file provides a list of changes to the ipptool binary distribution posted on cups.org. +2011-10-04 + + - Fixed a crasher bug that showed up on Windows. + - Fixed a typo in the IPP/2.0 test. + + +2011-10-03 + + - Using OF-TYPE with the "no-value" or "unknown" out-of-band value tags + now works without special WITH-VALUE strings. + - ipptool now shows an error when an attribute appears more than once + within the same attribute group. + - ipptool did not display attributes as specified by the DISPLAY + directive when a test error failed. + - Fixed one spot where DEFINE-VALUE was still treated as an error when + the EXPECT test failed. + - uriScheme values were not displayed properly. + - Updated the IPP/1.1 tests to properly validate support for + job-hold-until-default and job-hold-until-supported when the Hold-Job + operation is supported. + - Updated the IPP/1.1 tests to properly check for the various standard + media sizes for the printing tests. + - Updated the IPP/1.1 tests to accept "no-value" for media-default an + orientation-requested-default. + - Updated the IPP/1.1 tests to accept "unknown" for job-state. + - Updated the IPP/1.1 tests to not perform the bogus URI printing tests + unless the "document-uri" variable is defined. + - Updated the IPP/2.0 tests to properly validate media-col + "media-xxx-supported" attributes. + - Updated the IPP/2.2 tests to properly validate media-ready and + media-col-ready. + + 2011-09-28 - Test output now includes a summary and overall score at the end. diff --git a/cups/array-private.h b/cups/array-private.h index f6b24e3d0..c0d9a92e8 100644 --- a/cups/array-private.h +++ b/cups/array-private.h @@ -21,7 +21,7 @@ * Include necessary headers... */ -# include "array.h" +# include <cups/array.h> /* diff --git a/cups/http.c b/cups/http.c index 33307db46..160a09d07 100644 --- a/cups/http.c +++ b/cups/http.c @@ -167,8 +167,10 @@ static int http_read_ssl(http_t *http, char *buf, int len); # if defined(HAVE_CDSASSL) && defined(HAVE_SECCERTIFICATECOPYDATA) static int http_set_credentials(http_t *http); # endif /* HAVE_CDSASSL ** HAVE_SECCERTIFICATECOPYDATA */ +#endif /* HAVE_SSL */ static void http_set_timeout(int fd, double timeout); static void http_set_wait(http_t *http); +#ifdef HAVE_SSL static int http_setup_ssl(http_t *http); static void http_shutdown_ssl(http_t *http); static int http_upgrade(http_t *http); diff --git a/cups/ipp-support.c b/cups/ipp-support.c index a6c23f555..b22b4727b 100644 --- a/cups/ipp-support.c +++ b/cups/ipp-support.c @@ -100,8 +100,8 @@ static const char * const ipp_status_oks[] = /* "OK" status codes */ static char * const ipp_std_ops[] = { /* 0x0000 - 0x000f */ - "unknown-00", - "unknown-01", + "0x00", + "0x01", "Print-Job", "Print-URI", "Validate-Job", @@ -115,7 +115,7 @@ static char * const ipp_std_ops[] = "Hold-Job", "Release-Job", "Restart-Job", - "unknown-0f", + "0x0f", /* 0x0010 - 0x001f */ "Pause-Printer", @@ -132,11 +132,11 @@ static char * const ipp_std_ops[] = "Cancel-Subscription", "Get-Notifications", "Send-Notifications", - "unknown-1e", - "unknown-1f", + "0x1e", + "0x1f", /* 0x0020 - 0x002f */ - "unknown-20", + "0x20", "Get-Printer-Support-Files", "Enable-Printer", "Disable-Printer", @@ -156,7 +156,7 @@ static char * const ipp_std_ops[] = /* 0x0030 - 0x003b */ "Promote-Job", "Schedule-Job-After", - "unknown-32", + "0x32", "Cancel-Document", "Get-Document-Attributes", "Get-Documents", @@ -206,46 +206,47 @@ static char * const ipp_std_ops[] = /* 0x06 */ "event-notification-attributes-tag", /* 0x07 */ - "unknown-08", /* 0x08 */ - "unknown-09", /* 0x09 */ - "unknown-0a", /* 0x0a */ - "unknown-0b", /* 0x0b */ - "unknown-0c", /* 0x0c */ - "unknown-0d", /* 0x0d */ - "unknown-0e", /* 0x0e */ - "unknown-0f", /* 0x0f */ + "0x08", /* 0x08 */ + "document-attributes-tag", + /* 0x09 */ + "0x0a", /* 0x0a */ + "0x0b", /* 0x0b */ + "0x0c", /* 0x0c */ + "0x0d", /* 0x0d */ + "0x0e", /* 0x0e */ + "0x0f", /* 0x0f */ "unsupported", /* 0x10 */ "default", /* 0x11 */ "unknown", /* 0x12 */ "no-value", /* 0x13 */ - "unknown-14", /* 0x14 */ + "0x14", /* 0x14 */ "not-settable", /* 0x15 */ "delete-attribute", /* 0x16 */ "admin-define", /* 0x17 */ - "unknown-18", /* 0x18 */ - "unknown-19", /* 0x19 */ - "unknown-1a", /* 0x1a */ - "unknown-1b", /* 0x1b */ - "unknown-1c", /* 0x1c */ - "unknown-1d", /* 0x1d */ - "unknown-1e", /* 0x1e */ - "unknown-1f", /* 0x1f */ - "unknown-20", /* 0x20 */ + "0x18", /* 0x18 */ + "0x19", /* 0x19 */ + "0x1a", /* 0x1a */ + "0x1b", /* 0x1b */ + "0x1c", /* 0x1c */ + "0x1d", /* 0x1d */ + "0x1e", /* 0x1e */ + "0x1f", /* 0x1f */ + "0x20", /* 0x20 */ "integer", /* 0x21 */ "boolean", /* 0x22 */ "enum", /* 0x23 */ - "unknown-24", /* 0x24 */ - "unknown-25", /* 0x25 */ - "unknown-26", /* 0x26 */ - "unknown-27", /* 0x27 */ - "unknown-28", /* 0x28 */ - "unknown-29", /* 0x29 */ - "unknown-2a", /* 0x2a */ - "unknown-2b", /* 0x2b */ - "unknown-2c", /* 0x2c */ - "unknown-2d", /* 0x2d */ - "unknown-2e", /* 0x2e */ - "unknown-2f", /* 0x2f */ + "0x24", /* 0x24 */ + "0x25", /* 0x25 */ + "0x26", /* 0x26 */ + "0x27", /* 0x27 */ + "0x28", /* 0x28 */ + "0x29", /* 0x29 */ + "0x2a", /* 0x2a */ + "0x2b", /* 0x2b */ + "0x2c", /* 0x2c */ + "0x2d", /* 0x2d */ + "0x2e", /* 0x2e */ + "0x2f", /* 0x2f */ "octetString", /* 0x30 */ "dateTime", /* 0x31 */ "resolution", /* 0x32 */ @@ -254,18 +255,18 @@ static char * const ipp_std_ops[] = "textWithLanguage", /* 0x35 */ "nameWithLanguage", /* 0x36 */ "endCollection", /* 0x37 */ - "unknown-38", /* 0x38 */ - "unknown-39", /* 0x39 */ - "unknown-3a", /* 0x3a */ - "unknown-3b", /* 0x3b */ - "unknown-3c", /* 0x3c */ - "unknown-3d", /* 0x3d */ - "unknown-3e", /* 0x3e */ - "unknown-3f", /* 0x3f */ - "unknown-40", /* 0x40 */ + "0x38", /* 0x38 */ + "0x39", /* 0x39 */ + "0x3a", /* 0x3a */ + "0x3b", /* 0x3b */ + "0x3c", /* 0x3c */ + "0x3d", /* 0x3d */ + "0x3e", /* 0x3e */ + "0x3f", /* 0x3f */ + "0x40", /* 0x40 */ "textWithoutLanguage",/* 0x41 */ "nameWithoutLanguage",/* 0x42 */ - "unknown-43", /* 0x43 */ + "0x43", /* 0x43 */ "keyword", /* 0x44 */ "uri", /* 0x45 */ "uriScheme", /* 0x46 */ @@ -448,6 +449,7 @@ _ippAttrString(ipp_attribute_t *attr, /* I - Attribute */ case IPP_TAG_KEYWORD : case IPP_TAG_CHARSET : case IPP_TAG_URI : + case IPP_TAG_URISCHEME : case IPP_TAG_MIMETYPE : case IPP_TAG_LANGUAGE : case IPP_TAG_TEXTLANG : @@ -555,10 +557,10 @@ ippErrorString(ipp_status_t error) /* I - Error status */ return (ipp_status_1000s[error - IPP_AUTHENTICATION_CANCELED]); /* - * No, build an "unknown-xxxx" error string... + * No, build an "0xxxxx" error string... */ - sprintf(cg->ipp_unknown, "unknown-%04x", error); + sprintf(cg->ipp_unknown, "0x%04x", error); return (cg->ipp_unknown); } @@ -628,7 +630,7 @@ ippOpString(ipp_op_t op) /* I - Operation ID */ return (ipp_cups_ops2[0]); /* - * No, build an "unknown-xxxx" operation string... + * No, build an "0xxxxx" operation string... */ sprintf(cg->ipp_unknown, "0x%04x", op); diff --git a/cups/ipp.c b/cups/ipp.c index c98db83e4..d752c35c0 100644 --- a/cups/ipp.c +++ b/cups/ipp.c @@ -1507,7 +1507,7 @@ ippReadIO(void *src, /* I - Data source */ n = (((((buffer[0] << 8) | buffer[1]) << 8) | buffer[2]) << 8) | buffer[3]; - if (value_tag == IPP_TAG_RANGE) + if (attr->value_tag == IPP_TAG_RANGE) value->range.lower = value->range.upper = n; else value->integer = n; diff --git a/cups/ipp.h b/cups/ipp.h index 1626cabb2..78e76fcba 100644 --- a/cups/ipp.h +++ b/cups/ipp.h @@ -73,6 +73,7 @@ typedef enum ipp_tag_e /**** Format tags for attributes ****/ IPP_TAG_UNSUPPORTED_GROUP, /* Unsupported attributes group */ IPP_TAG_SUBSCRIPTION, /* Subscription group */ IPP_TAG_EVENT_NOTIFICATION, /* Event group */ + IPP_TAG_DOCUMENT = 0x09, /* Document group */ IPP_TAG_UNSUPPORTED_VALUE = 0x10, /* Unsupported value */ IPP_TAG_DEFAULT, /* Default value */ IPP_TAG_UNKNOWN, /* Unknown value */ diff --git a/man/lp.man b/man/lp.man index c313b52df..260921660 100644 --- a/man/lp.man +++ b/man/lp.man @@ -12,7 +12,7 @@ .\" which should have been included with this file. If this file is .\" file is missing or damaged, see the license at "http://www.cups.org/". .\" -.TH lp 1 "CUPS" "31 March 2011" "Apple Inc." +.TH lp 1 "CUPS" "3 October 2011" "Apple Inc." .SH NAME lp - print files .SH SYNOPSIS @@ -128,10 +128,6 @@ Do not report the resulting job IDs (silent mode.) .br Sets the job name. .TP 5 --u username -.br -Submits jobs as \fIusername\fR. -.TP 5 -H hh:mm .TP 5 -H hold diff --git a/notifier/dbus.c b/notifier/dbus.c index 542a929da..4f5b48c55 100644 --- a/notifier/dbus.c +++ b/notifier/dbus.c @@ -4,7 +4,7 @@ * D-Bus notifier for CUPS. * * Copyright 2008-2010 by Apple Inc. - * Copyright (C) 2007 Red Hat, Inc. + * Copyright (C) 2011 Red Hat, Inc. * Copyright (C) 2007 Tim Waugh <twaugh@redhat.com> * Copyright 1997-2005 by Easy Software Products. * @@ -353,7 +353,7 @@ main(int argc, /* I - Number of command-line args */ /* * Create and send the new message... */ - + fprintf(stderr, "DEBUG: %s\n", signame); message = dbus_message_new_signal("/org/cups/cupsd/Notifier", "org.cups.cupsd.Notifier", @@ -423,10 +423,11 @@ main(int argc, /* I - Number of command-line args */ p = printer_reasons; for (i = 0; i < attr->num_values; i++) { - strcpy(p, attr->values[i].string.text); - p += strlen(p); if (i) *p++ = ','; + + strcpy(p, attr->values[i].string.text); + p += strlen(p); } dbus_message_iter_append_string(&iter, &printer_reasons); } diff --git a/systemv/cupstestppd.c b/systemv/cupstestppd.c index 3765f4754..d08189a58 100644 --- a/systemv/cupstestppd.c +++ b/systemv/cupstestppd.c @@ -3180,7 +3180,7 @@ check_sizes(ppd_file_t *ppd, /* I - PPD file */ /* * Verify that the size name is Adobe standard name if it's a standard size - * and the dementional name if it's not a standard size. Suffix should be + * and the dimentional name if it's not a standard size. Suffix should be * .Fullbleed, etc., or numeric, e.g., Letter, Letter.Fullbleed, * Letter.Transverse, Letter1, Letter2, 4x8, 55x91mm, 55x91mm.Fullbleed, etc. */ @@ -3198,39 +3198,53 @@ check_sizes(ppd_file_t *ppd, /* I - PPD file */ if (pwg_media && pwg_media->ppd) { + size_t ppdlen = strlen(pwg_media->ppd); + /* Length of standard PPD name */ + strlcpy(buf, pwg_media->ppd, sizeof(buf)); if (size->left == 0 && size->bottom == 0 && size->right == size->width && size->top == size->length) { snprintf(buf, sizeof(buf), "%s.Fullbleed", pwg_media->ppd); - if (strcmp(size->name, buf)) - is_ok = 0; - } - else if (size->width > size->length) - { - if ((ptr = pwg_media->ppd + strlen(pwg_media->ppd) - 7) - >= pwg_media->ppd && !strcmp(ptr, "Rotated")) + if (_cups_strcasecmp(size->name, buf)) { - if (strcmp(size->name, buf)) + /* + * Allow an additional qualifier such as ".WithTab"... + */ + + size_t buflen = strlen(buf);/* Length of full bleed name */ + + if (_cups_strncasecmp(size->name, buf, buflen) || + size->name[buflen] != '.') is_ok = 0; } - else - { + } + else if (strcmp(size->name, buf) && size->width > size->length) + { + if (!strcmp(pwg_media->ppd, "DoublePostcardRotated")) + strlcpy(buf, "DoublePostcard", sizeof(buf)); + else snprintf(buf, sizeof(buf), "%sRotated", pwg_media->ppd); + + if (strcmp(size->name, buf)) + { + snprintf(buf, sizeof(buf), "%s.Transverse", pwg_media->ppd); if (strcmp(size->name, buf)) - { - snprintf(buf, sizeof(buf), "%s.Transverse", pwg_media->ppd); - if (strcmp(size->name, buf)) - is_ok = 0; - } + is_ok = 0; } } - else - { - if ((!strncmp(size->name, pwg_media->ppd, strlen(pwg_media->ppd)))) + else if (!strncmp(size->name, pwg_media->ppd, ppdlen)) + { + /* + * Check for a proper qualifier (number, "Small", or .something)... + */ + + ptr = size->name + ppdlen; + + if (isdigit(*ptr & 255)) { - for (ptr = size->name + strlen(pwg_media->ppd); *ptr; ptr ++) + for (ptr ++; *ptr; ptr ++) { if (!isdigit(*ptr & 255)) { @@ -3239,9 +3253,20 @@ check_sizes(ppd_file_t *ppd, /* I - PPD file */ } } } - else - is_ok = 0; + else if (*ptr != '.' && *ptr && strcmp(ptr, "Small")) + is_ok = 0; } + else + { + /* + * Check for EnvSizeName as well... + */ + + snprintf(buf, sizeof(buf), "Env%s", pwg_media->ppd); + + if (strcmp(size->name, buf)) + is_ok = 0; + } if (!is_ok) _cupsLangPrintf(stdout, @@ -3256,7 +3281,7 @@ check_sizes(ppd_file_t *ppd, /* I - PPD file */ length_tmp = (fabs(size->length - ceil(size->length)) < 0.1) ? ceil(size->length) : size->length; - if (fmod(width_tmp, 18.0) == 0.0 && fmod(length_tmp, 18.0) == 0.0) + if (fmod(width_tmp, 18.0) == 0.0 || fmod(length_tmp, 18.0) == 0.0) { width_inch = width_tmp / 72.0; length_inch = length_tmp / 72.0; @@ -3277,10 +3302,16 @@ check_sizes(ppd_file_t *ppd, /* I - PPD file */ else if (size->width > size->length) strlcat(buf, ".Transverse", sizeof(buf)); - if (strcmp(size->name, buf)) - _cupsLangPrintf(stdout, - _(" %s Size \"%s\" should be \"%s\"."), - prefix, size->name, buf); + if (_cups_strcasecmp(size->name, buf)) + { + size_t buflen = strlen(buf); /* Length of proposed name */ + + if (_cups_strncasecmp(size->name, buf, buflen) || + strcmp(size->name + buflen, "in")) + _cupsLangPrintf(stdout, + _(" %s Size \"%s\" should be \"%s\"."), + prefix, size->name, buf); + } } } } diff --git a/test/ipp-1.1.test b/test/ipp-1.1.test index 12d6ea674..8e789dcb6 100644 --- a/test/ipp-1.1.test +++ b/test/ipp-1.1.test @@ -158,7 +158,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state WITH-VALUE 7,8,9 DEFINE-MATCH PRINT_JOB_COMPLETED EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag @@ -204,20 +204,41 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" STATUS successful-ok # Display some useful information to identify the test - DISPLAY printer-name - DISPLAY printer-make-and-model DISPLAY color-supported - DISPLAY pages-per-minute - DISPLAY pages-per-minute-color + DISPLAY compression-supported DISPLAY document-format-supported DISPLAY finishings-supported + DISPLAY ipp-versions-supported DISPLAY job-sheets-supported DISPLAY media-supported DISPLAY number-up-supported DISPLAY operations-supported + DISPLAY pages-per-minute + DISPLAY pages-per-minute-color DISPLAY print-quality-supported + DISPLAY printer-uri-supported DISPLAY reference-uri-schemes-supported DISPLAY sizes-supported + DISPLAY uri-authentication-supported + DISPLAY uri-security-supported + + # Operations + EXPECT operations-supported OF-TYPE enum IN-GROUP printer-attributes-tag WITH-VALUE 0x0002 # Print-Job + EXPECT operations-supported WITH-VALUE 0x0003 DEFINE-MATCH OPTIONAL_PRINT_URI # Print-URI + EXPECT operations-supported WITH-VALUE 0x0004 # Validate-Job + EXPECT operations-supported WITH-VALUE 0x0005 DEFINE-MATCH OPTIONAL_CREATE_JOB # Create-Job + EXPECT operations-supported WITH-VALUE 0x0006 DEFINE-MATCH OPTIONAL_SEND_DOCUMENT # Send-Document + EXPECT operations-supported WITH-VALUE 0x0007 DEFINE-MATCH OPTIONAL_SEND_URI # Send-URI + EXPECT operations-supported WITH-VALUE 0x0008 # Cancel-Job + EXPECT operations-supported WITH-VALUE 0x0009 # Get-Job-Attributes + EXPECT operations-supported WITH-VALUE 0x000a # Get-Jobs + EXPECT operations-supported WITH-VALUE 0x000b # Get-Printer-Attributes + EXPECT operations-supported WITH-VALUE 0x000c DEFINE-MATCH OPTIONAL_HOLD_JOB # Hold-Job + EXPECT operations-supported WITH-VALUE 0x000d DEFINE-MATCH OPTIONAL_RELEASE_JOB # Release-Job + EXPECT operations-supported WITH-VALUE 0x000e DEFINE-MATCH OPTIONAL_RESTART_JOB # Restart-Job + EXPECT operations-supported WITH-VALUE 0x0010 DEFINE-MATCH OPTIONAL_PAUSE_PRINTER # Pause-Printer + EXPECT operations-supported WITH-VALUE 0x0011 DEFINE-MATCH OPTIONAL_RESUME_PRINTER # Resume-Printer + EXPECT operations-supported WITH-VALUE 0x0012 DEFINE-MATCH OPTIONAL_PURGE_JOBS # Purge-Jobs # Job template attributes EXPECT ?copies-default OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE >0 @@ -226,11 +247,13 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT ?finishings-supported OF-TYPE enum IN-GROUP printer-attributes-tag WITH-VALUE 3 EXPECT ?job-hold-until-default OF-TYPE keyword|name IN-GROUP printer-attributes-tag COUNT 1 EXPECT ?job-hold-until-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag WITH-VALUE no-hold + EXPECT job-hold-until-default IF-DEFINED OPTIONAL_HOLD_JOB + EXPECT job-hold-until-supported IF-DEFINED OPTIONAL_HOLD_JOB EXPECT ?job-priority-default OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE >0,<101 EXPECT ?job-priority-supported OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE >0,<101 EXPECT ?job-sheets-default OF-TYPE keyword|name IN-GROUP printer-attributes-tag EXPECT ?job-sheets-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag WITH-VALUE none - EXPECT ?media-default OF-TYPE keyword|name IN-GROUP printer-attributes-tag COUNT 1 + EXPECT ?media-default OF-TYPE no-value|keyword|name IN-GROUP printer-attributes-tag COUNT 1 EXPECT ?media-ready OF-TYPE keyword|name IN-GROUP printer-attributes-tag EXPECT ?media-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag EXPECT ?multiple-document-handling-default OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "/^(single-document|separate-documents-uncollated-copies|separate-documents-collated-copies|single-document-new-sheet)$$/" @@ -238,7 +261,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT ?number-up-default OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE >0 EXPECT ?number-up-supported OF-TYPE integer|rangeOfInteger IN-GROUP printer-attributes-tag WITH-VALUE >0 EXPECT ?number-up-supported WITH-VALUE 1 - EXPECT ?orientation-requested-default OF-TYPE enum,no-value IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE no-value,3,4,5,6 + EXPECT ?orientation-requested-default OF-TYPE no-value|enum IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE 3,4,5,6 EXPECT ?orientation-requested-supported OF-TYPE enum IN-GROUP printer-attributes-tag WITH-VALUE 3,4,5,6 EXPECT ?pages-ranges-supported OF-TYPE boolean IN-GROUP printer-attributes-tag EXPECT ?print-quality-default OF-TYPE enum IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE 3,4,5 @@ -254,9 +277,14 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT document-format-supported WITH-VALUE "application/postscript" DEFINE-MATCH OPTIONAL_POSTSCRIPT EXPECT document-format-supported WITH-VALUE "image/jpeg" DEFINE-MATCH OPTIONAL_JPEG EXPECT job-sheets-supported WITH-VALUE "standard" DEFINE-MATCH OPTIONAL_STANDARD_SHEET - EXPECT media-supported WITH-VALUE "/^(a4|iso-a4|iso_a4_210x297mm)$$/" DEFINE-VALUE OPTIONAL_A4_MEDIA - EXPECT media-supported WITH-VALUE "/^(letter|na-letter|na_letter_8.5x11in)$$/" DEFINE-VALUE OPTIONAL_LETTER_MEDIA - EXPECT media-supported WITH-VALUE "/^(index-4x6|na_index-4x6_4x6in)$$/" DEFINE-VALUE OPTIONAL_4X6_MEDIA + EXPECT media-supported WITH-VALUE "a4" DEFINE-VALUE OPTIONAL_A4_MEDIA + EXPECT media-supported WITH-VALUE "iso-a4" DEFINE-VALUE OPTIONAL_A4_MEDIA + EXPECT media-supported WITH-VALUE "iso_a4_210x297mm" DEFINE-VALUE OPTIONAL_A4_MEDIA + EXPECT media-supported WITH-VALUE "letter" DEFINE-VALUE OPTIONAL_LETTER_MEDIA + EXPECT media-supported WITH-VALUE "na-letter" DEFINE-VALUE OPTIONAL_LETTER_MEDIA + EXPECT media-supported WITH-VALUE "na_letter_8.5x11in" DEFINE-VALUE OPTIONAL_LETTER_MEDIA + EXPECT media-supported WITH-VALUE "index-4x6" DEFINE-VALUE OPTIONAL_4X6_MEDIA + EXPECT media-supported WITH-VALUE "na_index-4x6_4x6in" DEFINE-VALUE OPTIONAL_4X6_MEDIA EXPECT number-up-supported WITH-VALUE 2 DEFINE-MATCH OPTIONAL_2UP EXPECT print-quality WITH-VALUE 3 DEFINE-MATCH OPTIONAL_DRAFT_QUALITY EXPECT print-quality WITH-VALUE 4 DEFINE-MATCH OPTIONAL_NORMAL_QUALITY @@ -281,6 +309,8 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT ?printer-more-info-manufacturer OF-TYPE uri IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "$HTTP_URI_SCHEME" EXPECT ?printer-state-message OF-TYPE text IN-GROUP printer-attributes-tag EXPECT ?reference-uri-schemes-supported OF-TYPE uriScheme IN-GROUP printer-attributes-tag + EXPECT reference-uri-schemes-supported WITH-VALUE "ftp" IF-DEFINED OPTIONAL_PRINT_URI + EXPECT reference-uri-schemes-supported WITH-VALUE "ftp" IF-DEFINED OPTIONAL_SEND_URI IF-NOT-DEFINED OPTIONAL_PRINT_URI EXPECT charset-configured OF-TYPE charset IN-GROUP printer-attributes-tag COUNT 1 EXPECT charset-supported OF-TYPE charset IN-GROUP printer-attributes-tag WITH-VALUE utf-8 EXPECT compression-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE none @@ -299,24 +329,6 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT queued-job-count OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 EXPECT uri-authentication-supported OF-TYPE keyword IN-GROUP printer-attributes-tag EXPECT uri-security-supported OF-TYPE keyword IN-GROUP printer-attributes-tag SAME-COUNT-AS uri-authentication-supported - - # Operations - EXPECT operations-supported OF-TYPE enum IN-GROUP printer-attributes-tag WITH-VALUE 0x0002 # Print-Job - EXPECT operations-supported WITH-VALUE 0x0003 DEFINE-MATCH OPTIONAL_PRINT_URI # Print-URI - EXPECT operations-supported WITH-VALUE 0x0004 # Validate-Job - EXPECT operations-supported WITH-VALUE 0x0005 DEFINE-MATCH OPTIONAL_CREATE_JOB # Create-Job - EXPECT operations-supported WITH-VALUE 0x0006 DEFINE-MATCH OPTIONAL_SEND_DOCUMENT # Send-Document - EXPECT operations-supported WITH-VALUE 0x0007 DEFINE-MATCH OPTIONAL_SEND_URI # Send-URI - EXPECT operations-supported WITH-VALUE 0x0008 # Cancel-Job - EXPECT operations-supported WITH-VALUE 0x0009 # Get-Job-Attributes - EXPECT operations-supported WITH-VALUE 0x000a # Get-Jobs - EXPECT operations-supported WITH-VALUE 0x000b # Get-Printer-Attributes - EXPECT operations-supported WITH-VALUE 0x000c DEFINE-MATCH OPTIONAL_HOLD_JOB # Hold-Job - EXPECT operations-supported WITH-VALUE 0x000d DEFINE-MATCH OPTIONAL_RELEASE_JOB # Release-Job - EXPECT operations-supported WITH-VALUE 0x000e DEFINE-MATCH OPTIONAL_RESTART_JOB # Restart-Job - EXPECT operations-supported WITH-VALUE 0x0010 DEFINE-MATCH OPTIONAL_PAUSE_PRINTER # Pause-Printer - EXPECT operations-supported WITH-VALUE 0x0011 DEFINE-MATCH OPTIONAL_RESUME_PRINTER # Resume-Printer - EXPECT operations-supported WITH-VALUE 0x0012 DEFINE-MATCH OPTIONAL_PURGE_JOBS # Purge-Jobs } @@ -420,19 +432,19 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT ?job-more-info OF-TYPE uri IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE "$HTTP_URI_SCHEME" EXPECT job-name OF-TYPE name IN-GROUP job-attributes-tag COUNT 1 EXPECT job-originating-user-name OF-TYPE name IN-GROUP job-attributes-tag COUNT 1 - EXPECT job-state OF-TYPE enum IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >2,<10 + EXPECT job-state OF-TYPE unknown|enum IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >2,<10 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag COUNT 1 EXPECT ?job-detailed-status-messages OF-TYPE text IN-GROUP job-attributes-tag EXPECT ?number-of-documents OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 EXPECT ?output-device-assigned OF-TYPE name IN-GROUP job-attributes-tag COUNT 1 - EXPECT time-at-creation OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE no-value,>-1 - EXPECT time-at-processing OF-TYPE no-value,integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE no-value,>-1 - EXPECT time-at-completed OF-TYPE no-value,integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE no-value,>-1 - EXPECT job-printer-up-time OF-TYPE no-value,integer IN-GROUP job-attributes-tag COUNT 1 - EXPECT ?date-time-at-creation OF-TYPE no-value,dateTime IN-GROUP job-attributes-tag COUNT 1 - EXPECT ?date-time-at-processing OF-TYPE no-value,dateTime IN-GROUP job-attributes-tag COUNT 1 - EXPECT ?date-time-at-completed OF-TYPE no-value,dateTime IN-GROUP job-attributes-tag COUNT 1 + EXPECT time-at-creation OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >-1 + EXPECT time-at-processing OF-TYPE no-value|integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >-1 + EXPECT time-at-completed OF-TYPE no-value|integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >-1 + EXPECT job-printer-up-time OF-TYPE no-value|integer IN-GROUP job-attributes-tag COUNT 1 + EXPECT ?date-time-at-creation OF-TYPE no-value|dateTime IN-GROUP job-attributes-tag COUNT 1 + EXPECT ?date-time-at-processing OF-TYPE no-value|dateTime IN-GROUP job-attributes-tag COUNT 1 + EXPECT ?date-time-at-completed OF-TYPE no-value|dateTime IN-GROUP job-attributes-tag COUNT 1 EXPECT ?number-of-intervening-jobs OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 EXPECT ?job-message-from-operator OF-TYPE text IN-GROUP job-attributes-tag COUNT 1 EXPECT ?job-k-octets OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 @@ -642,6 +654,22 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" } +# Wait for job to complete... +{ + NAME "Get-Job-Attributes Until Job Complete" + OPERATION Get-Job-Attributes + GROUP operation-attributes-tag + ATTR charset attributes-charset utf-8 + ATTR naturalLanguage attributes-natural-language en + ATTR uri printer-uri $uri + ATTR integer job-id $job-id + ATTR name requesting-user-name $user + + STATUS successful-ok + EXPECT job-state OF-TYPE unknown|enum IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >6,<10 REPEAT-NO-MATCH +} + + # Test Get-Jobs operation # # Required by: RFC 2911 section 3.2.6 @@ -654,7 +682,6 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" ATTR uri printer-uri $uri ATTR name requesting-user-name $user ATTR keyword which-jobs completed - DELAY 20 STATUS successful-ok EXPECT job-id OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >0 @@ -724,19 +751,19 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT ?job-more-info OF-TYPE uri IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE "$HTTP_URI_SCHEME" EXPECT job-name OF-TYPE name IN-GROUP job-attributes-tag COUNT 1 EXPECT job-originating-user-name OF-TYPE name IN-GROUP job-attributes-tag COUNT 1 - EXPECT job-state OF-TYPE enum IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >2,<10 + EXPECT job-state OF-TYPE unknown|enum IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >2,<10 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag COUNT 1 EXPECT ?job-detailed-status-messages OF-TYPE text IN-GROUP job-attributes-tag EXPECT ?number-of-documents OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 EXPECT ?output-device-assigned OF-TYPE name IN-GROUP job-attributes-tag COUNT 1 - EXPECT time-at-creation OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE no-value,>-1 - EXPECT time-at-processing OF-TYPE no-value,integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE no-value,>-1 - EXPECT time-at-completed OF-TYPE no-value,integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE no-value,>-1 - EXPECT job-printer-up-time OF-TYPE no-value,integer IN-GROUP job-attributes-tag COUNT 1 - EXPECT ?date-time-at-creation OF-TYPE no-value,dateTime IN-GROUP job-attributes-tag COUNT 1 - EXPECT ?date-time-at-processing OF-TYPE no-value,dateTime IN-GROUP job-attributes-tag COUNT 1 - EXPECT ?date-time-at-completed OF-TYPE no-value,dateTime IN-GROUP job-attributes-tag COUNT 1 + EXPECT time-at-creation OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >-1 + EXPECT time-at-processing OF-TYPE no-value|integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >-1 + EXPECT time-at-completed OF-TYPE no-value|integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >-1 + EXPECT job-printer-up-time OF-TYPE no-value|integer IN-GROUP job-attributes-tag COUNT 1 + EXPECT ?date-time-at-creation OF-TYPE no-value|dateTime IN-GROUP job-attributes-tag COUNT 1 + EXPECT ?date-time-at-processing OF-TYPE no-value|dateTime IN-GROUP job-attributes-tag COUNT 1 + EXPECT ?date-time-at-completed OF-TYPE no-value|dateTime IN-GROUP job-attributes-tag COUNT 1 EXPECT ?number-of-intervening-jobs OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 EXPECT ?job-message-from-operator OF-TYPE text IN-GROUP job-attributes-tag COUNT 1 EXPECT ?job-k-octets OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 @@ -805,7 +832,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -852,19 +879,19 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT ?job-more-info OF-TYPE uri IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE "$HTTP_URI_SCHEME" EXPECT job-name OF-TYPE name IN-GROUP job-attributes-tag COUNT 1 EXPECT job-originating-user-name OF-TYPE name IN-GROUP job-attributes-tag COUNT 1 - EXPECT job-state OF-TYPE enum IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >2,<10 + EXPECT job-state OF-TYPE unknown|enum IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >2,<10 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag COUNT 1 EXPECT ?job-detailed-status-messages OF-TYPE text IN-GROUP job-attributes-tag EXPECT ?number-of-documents OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 EXPECT ?output-device-assigned OF-TYPE name IN-GROUP job-attributes-tag COUNT 1 - EXPECT time-at-creation OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE no-value,>-1 - EXPECT time-at-processing OF-TYPE no-value,integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE no-value,>-1 - EXPECT time-at-completed OF-TYPE no-value,integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE no-value,>-1 - EXPECT job-printer-up-time OF-TYPE no-value,integer IN-GROUP job-attributes-tag COUNT 1 - EXPECT ?date-time-at-creation OF-TYPE no-value,dateTime IN-GROUP job-attributes-tag COUNT 1 - EXPECT ?date-time-at-processing OF-TYPE no-value,dateTime IN-GROUP job-attributes-tag COUNT 1 - EXPECT ?date-time-at-completed OF-TYPE no-value,dateTime IN-GROUP job-attributes-tag COUNT 1 + EXPECT time-at-creation OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >-1 + EXPECT time-at-processing OF-TYPE no-value|integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >-1 + EXPECT time-at-completed OF-TYPE no-value|integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >-1 + EXPECT job-printer-up-time OF-TYPE no-value|integer IN-GROUP job-attributes-tag COUNT 1 + EXPECT ?date-time-at-creation OF-TYPE no-value|dateTime IN-GROUP job-attributes-tag COUNT 1 + EXPECT ?date-time-at-processing OF-TYPE no-value|dateTime IN-GROUP job-attributes-tag COUNT 1 + EXPECT ?date-time-at-completed OF-TYPE no-value|dateTime IN-GROUP job-attributes-tag COUNT 1 EXPECT ?number-of-intervening-jobs OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 EXPECT ?job-message-from-operator OF-TYPE text IN-GROUP job-attributes-tag COUNT 1 EXPECT ?job-k-octets OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 @@ -917,7 +944,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -931,6 +958,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" # Defined by: RFC 2911 section 3.2.2 { SKIP-IF-NOT-DEFINED OPTIONAL_PRINT_URI + SKIP-IF-NOT-DEFINED document-uri NAME "Print-URI with bad URI: Print-URI Operation" OPERATION Print-URI @@ -977,7 +1005,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1031,7 +1059,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1101,7 +1129,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1155,7 +1183,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1166,6 +1194,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" { SKIP-IF-NOT-DEFINED OPTIONAL_CREATE_JOB SKIP-IF-NOT-DEFINED OPTIONAL_SEND_URI + SKIP-IF-NOT-DEFINED document-uri SKIP-PREVIOUS-ERROR yes NAME "Send-URI with bad URI: Send-URI Operation (bad URI)" @@ -1232,7 +1261,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1269,7 +1298,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1306,7 +1335,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1341,7 +1370,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1378,7 +1407,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1415,7 +1444,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1452,7 +1481,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1487,7 +1516,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1524,7 +1553,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1561,7 +1590,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1596,7 +1625,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1631,7 +1660,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1666,7 +1695,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1701,7 +1730,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1736,7 +1765,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1775,7 +1804,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1812,7 +1841,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1849,7 +1878,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1886,7 +1915,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1925,7 +1954,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1962,7 +1991,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -1999,7 +2028,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -2036,7 +2065,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -2075,7 +2104,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -2112,7 +2141,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -2149,7 +2178,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -2186,7 +2215,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -2223,7 +2252,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag @@ -2258,7 +2287,7 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/" EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME" EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE >0 - EXPECT job-state OF-TYPE enum COUNT 1 IN-GROUP job-attributes-tag + EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE 3,4,5,6,7,8,9 EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag diff --git a/test/ipp-2.0.test b/test/ipp-2.0.test index 44c3cf2b4..3800d52d3 100644 --- a/test/ipp-2.0.test +++ b/test/ipp-2.0.test @@ -3,7 +3,7 @@ # # IPP/2.0 test suite. # -# Copyright 2007-2010 by Apple Inc. +# Copyright 2007-2011 by Apple Inc. # Copyright 2001-2006 by Easy Software Products. All rights reserved. # # These coded instructions, statements, and computer programs are the @@ -50,9 +50,10 @@ DEFINE MEDIA_REGEX "/^((custom|na|asme|roc|oe)_[a-z0-9][-a-z0-9]*_([1-9][0-9]*(\ EXPECT copies-supported OF-TYPE rangeOfInteger IN-GROUP printer-attributes-tag EXPECT finishings-default OF-TYPE enum IN-GROUP printer-attributes-tag EXPECT finishings-supported OF-TYPE enum IN-GROUP printer-attributes-tag WITH-VALUE 3 - EXPECT media-default OF-TYPE keyword|name IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "$MEDIA_REGEX" + EXPECT media-default OF-TYPE no-value|keyword|name IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "$MEDIA_REGEX" + EXPECT ?media-ready OF-TYPE keyword|name IN-GROUP printer-attributes-tag WITH-VALUE "$MEDIA_REGEX" EXPECT media-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag WITH-VALUE "$MEDIA_REGEX" - EXPECT orientation-requested-default OF-TYPE enum,no-value IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE no-value,3,4,5,6 + EXPECT orientation-requested-default OF-TYPE no-value|enum IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE 3,4,5,6 EXPECT orientation-requested-supported OF-TYPE enum IN-GROUP printer-attributes-tag WITH-VALUE 3,4,5,6 EXPECT output-bin-default OF-TYPE keyword|name IN-GROUP printer-attributes-tag COUNT 1 EXPECT output-bin-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag @@ -63,6 +64,40 @@ DEFINE MEDIA_REGEX "/^((custom|na|asme|roc|oe)_[a-z0-9][-a-z0-9]*_([1-9][0-9]*(\ EXPECT sides-default OF-TYPE keyword IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^(one-sided|two-sided-long-edge|two-sided-short-edge)$$/" EXPECT sides-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "/^(one-sided|two-sided-long-edge|two-sided-short-edge)$$/" + # Optional media-col support + EXPECT ?media-col-default OF-TYPE collection IN-GROUP printer-attributes-tag COUNT 1 + EXPECT ?media-col-ready OF-TYPE collection IN-GROUP printer-attributes-tag + EXPECT ?media-col-supported OF-TYPE keyword IN-GROUP printer-attributes-tag + EXPECT media-col-supported WITH-VALUE media-back-coating DEFINE-MATCH HAVE_MEDIA_BACK_COATING + EXPECT media-col-supported WITH-VALUE media-color DEFINE-MATCH HAVE_MEDIA_COLOR + EXPECT media-col-supported WITH-VALUE media-front-coating DEFINE-MATCH HAVE_MEDIA_FRONT_COATING + EXPECT media-col-supported WITH-VALUE media-grain DEFINE-MATCH HAVE_MEDIA_GRAIN + EXPECT media-col-supported WITH-VALUE media-hole-count DEFINE-MATCH HAVE_MEDIA_HOLE_COUNT + EXPECT media-col-supported WITH-VALUE media-info DEFINE-MATCH HAVE_MEDIA_INFO + EXPECT media-col-supported WITH-VALUE media-key DEFINE-MATCH HAVE_MEDIA_KEY + EXPECT media-col-supported WITH-VALUE media-order-count DEFINE-MATCH HAVE_MEDIA_ORDER_COUNT + EXPECT media-col-supported WITH-VALUE media-pre-printed DEFINE-MATCH HAVE_MEDIA_PRE_PRINTED + EXPECT media-col-supported WITH-VALUE media-recycled DEFINE-MATCH HAVE_MEDIA_RECYCLED + EXPECT media-col-supported WITH-VALUE media-size DEFINE-MATCH HAVE_MEDIA_SIZE + EXPECT media-col-supported WITH-VALUE media-tooth DEFINE-MATCH HAVE_MEDIA_TOOTH + EXPECT media-col-supported WITH-VALUE media-type DEFINE-MATCH HAVE_MEDIA_TYPE + EXPECT media-col-supported WITH-VALUE media-weight-metric DEFINE-MATCH HAVE_MEDIA_WEIGHT_METRIC + + EXPECT media-back-coating-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_BACK_COATING + EXPECT media-color-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_COLOR + EXPECT media-front-coating-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_FRONT_COATING + EXPECT media-grain-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_GRAIN + EXPECT media-hole-count-supported OF-TYPE rangeOfInteger IN-GROUP printer-attributes-tag WITH-VALUE >-1 IF-DEFINED HAVE_MEDIA_HOLE_COUNT + EXPECT media-info-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_INFO + EXPECT media-key-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_KEY + EXPECT media-order-count-supported OF-TYPE rangeOfInteger IN-GROUP printer-attributes-tag WITH-VALUE >0 IF-DEFINED HAVE_MEDIA_ORDER_COUNT + EXPECT media-pre-printed-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_PRE_PRINTED + EXPECT media-recycled-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_RECYCLED + EXPECT media-size-supported OF-TYPE collection IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_SIZE + EXPECT media-tooth-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_TOOTH + EXPECT media-type-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_TYPE + EXPECT media-weight-metric-supported OF-TYPE rangeOfInteger IN-GROUP printer-attributes-tag WITH-VALUE >-1 IF-DEFINED HAVE_MEDIA_WEIGHT_METRIC + # Printer description attributes EXPECT color-supported OF-TYPE boolean IN-GROUP printer-attributes-tag COUNT 1 EXPECT pages-per-minute OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 diff --git a/test/ipp-2.2.test b/test/ipp-2.2.test index 935a62da9..3042ec247 100644 --- a/test/ipp-2.2.test +++ b/test/ipp-2.2.test @@ -46,6 +46,8 @@ INCLUDE "ipp-2.1.test" # Printer description attributes EXPECT job-creation-attributes-supported OF-TYPE keyword IN-GROUP printer-attributes-tag EXPECT job-ids-supported OF-TYPE boolean IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE 1 + EXPECT media-col-ready + EXPECT media-ready EXPECT multiple-document-jobs-supported OF-TYPE boolean IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE 1 EXPECT printer-alert OF-TYPE octetString IN-GROUP printer-attributes-tag EXPECT printer-alert-description OF-TYPE text IN-GROUP printer-attributes-tag SAME-COUNT-AS printer-alert diff --git a/test/ippserver.c b/test/ippserver.c index dbe9cbd93..23b4ed970 100644 --- a/test/ippserver.c +++ b/test/ippserver.c @@ -265,6 +265,7 @@ static _ipp_job_t *create_job(_ipp_client_t *client); static int create_listener(int family, int *port); static ipp_t *create_media_col(const char *media, const char *type, int width, int length, int margins); +static ipp_t *create_media_size(int width, int length); static _ipp_printer_t *create_printer(const char *servername, const char *name, const char *location, const char *make, const char *model, @@ -803,7 +804,7 @@ copy_job_attributes( _ipp_job_t *job, /* I - Job */ cups_array_t *ra) /* I - requested-attributes */ { - copy_attributes(client->response, job->attrs, ra, IPP_TAG_ZERO, 0); + copy_attributes(client->response, job->attrs, ra, IPP_TAG_JOB, 0); if (!ra || cupsArrayFind(ra, "job-printer-up-time")) ippAddInteger(client->response, IPP_TAG_JOB, IPP_TAG_INTEGER, @@ -1124,15 +1125,11 @@ create_media_col(const char *media, /* I - Media name */ int margins) /* I - Value for margins */ { ipp_t *media_col = ippNew(), /* media-col value */ - *media_size = ippNew(); /* media-size value */ + *media_size = create_media_size(width, length); + /* media-size value */ char media_key[256]; /* media-key value */ - ippAddInteger(media_size, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "x-dimension", - width); - ippAddInteger(media_size, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "y-dimension", - length); - snprintf(media_key, sizeof(media_key), "%s_%s%s", media, type, margins == 0 ? "_borderless" : ""); @@ -1157,6 +1154,26 @@ create_media_col(const char *media, /* I - Media name */ /* + * 'create_media_size()' - Create a media-size value. + */ + +static ipp_t * /* O - media-col collection */ +create_media_size(int width, /* I - x-dimension in 2540ths */ + int length) /* I - y-dimension in 2540ths */ +{ + ipp_t *media_size = ippNew(); /* media-size value */ + + + ippAddInteger(media_size, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "x-dimension", + width); + ippAddInteger(media_size, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "y-dimension", + length); + + return (media_size); +} + + +/* * 'create_printer()' - Create, register, and listen for connections to a * printer object. */ @@ -1192,8 +1209,10 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default) *ptr; /* Pointer into string */ const char *prefix; /* Prefix string */ int num_database; /* Number of database values */ - ipp_attribute_t *media_col_database; + ipp_attribute_t *media_col_database, /* media-col-database value */ + *media_size_supported; + /* media-size-supported value */ ipp_t *media_col_default; /* media-col-default value */ ipp_value_t *media_col_value; @@ -1275,9 +1294,10 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default) IPP_QUALITY_NORMAL, IPP_QUALITY_HIGH }; - static const char * const referenced_uri_scheme_supported[] = - { /* referenced-uri-scheme-supported */ + static const char * const reference_uri_schemes_supported[] = + { /* reference-uri-schemes-supported */ "file", + "ftp", "http" #ifdef HAVE_SSL , "https" @@ -1624,6 +1644,18 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default) (int)(sizeof(media_supported) / sizeof(media_supported[0])), NULL, media_supported); + /* media-size-supported */ + media_size_supported = ippAddCollections(printer->attrs, IPP_TAG_PRINTER, + "media-size-supported", + (int)(sizeof(media_col_sizes) / + sizeof(media_col_sizes[0])), + NULL); + for (i = 0; + i < (int)(sizeof(media_col_sizes) / sizeof(media_col_sizes[0])); + i ++) + media_size_supported->values[i].collection = + create_media_size(media_col_sizes[i][0], media_col_sizes[i][1]); + /* media-top-margin-supported */ ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "media-top-margin-supported", @@ -1631,6 +1663,13 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default) sizeof(media_xxx_margin_supported[0])), media_xxx_margin_supported); + /* media-type-supported */ + ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY, + "media-type-supported", + (int)(sizeof(media_type_supported) / + sizeof(media_type_supported[0])), + NULL, media_type_supported); + /* multiple-document-handling-supported */ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY, "multiple-document-handling-supported", @@ -1742,13 +1781,13 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default) ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uri-supported", NULL, uri); - /* referenced-uri-scheme-supported */ + /* reference-uri-scheme-supported */ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URISCHEME | IPP_TAG_COPY, - "referenced-uri-scheme-supported", - (int)(sizeof(referenced_uri_scheme_supported) / - sizeof(referenced_uri_scheme_supported[0])), - NULL, referenced_uri_scheme_supported); + "reference-uri-schemes-supported", + (int)(sizeof(reference_uri_schemes_supported) / + sizeof(reference_uri_schemes_supported[0])), + NULL, reference_uri_schemes_supported); /* sides-default */ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD | IPP_TAG_COPY, diff --git a/test/ipptool.c b/test/ipptool.c index de47d8fe5..59b83253d 100644 --- a/test/ipptool.c +++ b/test/ipptool.c @@ -734,6 +734,7 @@ do_tests(_cups_vars_t *vars, /* I - Variables */ int num_displayed = 0; /* Number of displayed attributes */ char *displayed[200]; /* Displayed attributes */ size_t widths[200]; /* Width of columns */ + cups_array_t *a; /* Duplicate attribute array */ /* @@ -2108,7 +2109,7 @@ do_tests(_cups_vars_t *vars, /* I - Variables */ print_attr(attrptr, NULL); } - printf(" %-69.69s [", name); + printf(" %-68.68s [", name); fflush(stdout); } @@ -2314,14 +2315,50 @@ do_tests(_cups_vars_t *vars, /* I - Variables */ strlen(attrptr->values[0].string.text) > 1023))) prev_pass = pass = 0; + a = cupsArrayNew((cups_array_func_t)strcmp, NULL); + for (attrptr = response->attrs, group = attrptr->group_tag; attrptr; attrptr = attrptr->next) { - if (attrptr->group_tag < group && attrptr->group_tag != IPP_TAG_ZERO) + if (attrptr->group_tag != group) { - prev_pass = pass = 0; - break; + cupsArrayClear(a); + + switch (attrptr->group_tag) + { + case IPP_TAG_OPERATION : + prev_pass = pass = 0; + break; + + case IPP_TAG_UNSUPPORTED_GROUP : + if (group != IPP_TAG_OPERATION) + prev_pass = pass = 0; + break; + + case IPP_TAG_JOB : + case IPP_TAG_PRINTER : + if (group != IPP_TAG_OPERATION && + group != IPP_TAG_UNSUPPORTED_GROUP) + prev_pass = pass = 0; + break; + + case IPP_TAG_SUBSCRIPTION : + if (group > attrptr->group_tag && + group != IPP_TAG_DOCUMENT) + prev_pass = pass = 0; + break; + + default : + if (group > attrptr->group_tag) + prev_pass = pass = 0; + break; + } + + if (!pass) + break; + + group = attrptr->group_tag; } if (!validate_attr(attrptr, 0)) @@ -2329,8 +2366,21 @@ do_tests(_cups_vars_t *vars, /* I - Variables */ prev_pass = pass = 0; break; } + + if (attrptr->name) + { + if (cupsArrayFind(a, attrptr->name)) + { + prev_pass = pass = 0; + break; + } + + cupsArrayAdd(a, attrptr->name); + } } + cupsArrayDelete(a); + for (i = 0; i < num_statuses; i ++) { if (statuses[i].if_defined && @@ -2354,96 +2404,94 @@ do_tests(_cups_vars_t *vars, /* I - Variables */ if (i == num_statuses && num_statuses > 0) prev_pass = pass = 0; - else + + for (i = num_expects, expect = expects; i > 0; i --, expect ++) { - for (i = num_expects, expect = expects; i > 0; i --, expect ++) + if (expect->if_defined && !get_variable(vars, expect->if_defined)) + continue; + + if (expect->if_not_defined && + get_variable(vars, expect->if_not_defined)) + continue; + + found = ippFindAttribute(response, expect->name, IPP_TAG_ZERO); + + if ((found && expect->not_expect) || + (!found && !(expect->not_expect || expect->optional)) || + (found && !expect_matches(expect, found->value_tag)) || + (found && expect->in_group && + found->group_tag != expect->in_group)) { - if (expect->if_defined && !get_variable(vars, expect->if_defined)) - continue; + if (expect->define_no_match) + set_variable(vars, expect->define_no_match, "1"); + else if (!expect->define_match && !expect->define_value) + prev_pass = pass = 0; - if (expect->if_not_defined && - get_variable(vars, expect->if_not_defined)) - continue; + if (expect->repeat_no_match) + repeat_test = 1; - found = ippFindAttribute(response, expect->name, IPP_TAG_ZERO); + continue; + } - if ((found && expect->not_expect) || - (!found && !(expect->not_expect || expect->optional)) || - (found && !expect_matches(expect, found->value_tag)) || - (found && expect->in_group && - found->group_tag != expect->in_group)) - { - if (expect->define_no_match) - set_variable(vars, expect->define_no_match, "1"); - else if (!expect->define_match) - prev_pass = pass = 0; + if (found) + _ippAttrString(found, buffer, sizeof(buffer)); - if (expect->repeat_no_match) - repeat_test = 1; + if (found && + !with_value(expect->with_value, expect->with_regex, found, 0, + buffer, sizeof(buffer))) + { + if (expect->define_no_match) + set_variable(vars, expect->define_no_match, "1"); + else if (!expect->define_match && !expect->define_value) + prev_pass = pass = 0; - continue; - } + if (expect->repeat_no_match) + repeat_test = 1; - if (found) - _ippAttrString(found, buffer, sizeof(buffer)); + continue; + } - if (found && - !with_value(expect->with_value, expect->with_regex, found, 0, - buffer, sizeof(buffer))) - { - if (expect->define_no_match) - set_variable(vars, expect->define_no_match, "1"); - else if (!expect->define_match && !expect->define_value) - prev_pass = pass = 0; + if (found && expect->count > 0 && + found->num_values != expect->count) + { + if (expect->define_no_match) + set_variable(vars, expect->define_no_match, "1"); + else if (!expect->define_match && !expect->define_value) + prev_pass = pass = 0; - if (expect->repeat_no_match) - repeat_test = 1; + if (expect->repeat_no_match) + repeat_test = 1; - continue; - } + continue; + } + + if (found && expect->same_count_as) + { + attrptr = ippFindAttribute(response, expect->same_count_as, + IPP_TAG_ZERO); - if (found && expect->count > 0 && - found->num_values != expect->count) + if (!attrptr || attrptr->num_values != found->num_values) { if (expect->define_no_match) set_variable(vars, expect->define_no_match, "1"); else if (!expect->define_match && !expect->define_value) prev_pass = pass = 0; - if (expect->repeat_no_match) - repeat_test = 1; + if (expect->repeat_no_match) + repeat_test = 1; continue; } + } - if (found && expect->same_count_as) - { - attrptr = ippFindAttribute(response, expect->same_count_as, - IPP_TAG_ZERO); - - if (!attrptr || attrptr->num_values != found->num_values) - { - if (expect->define_no_match) - set_variable(vars, expect->define_no_match, "1"); - else if (!expect->define_match && !expect->define_value) - prev_pass = pass = 0; - - if (expect->repeat_no_match) - repeat_test = 1; - - continue; - } - } - - if (found && expect->define_match) - set_variable(vars, expect->define_match, "1"); + if (found && expect->define_match) + set_variable(vars, expect->define_match, "1"); - if (found && expect->define_value) - set_variable(vars, expect->define_value, buffer); + if (found && expect->define_value) + set_variable(vars, expect->define_value, buffer); - if (found && expect->repeat_match) - repeat_test = 1; - } + if (found && expect->repeat_match) + repeat_test = 1; } } @@ -2505,70 +2553,47 @@ do_tests(_cups_vars_t *vars, /* I - Variables */ else if (!prev_pass) fprintf(stderr, "%s\n", cupsLastErrorString()); - if (prev_pass && Output != _CUPS_OUTPUT_PLIST && - Output != _CUPS_OUTPUT_QUIET && !Verbosity && num_displayed > 0) + if (prev_pass && Output >= _CUPS_OUTPUT_LIST && !Verbosity && + num_displayed > 0) { - if (Output >= _CUPS_OUTPUT_LIST) + size_t width; /* Length of value */ + + for (i = 0; i < num_displayed; i ++) { - size_t width; /* Length of value */ + widths[i] = strlen(displayed[i]); + for (attrptr = ippFindAttribute(response, displayed[i], IPP_TAG_ZERO); + attrptr; + attrptr = ippFindNextAttribute(response, displayed[i], + IPP_TAG_ZERO)) + { + width = _ippAttrString(attrptr, NULL, 0); + if (width > widths[i]) + widths[i] = width; + } + } - for (i = 0; i < num_displayed; i ++) - { - widths[i] = strlen(displayed[i]); + if (Output == _CUPS_OUTPUT_CSV) + print_csv(NULL, num_displayed, displayed, widths); + else + print_line(NULL, num_displayed, displayed, widths); - for (attrptr = ippFindAttribute(response, displayed[i], IPP_TAG_ZERO); - attrptr; - attrptr = ippFindNextAttribute(response, displayed[i], - IPP_TAG_ZERO)) - { - width = _ippAttrString(attrptr, NULL, 0); - if (width > widths[i]) - widths[i] = width; - } - } + attrptr = response->attrs; - if (Output == _CUPS_OUTPUT_CSV) - print_csv(NULL, num_displayed, displayed, widths); - else - print_line(NULL, num_displayed, displayed, widths); + while (attrptr) + { + while (attrptr && attrptr->group_tag <= IPP_TAG_OPERATION) + attrptr = attrptr->next; - attrptr = response->attrs; + if (attrptr) + { + if (Output == _CUPS_OUTPUT_CSV) + print_csv(attrptr, num_displayed, displayed, widths); + else + print_line(attrptr, num_displayed, displayed, widths); - while (attrptr) - { - while (attrptr && attrptr->group_tag <= IPP_TAG_OPERATION) + while (attrptr && attrptr->group_tag > IPP_TAG_OPERATION) attrptr = attrptr->next; - - if (attrptr) - { - if (Output == _CUPS_OUTPUT_CSV) - print_csv(attrptr, num_displayed, displayed, widths); - else - print_line(attrptr, num_displayed, displayed, widths); - - while (attrptr && attrptr->group_tag > IPP_TAG_OPERATION) - attrptr = attrptr->next; - } - } - } - else - { - for (attrptr = response->attrs; - attrptr != NULL; - attrptr = attrptr->next) - { - if (attrptr->name) - { - for (i = 0; i < num_displayed; i ++) - { - if (!strcmp(displayed[i], attrptr->name)) - { - print_attr(attrptr, NULL); - break; - } - } - } } } } @@ -2695,18 +2720,71 @@ do_tests(_cups_vars_t *vars, /* I - Variables */ (int)strlen(attrptr->values[0].string.text)); } + a = cupsArrayNew((cups_array_func_t)strcmp, NULL); + for (attrptr = response->attrs, group = attrptr->group_tag; attrptr; attrptr = attrptr->next) { - if (attrptr->group_tag < group && attrptr->group_tag != IPP_TAG_ZERO) - print_test_error("Attribute groups out of order (%s < %s)", - ippTagString(attrptr->group_tag), - ippTagString(group)); + if (attrptr->group_tag != group) + { + cupsArrayClear(a); + + switch (attrptr->group_tag) + { + case IPP_TAG_OPERATION : + prev_pass = pass = 0; + break; + + case IPP_TAG_UNSUPPORTED_GROUP : + if (group != IPP_TAG_OPERATION) + print_test_error("Attribute groups out of order (%s < %s)", + ippTagString(attrptr->group_tag), + ippTagString(group)); + break; + + case IPP_TAG_JOB : + case IPP_TAG_PRINTER : + if (group != IPP_TAG_OPERATION && + group != IPP_TAG_UNSUPPORTED_GROUP) + print_test_error("Attribute groups out of order (%s < %s)", + ippTagString(attrptr->group_tag), + ippTagString(group)); + break; + + case IPP_TAG_SUBSCRIPTION : + if (group > attrptr->group_tag && + group != IPP_TAG_DOCUMENT) + print_test_error("Attribute groups out of order (%s < %s)", + ippTagString(attrptr->group_tag), + ippTagString(group)); + break; + + default : + if (group > attrptr->group_tag) + print_test_error("Attribute groups out of order (%s < %s)", + ippTagString(attrptr->group_tag), + ippTagString(group)); + break; + } + + group = attrptr->group_tag; + } validate_attr(attrptr, 1); + + if (attrptr->name) + { + if (cupsArrayFind(a, attrptr->name)) + print_test_error("Duplicate \"%s\" attribute in %s group", + attrptr->name, ippTagString(group)); + + cupsArrayAdd(a, attrptr->name); + } } + cupsArrayDelete(a); + for (i = 0; i < num_statuses; i ++) { if (statuses[i].if_defined && @@ -2817,11 +2895,34 @@ do_tests(_cups_vars_t *vars, /* I - Variables */ puts("</array>"); } + if (num_displayed > 0 && !Verbosity && + (Output == _CUPS_OUTPUT_TEST || Output == _CUPS_OUTPUT_PLIST)) + { + for (attrptr = response->attrs; + attrptr != NULL; + attrptr = attrptr->next) + { + if (attrptr->name) + { + for (i = 0; i < num_displayed; i ++) + { + if (!strcmp(displayed[i], attrptr->name)) + { + print_attr(attrptr, NULL); + break; + } + } + } + } + } + skip_error: if (Output == _CUPS_OUTPUT_PLIST) puts("</dict>"); + fflush(stdout); + ippDelete(response); response = NULL; @@ -5056,8 +5157,6 @@ with_value(char *value, /* I - Value string */ valptr = value; - if (!strncmp(valptr, "no-value,", 9)) - valptr += 9; while (isspace(*valptr & 255) || isdigit(*valptr & 255) || *valptr == '-' || *valptr == ',' || *valptr == '<' || @@ -5122,8 +5221,6 @@ with_value(char *value, /* I - Value string */ valptr = value; - if (!strncmp(valptr, "no-value,", 9)) - valptr += 9; while (isspace(*valptr & 255) || isdigit(*valptr & 255) || *valptr == '-' || *valptr == ',' || *valptr == '<' || @@ -5207,13 +5304,8 @@ with_value(char *value, /* I - Value string */ break; case IPP_TAG_NOVALUE : - if (!strcmp(value, "no-value") || !strncmp(value, "no-value,", 9)) - { - strlcpy(matchbuf, "no-value", matchlen); - return (1); - } - else - return (0); + case IPP_TAG_UNKNOWN : + return (1); case IPP_TAG_CHARSET : case IPP_TAG_KEYWORD : diff --git a/xcode/CUPS.xcodeproj/project.pbxproj b/xcode/CUPS.xcodeproj/project.pbxproj index 5cc40ed70..66174ef80 100644 --- a/xcode/CUPS.xcodeproj/project.pbxproj +++ b/xcode/CUPS.xcodeproj/project.pbxproj @@ -1384,40 +1384,14 @@ 7263EE3913330EC500BA4D44 /* libldap.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libldap.dylib; path = SDKs/MacOSX10.6.sdk/usr/lib/libldap.dylib; sourceTree = DEVELOPER_DIR; }; 726AD6F7135E88F0002C930D /* ippserver */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ippserver; sourceTree = BUILT_PRODUCTS_DIR; }; 726AD701135E8A90002C930D /* ippserver.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ippserver.c; path = ../test/ippserver.c; sourceTree = "<group>"; }; - 7271881613746EA8001A2036 /* bannertops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = bannertops.c; path = ../filter/bannertops.c; sourceTree = "<group>"; }; 7271881713746EA8001A2036 /* commandtops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = commandtops.c; path = ../filter/commandtops.c; sourceTree = "<group>"; }; 7271881813746EA8001A2036 /* common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = common.c; path = ../filter/common.c; sourceTree = "<group>"; }; 7271881913746EA8001A2036 /* common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = common.h; path = ../filter/common.h; sourceTree = "<group>"; }; 7271881A13746EA8001A2036 /* gziptoany.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = gziptoany.c; path = ../filter/gziptoany.c; sourceTree = "<group>"; }; - 7271881B13746EA8001A2036 /* imagetops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = imagetops.c; path = ../filter/imagetops.c; sourceTree = "<group>"; }; - 7271881C13746EA8001A2036 /* imagetoraster.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = imagetoraster.c; path = ../filter/imagetoraster.c; sourceTree = "<group>"; }; - 7271881D13746EA8001A2036 /* pdftops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pdftops.c; path = ../filter/pdftops.c; sourceTree = "<group>"; }; - 7271881E13746EA8001A2036 /* pstext.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pstext.c; path = ../filter/pstext.c; sourceTree = "<group>"; }; - 7271881F13746EA8001A2036 /* pstext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pstext.h; path = ../filter/pstext.h; sourceTree = "<group>"; }; 7271882013746EA8001A2036 /* pstops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = pstops.c; path = ../filter/pstops.c; sourceTree = "<group>"; }; 7271882113746EA8001A2036 /* rastertoepson.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = rastertoepson.c; path = ../filter/rastertoepson.c; sourceTree = "<group>"; }; 7271882213746EA8001A2036 /* rastertohp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = rastertohp.c; path = ../filter/rastertohp.c; sourceTree = "<group>"; }; 7271882313746EA8001A2036 /* rastertolabel.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = rastertolabel.c; path = ../filter/rastertolabel.c; sourceTree = "<group>"; }; - 7271882413746EA8001A2036 /* textcommon.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = textcommon.c; path = ../filter/textcommon.c; sourceTree = "<group>"; }; - 7271882513746EA8001A2036 /* textcommon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = textcommon.h; path = ../filter/textcommon.h; sourceTree = "<group>"; }; - 7271882613746EA8001A2036 /* texttops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = texttops.c; path = ../filter/texttops.c; sourceTree = "<group>"; }; - 7271882B137498E4001A2036 /* image-bmp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "image-bmp.c"; path = "../filter/image-bmp.c"; sourceTree = "<group>"; }; - 7271882C137498E4001A2036 /* image-colorspace.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "image-colorspace.c"; path = "../filter/image-colorspace.c"; sourceTree = "<group>"; }; - 7271882D137498E4001A2036 /* image-gif.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "image-gif.c"; path = "../filter/image-gif.c"; sourceTree = "<group>"; }; - 7271882E137498E4001A2036 /* image-jpeg.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "image-jpeg.c"; path = "../filter/image-jpeg.c"; sourceTree = "<group>"; }; - 7271882F137498E4001A2036 /* image-photocd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "image-photocd.c"; path = "../filter/image-photocd.c"; sourceTree = "<group>"; }; - 72718830137498E4001A2036 /* image-pix.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "image-pix.c"; path = "../filter/image-pix.c"; sourceTree = "<group>"; }; - 72718831137498E4001A2036 /* image-png.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "image-png.c"; path = "../filter/image-png.c"; sourceTree = "<group>"; }; - 72718832137498E4001A2036 /* image-pnm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "image-pnm.c"; path = "../filter/image-pnm.c"; sourceTree = "<group>"; }; - 72718833137498E4001A2036 /* image-private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "image-private.h"; path = "../filter/image-private.h"; sourceTree = "<group>"; }; - 72718834137498E4001A2036 /* image-sgi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "image-sgi.c"; path = "../filter/image-sgi.c"; sourceTree = "<group>"; }; - 72718835137498E4001A2036 /* image-sgi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "image-sgi.h"; path = "../filter/image-sgi.h"; sourceTree = "<group>"; }; - 72718836137498E4001A2036 /* image-sgilib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "image-sgilib.c"; path = "../filter/image-sgilib.c"; sourceTree = "<group>"; }; - 72718837137498E4001A2036 /* image-sun.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "image-sun.c"; path = "../filter/image-sun.c"; sourceTree = "<group>"; }; - 72718838137498E4001A2036 /* image-tiff.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "image-tiff.c"; path = "../filter/image-tiff.c"; sourceTree = "<group>"; }; - 72718839137498E4001A2036 /* image-zoom.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "image-zoom.c"; path = "../filter/image-zoom.c"; sourceTree = "<group>"; }; - 7271883A137498E4001A2036 /* image.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = image.c; path = ../filter/image.c; sourceTree = "<group>"; }; - 7271883B137498E4001A2036 /* image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = image.h; path = ../filter/image.h; sourceTree = "<group>"; }; 7271883C1374AB14001A2036 /* mime-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "mime-private.h"; path = "../scheduler/mime-private.h"; sourceTree = "<group>"; }; 72C16CB8137B195D007E4BF4 /* file.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = file.c; path = ../scheduler/file.c; sourceTree = SOURCE_ROOT; }; 72F75A4C1336F31B004BB496 /* libcups_static.a */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libcups_static.a; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -2092,52 +2066,19 @@ 7258EADC134594A8009286F1 /* filters */ = { isa = PBXGroup; children = ( - 7271881613746EA8001A2036 /* bannertops.c */, 7271881713746EA8001A2036 /* commandtops.c */, 7271881813746EA8001A2036 /* common.c */, 7271881913746EA8001A2036 /* common.h */, 7271881A13746EA8001A2036 /* gziptoany.c */, - 7271881B13746EA8001A2036 /* imagetops.c */, - 7271881C13746EA8001A2036 /* imagetoraster.c */, - 7271881D13746EA8001A2036 /* pdftops.c */, - 7271881E13746EA8001A2036 /* pstext.c */, - 7271881F13746EA8001A2036 /* pstext.h */, 7271882013746EA8001A2036 /* pstops.c */, 7271882113746EA8001A2036 /* rastertoepson.c */, 7271882213746EA8001A2036 /* rastertohp.c */, 7271882313746EA8001A2036 /* rastertolabel.c */, 7258EAEC134594EB009286F1 /* rastertopwg.c */, - 7271882413746EA8001A2036 /* textcommon.c */, - 7271882513746EA8001A2036 /* textcommon.h */, - 7271882613746EA8001A2036 /* texttops.c */, ); name = filters; sourceTree = "<group>"; }; - 7271882A1374988C001A2036 /* Unused */ = { - isa = PBXGroup; - children = ( - 7271882B137498E4001A2036 /* image-bmp.c */, - 7271882C137498E4001A2036 /* image-colorspace.c */, - 7271882D137498E4001A2036 /* image-gif.c */, - 7271882E137498E4001A2036 /* image-jpeg.c */, - 7271882F137498E4001A2036 /* image-photocd.c */, - 72718830137498E4001A2036 /* image-pix.c */, - 72718831137498E4001A2036 /* image-png.c */, - 72718832137498E4001A2036 /* image-pnm.c */, - 72718833137498E4001A2036 /* image-private.h */, - 72718834137498E4001A2036 /* image-sgi.c */, - 72718835137498E4001A2036 /* image-sgi.h */, - 72718836137498E4001A2036 /* image-sgilib.c */, - 72718837137498E4001A2036 /* image-sun.c */, - 72718838137498E4001A2036 /* image-tiff.c */, - 72718839137498E4001A2036 /* image-zoom.c */, - 7271883A137498E4001A2036 /* image.c */, - 7271883B137498E4001A2036 /* image.h */, - ); - name = Unused; - sourceTree = "<group>"; - }; 72BF96351333042100B1EAD7 = { isa = PBXGroup; children = ( @@ -2163,7 +2104,6 @@ 72F75A681336FA42004BB496 /* libcupsimage */ = { isa = PBXGroup; children = ( - 7271882A1374988C001A2036 /* Unused */, 72F75A691336FA8A004BB496 /* error.c */, 72F75A6A1336FA8A004BB496 /* interpret.c */, 72F75A6B1336FA8A004BB496 /* raster.c */, @@ -2860,7 +2800,7 @@ 72BF96371333042100B1EAD7 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0410; + LastUpgradeCheck = 0420; ORGANIZATIONNAME = "Apple Inc."; }; buildConfigurationList = 72BF963A1333042100B1EAD7 /* Build configuration list for PBXProject "CUPS" */; |