Skip to content

Testing and repairs including JSON Schema generation enhancements #93

Testing and repairs including JSON Schema generation enhancements

Testing and repairs including JSON Schema generation enhancements #93

GitHub Actions / XSpec Test Results succeeded Jun 7, 2024 in 0s

All 213 tests pass, 16 skipped in 0s

  5 files  +  1   90 suites  +46   0s ⏱️ ±0s
229 tests +114  213 ✅ +114  16 💤 ±0  0 ❌ ±0 
239 runs  +115  223 ✅ +115  16 💤 ±0  0 ❌ ±0 

Results for commit 74f3a11. ± Comparison against earlier commit 24e5007.

Annotations

Check notice on line 0 in .github

See this annotation in the file changed.

@github-actions github-actions / XSpec Test Results

16 skipped tests found

There are 16 skipped tests, see "Raw output" for the full list of skipped tests.
Raw output
A key field with a pattern brings a qualified XPath with a string replacement
Current generation matches target in tiny_inspector-working.xsl XSLT transform element with correct attributes
Key composition - a constraint with two key fields - gix.683 brings an XPath suitable for selecting its key values, as a sequence
Messy broken stuff is found to be broken
Nested choices expands into four (2 x 2)
[A.0] A certain failure fails, because false is not true
[A.0] always fails as it is false
[B.1] A date conforming to all rules except the one constraining the values when the computer @id starts with 'April' brings back an AVCV WARNING
[C.2]  A compound extension tests castability for the base type, and all patterns
[C.3]  A looping extension should work up to but not including where it loops
[C.4] Exercising a different test reports breaking a different rule
[G.3] Clean test of the same against valid content throws nothing
[H.1] A flag defined as a string but targeted with  a 'date' field constraint - happens to be a permitted date brings back nothing
[H.2] A flag defined as a string but targeted with  a 'date' field constraint - looks like a date, but not enumerated in extra constraint co-occurrent with id starting with 'April' brings back an AVCV error
[H.3] A flag defined as a string but targeted with  a 'date' field constraint - not looking like a date throws an MDCV error
[H.4] Similarly, but this time an additional allowed-values constraint also applies b/c @id starts-with 'April' throws an additional error, for two constraints violated, AVCV and MDCV

Check notice on line 0 in .github

See this annotation in the file changed.

@github-actions github-actions / XSpec Test Results

229 tests found

There are 229 tests, see "Raw output" for the full list of tests.
Raw output
A key field with a pattern brings a qualified XPath with a string replacement
Aliased Another global-scope assembly with multiple team members, recursive Bar-separated result has one path per item in $team
Aliased Another global-scope assembly with multiple team members, recursive Union of paths of the form X/Y and X/Y//Y, for all $team members
Aliased Global-scope assembly with multiple team members, recursive Bar-separated result has one path per item in $team
Aliased Global-scope assembly with multiple team members, recursive Union of paths of the form X/Y and X/Y//Y, for all $team members
Aliased Global-scope assembly with one team member Path to location element from its parent
Aliased Global-scope field with multiple team members, not recursive Bar-separated result has one path per item in $team
Aliased Global-scope field with multiple team members, not recursive Union of (non-distinct) paths to value element for all $team members
And similarly Corresponds to the cached testing copy
At the root A JSON Map is produced
At the root with a string property marking the JSON as a schema, version draft-07
Attribute
Attributes on a field that reach this template Nothing
Attributes on a flag that reach this template Nothing
Attributes on an assembly including _base-uri, _key-name, and _using-root-name Nothing
Attributes on an assembly including _key-ref Nothing
Basic case: Global-scope field with @gi Template with no priority; field with in-json=SCALAR and potential key attr; markup-multiline value
Basic external - Computer metaschema XSLT transform element with correct attributes
Basic external - Tiny metaschema XSLT transform element with correct attributes
Basic inline XSLT transform element with correct attributes
Basic inline comes through
Check @in-json:  Flag does not have @as-type attribute in-json uses default value of 'string'
Check @in-json:  Flag's @as-type attribute maps to non-string data type in-json uses value based on flag/@as-type
Check @in-json:  Flag's @as-type attribute maps to string data type in-json uses value based on flag/@as-type
Check @priority:  Both flag and parent have global scope Template rule has no priority attribute
Check @priority:  Flag does not have global scope but parent does, and... flag has multiple global assembly ancestors but parent is not assembly Template rule has priority 3, not 4; count stops at nearest global assembly ancestor
Check @priority:  Flag does not have global scope but parent does, and... flag has multiple global assembly ancestors, including parent of flag Template rule has priority 1; count stops at first global assembly ancestor
Check @priority:  Flag does not have global scope but parent does, and... flag has one assembly ancestor Template rule has priority 1
Check @priority:  Neither flag nor parent has global scope Template rule has priority 6, from # of ancestor-or-self nodes
Choice among a field and two assemblies Result of make-xml-pull mode on child elements
Choice between an assembly and a group Result of make-xml-pull mode on child elements
Clean stuff comes through cleanly
Comment with fixed text
Contains assembly/@gi XSLT strip-space element
Contains assembly/@gi listing distinct @gi values
Contains no assemblies XSLT strip-space element listing no elements
Copy of attribute
Current generation matches target in tiny_inspector-working.xsl XSLT transform element with correct attributes
Diagnostic for unexpected match, with gi and key attributes
Each attribute of the context yields in-json attribute with value 'number'
Each attribute of the context yields in-json attribute with value 'string'
Element other than flag, with @gi (flag uses priority-11 template) Path step for element named after gi
Element with @json-key-flag = flag/@name Nothing, for this XSLT in isolation
Flag with $team of flags with different ancestor @gi Union of paths to attribute of different elements
Flag with $team of flags with same ancestor @gi Paths to attribute of an element
Flag's parent has match path with multiple items separated by bar Union of paths to attribute of different elements with disambiguated paths
Global assembly Nothing
Global field in global assembly Nothing
Global field in local assembly Nothing
Global flag with multiple global assembly ancestors, including parent of flag Path with parent element and attribute from this context's @gi
Instruction to apply templates in cast-prose mode
Instruction to apply templates to grouped elements in cast-prose mode
Instruction to take value-of on the element
Key composition - a constraint with a single key field - gix.683 brings an XPath suitable for selecting its key values, as a sequence
Key composition - a constraint with two key fields - gix.683 brings an XPath suitable for selecting its key values, as a sequence
Line break followed by global variable
Local assembly whose ancestor contains recursive nesting Path including all ancestors having @gi
Local assembly with two ancestors having @gi Path including all ancestors having @gi
Messy broken stuff is found to be broken
Messy stuff comes through cleanly
Model contains markup-line value Template to cast prose contents into supermodel namespace
Model contains markup-multiline value Template to cast prose contents into supermodel namespace
Model contains no values of any type Nothing
Model contains values but not type markup-line or markup-multiline Nothing
Model whose flags have distinct @_key-name values that shadow duplicate @_metaschema-xml-id values XSLT template for each distinct pair of @gi and either @_key-name (1st choice) or @_metaschema-xml-id (fallback)
Model with duplicate @_key-name values across flags XSLT template for each distinct pair of @gi and @_key-name
Model with duplicate @_metaschema-xml-id and @_key-name values across flags XSLT template for each distinct pair of either @_key-name (1st choice) or @_metaschema-xml-id (fallback)
Model with global assemblies with @gi duplication and aliasing One XSLT template for each distinct pair of @gi and @_key-name, with disambiguated @match
Model with global fields with @gi duplication and aliasing One XSLT template for each distinct pair of @gi and @_key-name, with disambiguated @match
Model with local assemblies and fields XSLT template for each local assembly and each local field
Model with markup-line and/or markup-multiline values Stylesheet has one match=* mode=cast-prose template
Model with multiple @gi values across global assemblies, with some duplication but no aliasing One XSLT template for each distinct @gi value, regardless of assembly hierarchy
Model with multiple @gi values across global fields, with some duplication but no aliasing One XSLT template for each distinct @gi value; sequence is global assembly, then global field, then local
Model with multiple unique @_key-name values across flags XSLT template for each distinct pair of @gi and @_key-name
Model with multiple unique @_metaschema-xml-id values across flags XSLT template for each distinct pair of @gi and @_metaschema-xml-id
Nested choices expands into four (2 x 2)
Non-aliased Non-flag element with global scope @gi as an element name
Non-aliased group that has a child with global scope Child's @gi as an element name
Non-flag element without @gi, where descendant has @gi Path step for element named after descendant's gi
Non-global flag Path with parent element and attribute from this context's @gi
Nothing
Nothing; interface is not overridden
Parent is model XSLT:if element
Parent is not model Nothing
Path step for attribute named after gi
Reached make-json-pull mode for the context element
Reached make-template mode for the context element
Reached make-xml-pull mode for the context element
Recursive assembly, Child of group container One template only
Recursive assembly, Child of group container sm:assembly has make-xml-pull results for parent group and grandparent assembly
Recursive assembly, Group element sm:group has make-xml-pull results for child assembly and parent group
Same as basic case but with local scope Template with priority=3 (and deeper match path)
Skeletal case with no assemblies, flags, or fields Schema name and version appear in comment (confirm fix for #62)
Skeletal case with no assemblies, flags, or fields XSLT strip-space, comments, global variable, and hard-coded line breaks
Skeletal case with no assemblies, flags, or fields XSLT stylesheet element with correct attributes
String concatenating text from make-xml-match mode for context element
With some markup-multiline also comes through
XML comment with some text from make-xml-match mode (stubbed for testing)
[A.0] A certain failure fails, because false is not true
[A.0] always fails as it is false
[A.10] invalid10.xml appears not to be valid
[A.1]  A simple extension Base type of Base64Datatype is reported to be xs:base64Binary
[A.1] A field with a value out of compliance with its enumeration - literally wrong an error is reported
[A.1] A simple model passes through
[A.1] Comment is dropped
[A.1] For April 0 0th day is not castable
[A.1] For a known but incorrect element at the root (document level) an error is reported
[A.1] invalid1.xml appears not to be valid
[A.1] invalid1.xml is not even TINY data, so egregriously invalid, and appears not to be valid
[A.2]  A two-step extension brings back two simpleType elements
[A.2] A model with a choice expands into two
[A.2] An empty field whose value must be enumerated brings an error showing the empty string as '(empty)', along with a data type constraint error
[A.2] For April 1 1st day is castable
[A.2] For an element with a known name, but out of place an error is reported
[A.2] Processing instruction is dropped
[A.2] invalid2.xml appears not to be valid
[A.3] A field with a value out of compliance with its enumeration - wrong CASE, so literally wrong brings an error
[A.3] A kind-of crazy case expands into twelve (2 x 2 x 3)
[A.3] For April 31 31st is not castable
[A.3] invalid3.xml appears not to be valid
[A.4] 13 13? 13th month is not castable
[A.4] A field with a value out of compliance with its enumeration - extra whitespace brings two errors
[A.4] invalid4.xml appears not to be valid
[A.5] A Leap Day is castable
[A.5] A field with a value in compliance with its enumeration throws no error
[A.5] invalid5.xml appears not to be valid
[A.6] A fake Leap Day is not castable
[A.6] invalid6.xml appears not to be valid
[A.7] invalid7.xml appears not to be valid
[A.8] invalid8.xml appears not to be valid
[A.9] invalid9.xml appears not to be valid
[B.1]  calling a type calling a type that calls back (erroneously) A circular reference returns nothing
[B.1] - A 'computer' document comes through as a copy with a 'validation' wrapper with metadata
[B.1] A date conforming to all rules except the one constraining the values when the computer @id starts with 'April' brings back an AVCV WARNING
[B.1] Comment is copied
[B.1] For an attribute with a known name, but out of place an error is reported
[B.1] The 'sheet' assembly (with a choice) Is consistent with the handmade corrected model
[B.1] bigbadtiny.xml appears to be valid
[B.1] valid1.xml appears to be valid
[B.2]  calling a type that refers into such a loop An indirectly circular reference returns nothing
[B.2] A 'computer' document in 'validate' mode remains a computer, keeping @id
[B.2] A little local data looks the same
[B.2] Processing instruction is dropped
[B.2] valid2.xml appears to be valid
[B.3]  when the chain has one link A working reference works
[B.3] A valid file instance in no mode shows it has been validated
[B.3] valid3.xml appears to be valid
[B.4]  when the chain terminates at the second A stack of two comes back
[B.4] A valid file instance in no mode brings its copy with its validation
[B.4] valid4.xml appears to be valid
[B.5]  and when it terminates at the third A stack of three comes back
[B.5] A valid instance in 'validate' mode comes through as a (clean) copy of itself
[C.1]  A simple extension tests castability and pattern
[C.1] An unknown element is marked as unexpected
[C.1] Detecting a cardinality error, apart from others - too many throws an HCCV error
[C.2]  A compound extension tests castability for the base type, and all patterns
[C.2] An unknown attribute on a known element is also marked as unexpected
[C.2] Detecting a cardinality error, apart from others - too few reports two errors, an XPKT and an HCCV
[C.3]  A looping extension should work up to but not including where it loops
[C.3] This one is okay and brings back nothing, since the rule passes
[C.4] Exercising a different test reports breaking a different rule
[D.1] A flag matching the constraint - no target looks good
[D.1] Comment is copied
[D.2] A field matching the constraint - target='.' looks good
[D.2] Processing instruction is dropped
[D.3] A field whose value doesn't match throws an error
[D.4] An empty field throws an error along with the annoying datatype error
[E.1] For an element appearing too many times an error is reported
[E.1] For an unknown element we see a single error report marking it as unexpected
[E.1] when everything is in order  no warnings come back
[E.2] when everything is in order  we get an error for the broken listing
[F.1] A valid file gets no reports
[F.1] Since @slot-no 'Slot Number' values are expected to be distinctive a violation emits as many reports as there are occasions of use (of any repeated value) - here, two (2) reports
[F.2] Given as a literal, an invalid instance produces at least one report
[F.2] Since @serial-numbern 'serial number' values are expected to be distinctive nothing is reported when they are
[F.3] An invalid file on the file system likewise produces at least one report
[F.3] This also works if the offending objects are not the same type, as long as they are all targets two reports, each for a distince uniqueness violation
[G.1] An element appearing after an optional successor an error is reported
[G.1] An expect, targeting . - value fails test throws an error
[G.2] But this one is okay and throws no error
[G.3] Clean test of the same against valid content throws nothing
[G.4] Another expect target='.', this one examining descendants, non-compliant throws an error
[G.5] Another expect target='.', this one examining good descendants brings no error because the rule passes
[H.1] A field with a value out of compliance with its enumeration - literally wrong an error is reported
[H.1] A flag defined as a string but targeted with  a 'date' field constraint - happens to be a permitted date brings back nothing
[H.2] A flag defined as a string but targeted with  a 'date' field constraint - looks like a date, but not enumerated in extra constraint co-occurrent with id starting with 'April' brings back an AVCV error
[H.2] An empty field whose value must be enumerated an error is reported, showing the empty string as '(empty)', along with another error based on a data typing constraint
[H.3] A field with a value out of compliance with its enumeration - wrong CASE, so literally wrong an error is reported
[H.3] A flag defined as a string but targeted with  a 'date' field constraint - not looking like a date throws an MDCV error
[H.4] A field with a value out of compliance with its enumeration - extra whitespace an error is reported
[H.4] Similarly, but this time an additional allowed-values constraint also applies b/c @id starts-with 'April' throws an additional error, for two constraints violated, AVCV and MDCV
[H.5] A field with a value in compliance with its enumeration throws no error
[J.1] For an attribute required but missing an error is reported
[K.1] For an unknown element at the root (document level) an error is reported
[L.1] For an unknown attribute an error is reported
[M.1] Some okay mixed content copies through unmessed-with
an error is reported
assembly Apply templates instruction on element
assembly as child of a group that has @gi Template for revision is like other results of make-template mode
assembly as child of a group that has @gi Template for wrapper is like other results of make-template mode
assembly as child of a group that has @gi XSLT templates for revision and its wrapper
assembly as child of model Template with no priority; assembly with extra XSLT:if block to provide namespace
assembly child of recursive group Apply templates instruction on element named after context's @gi
assembly, where $team tunnel parameter has multiple elements with @key XSLT:if block specifies one key value only, not list of all
field containing a flag with @key not matching field's @json-key-flag Output field uses json-key-flag from input field
field containing a flag with @key not matching field's @json-key-flag and has no in-json attribute
field that has @gi and type is markup-multiline Apply templates instruction on element
field that has @gi and type is not markup-multiline Apply templates instruction on element
field with no @gi, where @as-type=markup-multiline in both the field and its value child Confirm attributes that come from XSLT, not the context
field with no @gi, where @as-type=markup-multiline in both the field and its value child For the whole group of prose elements,
field with no @gi, where @as-type=markup-multiline in both the field and its value child and a child instruction to apply templates to the group in cast-prose mode
field with no @gi, where @as-type=markup-multiline in both the field and its value child output a field with in-json=SCALAR and various attributes from the context field
field with no @gi, where @as-type=markup-multiline in both the field and its value child with a value child having all attributes from context's value child, plus in-json=string
field without @key Confirm absence of that XSLT:if block
field without @key Template with field omitting XSLT:if test='$with-key' block
flag Apply templates instruction on attribute
flag Nothing, for this XSLT in isolation
group that has @gi Apply templates instruction on element named after group/@gi
group with no @gi and no @group-json For the whole group of elements named in child elements' @gi,
group with no @gi and no @group-json and in-json=SINGLETON_OR_ARRAY,
group with no @gi and no @group-json output a group with @key from the context group
group with no @gi and no @group-json with a child instruction to apply templates to the group
group with no @gi, with @group-json For the whole group of elements named in child elements' @gi,
group with no @gi, with @group-json output a group with @in-json and @key from the context group
group with no @gi, with @group-json with a child instruction to apply templates to the group
in-json attribute with value 'boolean'
value with key attribute value element with as-type, key, and in-json attributes, with instruction to cast value
value with key-flag attribute value element with as-type, key-flag, and in-json attributes, with instruction to cast value
whose value comes from global variable