summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES-1.5.txt10
-rw-r--r--CHANGES-IPPTOOL.txt35
-rw-r--r--cups/array-private.h2
-rw-r--r--cups/http.c2
-rw-r--r--cups/ipp-support.c102
-rw-r--r--cups/ipp.c2
-rw-r--r--cups/ipp.h1
-rw-r--r--man/lp.man6
-rw-r--r--notifier/dbus.c9
-rw-r--r--systemv/cupstestppd.c85
-rw-r--r--test/ipp-1.1.test205
-rw-r--r--test/ipp-2.0.test41
-rw-r--r--test/ipp-2.2.test2
-rw-r--r--test/ippserver.c69
-rw-r--r--test/ipptool.c372
-rw-r--r--xcode/CUPS.xcodeproj/project.pbxproj62
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" */;