Merge lp:~zorba-coders/zorba/fots-ctest into lp:zorba

Proposed by Chris Hillery
Status: Merged
Approved by: Chris Hillery
Approved revision: 11164
Merged at revision: 11167
Proposed branch: lp:~zorba-coders/zorba/fots-ctest
Merge into: lp:zorba
Diff against target: 7290 lines (+1731/-2755)
19 files modified
CMakeLists.txt (+10/-8)
bin/CMakeLists.txt (+2/-1)
test/CMakeLists.txt (+2/-0)
test/fots/CMakeLists.txt (+1229/-0)
test/fots/ImportFOTS.cmake (+106/-0)
test/fots/README.TXT (+26/-0)
test/fots/get-tests.xq (+25/-0)
test/fots_driver/FOTSZorbaManifest.xml (+0/-66)
test/fots_driver/README.TXT (+0/-49)
test/fots_driver/cli.xq (+0/-197)
test/fots_driver/environment.xq (+0/-561)
test/fots_driver/errors.xq (+0/-36)
test/fots_driver/evaluate.xq (+0/-565)
test/fots_driver/feedback.xq (+331/-0)
test/fots_driver/fots-driver.xq (+0/-752)
test/fots_driver/reporting.xq (+0/-244)
test/fots_driver/tools/dependencies.xq (+0/-27)
test/fots_driver/tools/process.xq (+0/-130)
test/fots_driver/util.xq (+0/-119)
To merge this branch: bzr merge lp:~zorba-coders/zorba/fots-ctest
Reviewer Review Type Date Requested Status
Chris Hillery Approve
Sorin Marian Nasoi Approve
Review via email: mp+138071@code.launchpad.net

Commit message

CTest integration for FOTS driver. Allows automated import of FOTS, and enabling one CTest test per FOTS test set *or* per FOTS test case.

To post a comment you must log in.
Revision history for this message
Chris Hillery (ceejatec) wrote :

Sorin: Take a look at test/fots/README.TXT for an explanation of the integration I've done. Please try it out and let me know if you have problems.

I don't think this is ready for merge yet since there is no integration with EXPECTED_FAILURE() or anything like it, which is why I haven't voted on it myself.

A couple questions:

1. Can the result="" attribute of a <test-case> in FOTS driver output have values other than "pass" or "fail"? Currently I am determining whether a CTest test passes based on this output.

2. Would it be useful (for developers) to also allow CTest tests based on FOTS dependencies? If so, is it possible to use cli.xq to get a list of tests for a dependency, and to execute all tests for a dependency?

Revision history for this message
Sorin Marian Nasoi (sorin.marian.nasoi) wrote :

> A couple questions:
>
> 1. Can the result="" attribute of a <test-case> in FOTS driver output have
> values other than "pass" or "fail"? Currently I am determining whether a CTest
> test passes based on this output.
I tried to make the default output of FOTS driver the exact thing needed for a W3C ocnformance submission.
That is why the values of result are the ones defined in the:
http://dev.w3.org/cvsweb/2011/QT3-test-suite/FOTSResults.xsd?rev=1.2;content-type=text%2Fplain
<xsd:simpleType name="resultStatusType">

> 2. Would it be useful (for developers) to also allow CTest tests based on FOTS
> dependencies? If so, is it possible to use cli.xq to get a list of tests for a
> dependency, and to execute all tests for a dependency?
I do believe this is useful, for instance to run only the tests that have a HOF dependency.
:) I do think that is useful, and that is why this is already implemented:
Please try running the FOTS driver CLI with:
[...] -e mode:=list-test-cases -e dependency:=higherOrderFunctions

or
[...] -e mode:=run-test-sets -e testSetPrefixes:=prod -e dependency:=higherOrderFunctions_false

this should be exactly what you asked for.
The value passed to 'dependency' attribute should be in the form:
VALUE_SATISFIED. If SATISFIED is missing, 'true' is assumed.
the VALUE are the ones defined in the
http://bazaar.launchpad.net/~zorba-coders/zorba/fots_driver/view/head:/test/fots_driver/FOTSZorbaManifest.xml

lp:~zorba-coders/zorba/fots-ctest updated
11141. By Sorin Marian Nasoi <email address hidden>

- the 'assertType' option was moved in the fots-driver:list-test-cases method
- replaced 'showResult' with 'verbose'
- added 'expectedFailuresPath' optional param for mode 'run-test-sets'; the ExpectedFailures.xml is a well formed XML, it's not a XML fragment.
If the test PASSED and it's marked as EXPECTED_FAIL or test FAILED and it's not marked as EXPECTED_FAIL => it's reported as FAIL (a.k.a regression); otherwise it's reported as PASS.
- the excepted test cases are reported as "notRun"

11142. By Sorin Marian Nasoi <email address hidden>

Merged lp:zorba.

11143. By Sorin Marian Nasoi <email address hidden>

Fix for the bug added after removing the default element namespace declaration in the 'fots-driver' module.

11144. By Chris Hillery

Initial support for ExpectedFailures integrated with ctest.

11145. By Chris Hillery

Added EXPECTED_FOTS_FAILURE(), tied to FOTS driver ctest integration.
Initial pass of 1615 expected failures for current FOTS.

11146. By Sorin Marian Nasoi <email address hidden>

Updated the structure of the ExpectedFailures.xml.

11147. By Sorin Marian Nasoi <email address hidden>

Modified the 'fots-driver' to handle the new structure of the ExpectedFailures.xml.

11148. By Sorin Marian Nasoi <email address hidden>

The test cases taht are not run are reported 'pass'/'fail' when the ExpectedFailures.xml is added as a parameter.
Otherwise they are reported as 'notRun'.

11149. By Chris Hillery

Produce nested FOTSExpectedFailures.xml, hopefully for speed improvements.

11150. By Chris Hillery

CamelCase element names to match driver.

11151. By Sorin Marian Nasoi <email address hidden>

The tests that are not run are always reported as "notRun" regardless of the fact that an ExpectedFailures.xml was passed or not.

11152. By Sorin Marian Nasoi <email address hidden>

Merged lp:zorba step 1.

11153. By Sorin Marian Nasoi <email address hidden>

Merged lp:zorba step 2.

11154. By Sorin Marian Nasoi <email address hidden>

Fixed an error in the FOTS driver that caused test cases that expected an error but returned an empty result to be reported as PASS when run with verbose=true.

11155. By Sorin Marian Nasoi <email address hidden>

Added a regression report.
ALso the CTest integration is able to spot the regressions.

Revision history for this message
Sorin Marian Nasoi (sorin.marian.nasoi) :
review: Approve
lp:~zorba-coders/zorba/fots-ctest updated
11156. By Chris Hillery

Updated to latest FOTS.

11157. By Chris Hillery

Output actual results and queries as CDATA blocks, for ease in cut-and-paste.

11158. By Sorin Marian Nasoi <email address hidden>

Merged latest fots-ctest version.

11159. By Sorin Marian Nasoi <email address hidden>

Merged latest lp:zorba.

11160. By Sorin Marian Nasoi <email address hidden>

- moved all functions related to giving info about the test cases results intoa new module called 'feedback.xq'
- in case 'ExpectedFailures.xml' is passed, there's a node called 'comment' that mentions the reason the test case was considered s 'pass' or 'fail'

11161. By Sorin Marian Nasoi <email address hidden>

Updated the 'EXPECTED_FOTS_FAILURE' list with:
- test cases that are slow
- test cases that are crashing
- test cases that are failing in the latest version of the FOTS, meaning 'FOTS_191212.tgz'.

Revision history for this message
Sorin Marian Nasoi (sorin.marian.nasoi) :
review: Approve
lp:~zorba-coders/zorba/fots-ctest updated
11162. By Chris Hillery

Update set of elements output as CDATA.

11163. By Sorin Marian Nasoi <email address hidden>

Merged trunk.

11164. By Sorin Marian Nasoi <email address hidden>

Merged lp:zorba trunk.

Revision history for this message
Chris Hillery (ceejatec) :
review: Approve
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :

Validation queue job fots-ctest-2013-01-08T22-37-44.816Z is finished. The final status was:

All tests succeeded!

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2012-10-08 12:09:36 +0000
3+++ CMakeLists.txt 2013-01-08 14:37:31 +0000
4@@ -550,12 +550,16 @@
5 ADD_SUBDIRECTORY(scripts)
6 ADD_SUBDIRECTORY(cmake_modules)
7
8-# Subdirectory ordering: We need to include "test" before "config" so
9-# ZorbaConfig knows about testdriver. We need to include "config"
10-# before "modules" so external modules will be able to find
11-# ZorbaConfig.cmake. We need to include "modules" before "include" so
12-# config.h can know eg. whether we found CURL. We need to include "modules"
13-# before "doc" so xqdoc can know what non-core modules are available.
14+# Subdirectory ordering: We need to include "bin" before "test" so
15+# that test/fots can add zorbacmd-based tests. We need to include
16+# "test" before "config" so ZorbaConfig knows about testdriver. We
17+# need to include "config" before "modules" so external modules will
18+# be able to find ZorbaConfig.cmake. We need to include "modules"
19+# before "include" so config.h can know eg. whether we found CURL. We
20+# need to include "modules" before "doc" so xqdoc can know what
21+# non-core modules are available.
22+
23+ADD_SUBDIRECTORY(bin)
24
25 ADD_SUBDIRECTORY(test)
26 ADD_SUBDIRECTORY(config)
27@@ -572,8 +576,6 @@
28 ADD_SUBDIRECTORY (swig)
29 ENDIF (SWIG_FOUND)
30
31-ADD_SUBDIRECTORY(bin)
32-
33 # add the uninstall support
34 # QQQ move to config/
35 CONFIGURE_FILE(
36
37=== modified file 'bin/CMakeLists.txt'
38--- bin/CMakeLists.txt 2012-11-08 21:57:10 +0000
39+++ bin/CMakeLists.txt 2013-01-08 14:37:31 +0000
40@@ -15,6 +15,8 @@
41 INCLUDE_DIRECTORIES(AFTER ${CMAKE_SOURCE_DIR}/src/)
42 INCLUDE_DIRECTORIES(AFTER ${CMAKE_CURRENT_SOURCE_DIR})
43
44+INCLUDE("${CMAKE_SOURCE_DIR}/cmake_modules/ZorbaGenerateExe.cmake")
45+
46 IF (ZORBA_WITH_DEBUGGER)
47 IF (NOT WIN32)
48 FIND_PACKAGE (Libedit)
49@@ -49,7 +51,6 @@
50 path_util.cpp
51 )
52
53-INCLUDE("${CMAKE_SOURCE_DIR}/cmake_modules/ZorbaGenerateExe.cmake")
54 ZORBA_GENERATE_EXE("zorbacmd" "${SRCS}" "" "zorba" "bin")
55
56
57
58=== modified file 'test/CMakeLists.txt'
59--- test/CMakeLists.txt 2012-10-08 12:09:36 +0000
60+++ test/CMakeLists.txt 2013-01-08 14:37:31 +0000
61@@ -37,6 +37,8 @@
62 ADD_SUBDIRECTORY(update)
63 ADD_SUBDIRECTORY(sax2)
64
65+ADD_SUBDIRECTORY(fots)
66+
67 SET (TEST_PLAN_SERIALIZER_SRCS
68 test_plan_serializer.cpp
69 timer.cpp)
70
71=== added directory 'test/fots'
72=== added file 'test/fots/CMakeLists.txt'
73--- test/fots/CMakeLists.txt 1970-01-01 00:00:00 +0000
74+++ test/fots/CMakeLists.txt 2013-01-08 14:37:31 +0000
75@@ -0,0 +1,1229 @@
76+# Copyright 2006-2008 The FLWOR Foundation.
77+#
78+# Licensed under the Apache License, Version 2.0 (the "License");
79+# you may not use this file except in compliance with the License.
80+# You may obtain a copy of the License at
81+#
82+# http://www.apache.org/licenses/LICENSE-2.0
83+#
84+# Unless required by applicable law or agreed to in writing, software
85+# distributed under the License is distributed on an "AS IS" BASIS,
86+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
87+# See the License for the specific language governing permissions and
88+# limitations under the License.
89+
90+# Add a target to import FOTS
91+ADD_CUSTOM_TARGET(fots-import
92+ COMMAND "${CMAKE_COMMAND}"
93+ -D "ZORBA=${ZORBA_EXE}"
94+ -D "BUILDDIR=${PROJECT_BINARY_DIR}"
95+ -P "${CMAKE_CURRENT_SOURCE_DIR}/ImportFOTS.cmake")
96+
97+# Create cached version of activate setting
98+SET (ZORBA_FOTS_ACTIVATE inactive CACHE STRING "Which FOTS tests to activate")
99+MARK_AS_ADVANCED (ZORBA_FOTS_ACTIVATE)
100+
101+# Add targets to set activate flag
102+ADD_CUSTOM_TARGET(fots-activate-sets
103+ COMMAND "${CMAKE_COMMAND}"
104+ -D "ZORBA_FOTS_ACTIVATE=sets" "${PROJECT_SOURCE_DIR}"
105+ WORKING_DIRECTORY "${PROJECT_BINARY_DIR}")
106+ADD_CUSTOM_TARGET(fots-activate-cases
107+ COMMAND "${CMAKE_COMMAND}"
108+ -D "ZORBA_FOTS_ACTIVATE=cases" "${PROJECT_SOURCE_DIR}"
109+ WORKING_DIRECTORY "${PROJECT_BINARY_DIR}")
110+ADD_CUSTOM_TARGET(fots-deactivate
111+ COMMAND "${CMAKE_COMMAND}"
112+ -D "ZORBA_FOTS_ACTIVATE=inactive" "${PROJECT_SOURCE_DIR}"
113+ WORKING_DIRECTORY "${PROJECT_BINARY_DIR}")
114+
115+# Load FOTS test scripts (if they exist) depending on flag
116+IF ("${ZORBA_FOTS_ACTIVATE}" STREQUAL "sets")
117+ MESSAGE (STATUS "Adding FOTS test-set tests")
118+ SET (_fotsscript "${CMAKE_CURRENT_BINARY_DIR}/FOTSSetTests.cmake")
119+ELSEIF ("${ZORBA_FOTS_ACTIVATE}" STREQUAL "cases")
120+ MESSAGE (STATUS "Adding FOTS test-case tests (may take a while...)")
121+ SET (_fotsscript "${CMAKE_CURRENT_BINARY_DIR}/FOTSCaseTests.cmake")
122+ELSE ("${ZORBA_FOTS_ACTIVATE}" STREQUAL "sets")
123+ SET (_fotsscript "")
124+ENDIF ("${ZORBA_FOTS_ACTIVATE}" STREQUAL "sets")
125+IF (NOT _fotsscript STREQUAL "")
126+ IF (EXISTS "${_fotsscript}")
127+ INCLUDE ("${_fotsscript}")
128+ ELSE (EXISTS "${_fotsscript}")
129+ MESSAGE (WARNING "...${_fotsscript} does not exist, not adding FOTS tests "
130+ "after all (did you forget to run the 'fots-import' target?)")
131+ ENDIF (EXISTS "${_fotsscript}")
132+ENDIF (NOT _fotsscript STREQUAL "")
133+
134+
135+# Customized macro for FOTS tests
136+MACRO (expected_fots_failure)
137+ PARSE_ARGUMENTS (EFF "" "" "SLOW;CRASH" ${ARGN})
138+ LIST (LENGTH EFF_DEFAULT_ARGS _numargs)
139+ IF (NOT _numargs EQUAL 3)
140+ MESSAGE (FATAL_ERROR "Invalid arguments to EXPECTED_FOTS_FAILURE: ${ARGN}")
141+ ENDIF (NOT _numargs EQUAL 3)
142+ LIST (GET EFF_DEFAULT_ARGS 0 test_set)
143+ LIST (GET EFF_DEFAULT_ARGS 1 test_case)
144+ LIST (GET EFF_DEFAULT_ARGS 2 bugid)
145+
146+ # First add test_set name to list of test_sets, if it's not already there
147+ GET_PROPERTY (_test_sets GLOBAL PROPERTY "_ALL_FOTS_TEST_SETS_")
148+ LIST (FIND _test_sets ${test_set} _found)
149+ IF (_found EQUAL -1)
150+ SET_PROPERTY (GLOBAL APPEND PROPERTY "_ALL_FOTS_TEST_SETS_" ${test_set})
151+ ENDIF (_found EQUAL -1)
152+
153+ # Determine "notrun" status
154+ SET (_notrun)
155+ IF (EFF_SLOW OR EFF_CRASH)
156+ SET (_notrun true)
157+ ENDIF (EFF_SLOW OR EFF_CRASH)
158+
159+ # Append three values per test case - case name, bugnum, notRun
160+ SET_PROPERTY (GLOBAL APPEND PROPERTY "_FOTS_${test_set}_CASES_"
161+ ${test_case} ${bugid} "${_notrun}")
162+ENDMACRO (expected_fots_failure)
163+
164+##
165+## Place all known failing FOTS tests here!
166+##
167+#"slow" test
168+EXPECTED_FOTS_FAILURE (SLOW fn-subsequence cbcl-subsequence-011 1069794)
169+EXPECTED_FOTS_FAILURE (SLOW fn-subsequence cbcl-subsequence-012 1069794)
170+EXPECTED_FOTS_FAILURE (SLOW fn-subsequence cbcl-subsequence-013 1069794)
171+EXPECTED_FOTS_FAILURE (SLOW fn-subsequence cbcl-subsequence-014 1069794)
172+
173+#"crashing" test
174+EXPECTED_FOTS_FAILURE (CRASH fn-matches.re re00975 1070533)
175+EXPECTED_FOTS_FAILURE (CRASH fn-matches.re re00976 1070533)
176+EXPECTED_FOTS_FAILURE (CRASH fn-matches.re re00976a 1070533)
177+EXPECTED_FOTS_FAILURE (CRASH fn-unparsed-text-lines fn-unparsed-text-lines-052 1073175)
178+
179+EXPECTED_FOTS_FAILURE (app-CatalogCheck Catalog001 0)
180+EXPECTED_FOTS_FAILURE (app-CatalogCheck Catalog002 0)
181+EXPECTED_FOTS_FAILURE (app-CatalogCheck Catalog003 0)
182+EXPECTED_FOTS_FAILURE (app-CatalogCheck Catalog004 0)
183+EXPECTED_FOTS_FAILURE (app-CatalogCheck Catalog005 0)
184+EXPECTED_FOTS_FAILURE (app-CatalogCheck Catalog006 0)
185+EXPECTED_FOTS_FAILURE (app-CatalogCheck Catalog007 0)
186+EXPECTED_FOTS_FAILURE (app-CatalogCheck Catalog008 0)
187+EXPECTED_FOTS_FAILURE (app-CatalogCheck Catalog009 0)
188+EXPECTED_FOTS_FAILURE (app-CatalogCheck Catalog010 0)
189+EXPECTED_FOTS_FAILURE (app-CatalogCheck Catalog011 0)
190+EXPECTED_FOTS_FAILURE (app-CatalogCheck Catalog012 0)
191+EXPECTED_FOTS_FAILURE (app-Demos sudoku 0)
192+EXPECTED_FOTS_FAILURE (app-Demos currencysvg 0)
193+EXPECTED_FOTS_FAILURE (app-Demos itunes 0)
194+EXPECTED_FOTS_FAILURE (app-FunctxFn functx-fn-number-all 0)
195+EXPECTED_FOTS_FAILURE (app-FunctxFunctx functx-functx-copy-attributes-1 0)
196+EXPECTED_FOTS_FAILURE (app-FunctxFunctx functx-functx-copy-attributes-all 0)
197+EXPECTED_FOTS_FAILURE (app-FunctxFunctx functx-functx-id-from-element-1 0)
198+EXPECTED_FOTS_FAILURE (app-FunctxFunctx functx-functx-sort-as-numeric-all 0)
199+EXPECTED_FOTS_FAILURE (app-FunctxFunctx functx-functx-sort-case-insensitive-all 0)
200+EXPECTED_FOTS_FAILURE (app-FunctxFunctx functx-functx-sort-all 0)
201+EXPECTED_FOTS_FAILURE (app-UseCaseNS ns-queries-results-q5 0)
202+EXPECTED_FOTS_FAILURE (app-UseCaseNS ns-queries-results-q8 0)
203+EXPECTED_FOTS_FAILURE (app-UseCaseSTRING string-queries-results-q1 0)
204+EXPECTED_FOTS_FAILURE (app-UseCaseSTRING string-queries-results-q2 0)
205+EXPECTED_FOTS_FAILURE (app-UseCaseSTRING string-queries-results-q4 0)
206+EXPECTED_FOTS_FAILURE (app-UseCaseSTRING string-queries-results-q5 0)
207+EXPECTED_FOTS_FAILURE (app-XMark XMark-Q2 0)
208+EXPECTED_FOTS_FAILURE (app-XMark XMark-Q3 0)
209+EXPECTED_FOTS_FAILURE (app-XMark XMark-Q8 0)
210+EXPECTED_FOTS_FAILURE (app-XMark XMark-Q9 0)
211+EXPECTED_FOTS_FAILURE (app-XMark XMark-Q10 0)
212+EXPECTED_FOTS_FAILURE (app-XMark XMark-Q11 0)
213+EXPECTED_FOTS_FAILURE (app-XMark XMark-Q12 0)
214+EXPECTED_FOTS_FAILURE (app-XMark XMark-Q13 0)
215+EXPECTED_FOTS_FAILURE (app-XMark XMark-Q14 0)
216+EXPECTED_FOTS_FAILURE (app-XMark XMark-Q15 0)
217+EXPECTED_FOTS_FAILURE (app-XMark XMark-Q16 0)
218+EXPECTED_FOTS_FAILURE (app-XMark XMark-Q17 0)
219+EXPECTED_FOTS_FAILURE (app-XMark XMark-Q18 0)
220+EXPECTED_FOTS_FAILURE (app-XMark XMark-Q19 0)
221+EXPECTED_FOTS_FAILURE (app-XMark XMark-Q20 0)
222+EXPECTED_FOTS_FAILURE (app-XMark XMark-All 0)
223+EXPECTED_FOTS_FAILURE (fn-adjust-date-to-timezone cbcl-adjust-date-to-timezone-002 0)
224+EXPECTED_FOTS_FAILURE (fn-adjust-date-to-timezone cbcl-adjust-date-to-timezone-003 0)
225+EXPECTED_FOTS_FAILURE (fn-adjust-dateTime-to-timezone cbcl-adjust-dateTime-to-timezone-002 0)
226+EXPECTED_FOTS_FAILURE (fn-adjust-dateTime-to-timezone cbcl-adjust-dateTime-to-timezone-003 0)
227+EXPECTED_FOTS_FAILURE (fn-analyze-string analyzeString-008 0)
228+EXPECTED_FOTS_FAILURE (fn-analyze-string analyzeString-017 0)
229+EXPECTED_FOTS_FAILURE (fn-analyze-string analyzeString-017a 0)
230+EXPECTED_FOTS_FAILURE (fn-available-environment-variables fn-available-environment-variables-011 0)
231+EXPECTED_FOTS_FAILURE (fn-avg cbcl-avg-002 0)
232+EXPECTED_FOTS_FAILURE (fn-avg cbcl-avg-003 0)
233+EXPECTED_FOTS_FAILURE (fn-codepoints-to-string K-CodepointToStringFunc-13 0)
234+EXPECTED_FOTS_FAILURE (fn-collection fn-collection-4 0)
235+EXPECTED_FOTS_FAILURE (fn-collection fn-collection-4d 0)
236+EXPECTED_FOTS_FAILURE (fn-collection fn-collection-5 0)
237+EXPECTED_FOTS_FAILURE (fn-collection fn-collection-5d 0)
238+EXPECTED_FOTS_FAILURE (fn-collection fn-collection-6 0)
239+EXPECTED_FOTS_FAILURE (fn-collection fn-collection-8 0)
240+EXPECTED_FOTS_FAILURE (fn-collection fn-collection-9 0)
241+EXPECTED_FOTS_FAILURE (fn-collection fn-collection-10 0)
242+EXPECTED_FOTS_FAILURE (fn-collection fn-collection-10d 0)
243+EXPECTED_FOTS_FAILURE (fn-compare compare-010 0)
244+EXPECTED_FOTS_FAILURE (fn-deep-equal K-SeqDeepEqualFunc-56 0)
245+EXPECTED_FOTS_FAILURE (fn-deep-equal K-SeqDeepEqualFunc-57 0)
246+EXPECTED_FOTS_FAILURE (fn-deep-equal K-SeqDeepEqualFunc-58 0)
247+EXPECTED_FOTS_FAILURE (fn-deep-equal K-SeqDeepEqualFunc-59 0)
248+EXPECTED_FOTS_FAILURE (fn-deep-equal K-SeqDeepEqualFunc-60 0)
249+EXPECTED_FOTS_FAILURE (fn-deep-equal K-SeqDeepEqualFunc-61 0)
250+EXPECTED_FOTS_FAILURE (fn-deep-equal K-SeqDeepEqualFunc-62 0)
251+EXPECTED_FOTS_FAILURE (fn-deep-equal K2-SeqDeepEqualFunc-36 0)
252+EXPECTED_FOTS_FAILURE (fn-deep-equal K2-SeqDeepEqualFunc-37 0)
253+EXPECTED_FOTS_FAILURE (fn-deep-equal K2-SeqDeepEqualFunc-38 0)
254+EXPECTED_FOTS_FAILURE (fn-deep-equal K2-SeqDeepEqualFunc-39 0)
255+EXPECTED_FOTS_FAILURE (fn-distinct-values fn-distinct-values-mixed-args-005 0)
256+EXPECTED_FOTS_FAILURE (fn-distinct-values fn-distinct-values-mixed-args-006 0)
257+EXPECTED_FOTS_FAILURE (fn-distinct-values fn-distinct-values-mixed-args-009 0)
258+EXPECTED_FOTS_FAILURE (fn-distinct-values fn-distinct-values-mixed-args-010 0)
259+EXPECTED_FOTS_FAILURE (fn-distinct-values fn-distinct-values-mixed-args-011 0)
260+EXPECTED_FOTS_FAILURE (fn-distinct-values fn-distinct-values-mixed-args-018 0)
261+EXPECTED_FOTS_FAILURE (fn-distinct-values fn-distinct-values-mixed-args-032 0)
262+EXPECTED_FOTS_FAILURE (fn-distinct-values fn-distinct-values-2 0)
263+EXPECTED_FOTS_FAILURE (fn-distinct-values cbcl-distinct-values-002 0)
264+EXPECTED_FOTS_FAILURE (fn-distinct-values cbcl-distinct-values-002b 0)
265+EXPECTED_FOTS_FAILURE (fn-distinct-values cbcl-distinct-values-003 0)
266+EXPECTED_FOTS_FAILURE (fn-doc fn-doc-25 0)
267+EXPECTED_FOTS_FAILURE (fn-doc fn-doc-33 0)
268+EXPECTED_FOTS_FAILURE (fn-environment-variable environment-variable-005 0)
269+EXPECTED_FOTS_FAILURE (fn-environment-variable environment-variable-006 0)
270+EXPECTED_FOTS_FAILURE (fn-environment-variable environment-variable-007 0)
271+EXPECTED_FOTS_FAILURE (fn-format-date format-date-001d 0)
272+EXPECTED_FOTS_FAILURE (fn-format-date format-date-001g 0)
273+EXPECTED_FOTS_FAILURE (fn-format-date format-date-005 0)
274+EXPECTED_FOTS_FAILURE (fn-format-date format-date-006 0)
275+EXPECTED_FOTS_FAILURE (fn-format-date format-date-007a 0)
276+EXPECTED_FOTS_FAILURE (fn-format-date format-date-007b 0)
277+EXPECTED_FOTS_FAILURE (fn-format-date format-date-007c 0)
278+EXPECTED_FOTS_FAILURE (fn-format-date format-date-008a 0)
279+EXPECTED_FOTS_FAILURE (fn-format-date format-date-008b 0)
280+EXPECTED_FOTS_FAILURE (fn-format-date format-date-008c 0)
281+EXPECTED_FOTS_FAILURE (fn-format-date format-date-009 0)
282+EXPECTED_FOTS_FAILURE (fn-format-date format-date-010 0)
283+EXPECTED_FOTS_FAILURE (fn-format-date format-date-014 0)
284+EXPECTED_FOTS_FAILURE (fn-format-date format-date-015 0)
285+EXPECTED_FOTS_FAILURE (fn-format-date format-date-016 0)
286+EXPECTED_FOTS_FAILURE (fn-format-date format-date-017 0)
287+EXPECTED_FOTS_FAILURE (fn-format-date format-date-018 0)
288+EXPECTED_FOTS_FAILURE (fn-format-date format-date-019 0)
289+EXPECTED_FOTS_FAILURE (fn-format-date format-date-020 0)
290+EXPECTED_FOTS_FAILURE (fn-format-date format-date-021 0)
291+EXPECTED_FOTS_FAILURE (fn-format-date format-date-022 0)
292+EXPECTED_FOTS_FAILURE (fn-format-date format-date-023 0)
293+EXPECTED_FOTS_FAILURE (fn-format-date format-date-024 0)
294+EXPECTED_FOTS_FAILURE (fn-format-date format-date-025 0)
295+EXPECTED_FOTS_FAILURE (fn-format-date format-date-026 0)
296+EXPECTED_FOTS_FAILURE (fn-format-date format-date-027 0)
297+EXPECTED_FOTS_FAILURE (fn-format-date format-date-en117 0)
298+EXPECTED_FOTS_FAILURE (fn-format-date format-date-en118 0)
299+EXPECTED_FOTS_FAILURE (fn-format-date format-date-en123 0)
300+EXPECTED_FOTS_FAILURE (fn-format-date format-date-en124 0)
301+EXPECTED_FOTS_FAILURE (fn-format-date format-date-en125 0)
302+EXPECTED_FOTS_FAILURE (fn-format-date format-date-en126 0)
303+EXPECTED_FOTS_FAILURE (fn-format-date format-date-en127 0)
304+EXPECTED_FOTS_FAILURE (fn-format-date format-date-en128 0)
305+EXPECTED_FOTS_FAILURE (fn-format-date format-date-en129 0)
306+EXPECTED_FOTS_FAILURE (fn-format-date format-date-en130 0)
307+EXPECTED_FOTS_FAILURE (fn-format-date format-date-en131 0)
308+EXPECTED_FOTS_FAILURE (fn-format-date format-date-en132 0)
309+EXPECTED_FOTS_FAILURE (fn-format-date format-date-en133 0)
310+EXPECTED_FOTS_FAILURE (fn-format-date format-date-en134 0)
311+EXPECTED_FOTS_FAILURE (fn-format-date format-date-en141 0)
312+EXPECTED_FOTS_FAILURE (fn-format-date format-date-en151 0)
313+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-001d 0)
314+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-001g 0)
315+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-002g 0)
316+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-002h 0)
317+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-002i 0)
318+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-003d 0)
319+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-003g 0)
320+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-003m 0)
321+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-003n 0)
322+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-003p 0)
323+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-005 0)
324+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-006 0)
325+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-009 0)
326+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-010 0)
327+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-011 0)
328+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-012 0)
329+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-013p 0)
330+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-013s 0)
331+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-013u 0)
332+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-014 0)
333+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-015 0)
334+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-016 0)
335+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-017 0)
336+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-018 0)
337+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-en141 0)
338+EXPECTED_FOTS_FAILURE (fn-format-dateTime format-dateTime-en151 0)
339+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-025 0)
340+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-026 0)
341+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-030 0)
342+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-031 0)
343+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-033 0)
344+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-035 0)
345+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-038 0)
346+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-039 0)
347+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-043 0)
348+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-044 0)
349+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-049 0)
350+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-050 0)
351+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-052 0)
352+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-055 0)
353+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-056 0)
354+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-057 0)
355+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-058 0)
356+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-059 0)
357+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-060 0)
358+EXPECTED_FOTS_FAILURE (fn-format-integer format-integer-061 0)
359+EXPECTED_FOTS_FAILURE (fn-format-number numberformat14 0)
360+EXPECTED_FOTS_FAILURE (fn-format-number numberformat15 0)
361+EXPECTED_FOTS_FAILURE (fn-format-number numberformat34 0)
362+EXPECTED_FOTS_FAILURE (fn-format-number numberformat38 0)
363+EXPECTED_FOTS_FAILURE (fn-format-number numberformat40 0)
364+EXPECTED_FOTS_FAILURE (fn-format-number numberformat41 0)
365+EXPECTED_FOTS_FAILURE (fn-format-number numberformat42 0)
366+EXPECTED_FOTS_FAILURE (fn-format-number numberformat60a 0)
367+EXPECTED_FOTS_FAILURE (fn-format-number numberformat60m 0)
368+EXPECTED_FOTS_FAILURE (fn-format-number numberformat60o 0)
369+EXPECTED_FOTS_FAILURE (fn-format-number numberformat60q 0)
370+EXPECTED_FOTS_FAILURE (fn-format-number numberformat63 0)
371+EXPECTED_FOTS_FAILURE (fn-format-number numberformat64 0)
372+EXPECTED_FOTS_FAILURE (fn-format-number numberformat70 0)
373+EXPECTED_FOTS_FAILURE (fn-format-number numberformat71 0)
374+EXPECTED_FOTS_FAILURE (fn-format-number numberformat86 0)
375+EXPECTED_FOTS_FAILURE (fn-format-time format-time-002g 0)
376+EXPECTED_FOTS_FAILURE (fn-format-time format-time-002h 0)
377+EXPECTED_FOTS_FAILURE (fn-format-time format-time-002i 0)
378+EXPECTED_FOTS_FAILURE (fn-format-time format-time-013p 0)
379+EXPECTED_FOTS_FAILURE (fn-format-time format-time-013s 0)
380+EXPECTED_FOTS_FAILURE (fn-format-time format-time-013u 0)
381+EXPECTED_FOTS_FAILURE (fn-format-time format-time-014 0)
382+EXPECTED_FOTS_FAILURE (fn-format-time format-time-015 0)
383+EXPECTED_FOTS_FAILURE (fn-format-time format-time-016 0)
384+EXPECTED_FOTS_FAILURE (fn-format-time format-time-017 0)
385+EXPECTED_FOTS_FAILURE (fn-format-time format-time-018 0)
386+EXPECTED_FOTS_FAILURE (fn-format-time format-time-816err 0)
387+EXPECTED_FOTS_FAILURE (fn-generate-id generate-id-001 0)
388+EXPECTED_FOTS_FAILURE (fn-generate-id generate-id-002 0)
389+EXPECTED_FOTS_FAILURE (fn-generate-id generate-id-003 0)
390+EXPECTED_FOTS_FAILURE (fn-generate-id generate-id-004 0)
391+EXPECTED_FOTS_FAILURE (fn-generate-id generate-id-005 0)
392+EXPECTED_FOTS_FAILURE (fn-generate-id generate-id-006 0)
393+EXPECTED_FOTS_FAILURE (fn-generate-id generate-id-012 0)
394+EXPECTED_FOTS_FAILURE (fn-generate-id generate-id-013 0)
395+EXPECTED_FOTS_FAILURE (fn-generate-id generate-id-014 0)
396+EXPECTED_FOTS_FAILURE (fn-generate-id generate-id-015 0)
397+EXPECTED_FOTS_FAILURE (fn-generate-id generate-id-017 0)
398+EXPECTED_FOTS_FAILURE (fn-generate-id generate-id-018 0)
399+EXPECTED_FOTS_FAILURE (fn-id fn-id-dtd-5 0)
400+EXPECTED_FOTS_FAILURE (fn-id fn-id-dtd-7 0)
401+EXPECTED_FOTS_FAILURE (fn-id fn-id-dtd-8 0)
402+EXPECTED_FOTS_FAILURE (fn-id fn-id-dtd-9 0)
403+EXPECTED_FOTS_FAILURE (fn-id fn-id-dtd-12 0)
404+EXPECTED_FOTS_FAILURE (fn-id fn-id-dtd-13 0)
405+EXPECTED_FOTS_FAILURE (fn-id fn-id-dtd-15 0)
406+EXPECTED_FOTS_FAILURE (fn-id fn-id-dtd-16 0)
407+EXPECTED_FOTS_FAILURE (fn-id fn-id-dtd-17 0)
408+EXPECTED_FOTS_FAILURE (fn-id fn-id-dtd-18 0)
409+EXPECTED_FOTS_FAILURE (fn-id fn-id-dtd-19 0)
410+EXPECTED_FOTS_FAILURE (fn-id fn-id-dtd-20 0)
411+EXPECTED_FOTS_FAILURE (fn-id fn-id-dtd-21 0)
412+EXPECTED_FOTS_FAILURE (fn-id fn-id-dtd-23 0)
413+EXPECTED_FOTS_FAILURE (fn-id K2-SeqIDFunc-11 0)
414+EXPECTED_FOTS_FAILURE (fn-id K2-SeqIDFunc-12 0)
415+EXPECTED_FOTS_FAILURE (fn-idref fn-idref-dtd-5 0)
416+EXPECTED_FOTS_FAILURE (fn-idref fn-idref-dtd-7 0)
417+EXPECTED_FOTS_FAILURE (fn-idref fn-idref-dtd-8 0)
418+EXPECTED_FOTS_FAILURE (fn-idref fn-idref-dtd-9 0)
419+EXPECTED_FOTS_FAILURE (fn-idref fn-idref-dtd-12 0)
420+EXPECTED_FOTS_FAILURE (fn-idref fn-idref-dtd-13 0)
421+EXPECTED_FOTS_FAILURE (fn-idref fn-idref-dtd-14 0)
422+EXPECTED_FOTS_FAILURE (fn-idref fn-idref-dtd-15 0)
423+EXPECTED_FOTS_FAILURE (fn-idref fn-idref-dtd-16 0)
424+EXPECTED_FOTS_FAILURE (fn-idref fn-idref-dtd-17 0)
425+EXPECTED_FOTS_FAILURE (fn-idref fn-idref-dtd-18 0)
426+EXPECTED_FOTS_FAILURE (fn-idref fn-idref-dtd-19 0)
427+EXPECTED_FOTS_FAILURE (fn-idref fn-idref-dtd-20 0)
428+EXPECTED_FOTS_FAILURE (fn-idref fn-idref-dtd-21 0)
429+EXPECTED_FOTS_FAILURE (fn-idref fn-idref-dtd-23 0)
430+EXPECTED_FOTS_FAILURE (fn-idref fn-idref-dtd-24 0)
431+EXPECTED_FOTS_FAILURE (fn-idref fn-idref-dtd-25 0)
432+EXPECTED_FOTS_FAILURE (fn-in-scope-prefixes fn-in-scope-prefixes-21 0)
433+EXPECTED_FOTS_FAILURE (fn-in-scope-prefixes fn-in-scope-prefixes-22 0)
434+EXPECTED_FOTS_FAILURE (fn-in-scope-prefixes fn-in-scope-prefixes-24 0)
435+EXPECTED_FOTS_FAILURE (fn-in-scope-prefixes fn-in-scope-prefixes-25 0)
436+EXPECTED_FOTS_FAILURE (fn-in-scope-prefixes K2-InScopePrefixesFunc-11 0)
437+EXPECTED_FOTS_FAILURE (fn-in-scope-prefixes K2-InScopePrefixesFunc-12 0)
438+EXPECTED_FOTS_FAILURE (fn-in-scope-prefixes K2-InScopePrefixesFunc-18 0)
439+EXPECTED_FOTS_FAILURE (fn-in-scope-prefixes K2-InScopePrefixesFunc-26 0)
440+EXPECTED_FOTS_FAILURE (fn-in-scope-prefixes K2-InScopePrefixesFunc-28 0)
441+EXPECTED_FOTS_FAILURE (fn-iri-to-uri fn-iri-to-uri-18 0)
442+EXPECTED_FOTS_FAILURE (fn-iri-to-uri fn-iri-to-uri-18A 0)
443+EXPECTED_FOTS_FAILURE (fn-last last-11 0)
444+EXPECTED_FOTS_FAILURE (fn-last last-24 0)
445+EXPECTED_FOTS_FAILURE (fn-local-name-from-QName LocalNameFromQNameFunc001 0)
446+EXPECTED_FOTS_FAILURE (fn-local-name-from-QName LocalNameFromQNameFunc002 0)
447+EXPECTED_FOTS_FAILURE (fn-local-name-from-QName LocalNameFromQNameFunc003 0)
448+EXPECTED_FOTS_FAILURE (fn-local-name-from-QName LocalNameFromQNameFunc004 0)
449+EXPECTED_FOTS_FAILURE (fn-local-name-from-QName LocalNameFromQNameFunc005 0)
450+EXPECTED_FOTS_FAILURE (fn-local-name-from-QName LocalNameFromQNameFunc018 0)
451+EXPECTED_FOTS_FAILURE (fn-local-name-from-QName LocalNameFromQNameFunc019 0)
452+EXPECTED_FOTS_FAILURE (fn-local-name-from-QName LocalNameFromQNameFunc020 0)
453+EXPECTED_FOTS_FAILURE (fn-matches caselessmatch10 0)
454+EXPECTED_FOTS_FAILURE (fn-matches caselessmatch11 0)
455+EXPECTED_FOTS_FAILURE (fn-matches cbcl-matches-038 0)
456+EXPECTED_FOTS_FAILURE (fn-matches cbcl-matches-039 0)
457+EXPECTED_FOTS_FAILURE (fn-matches.re re00041 0)
458+EXPECTED_FOTS_FAILURE (fn-matches.re re00055 0)
459+EXPECTED_FOTS_FAILURE (fn-matches.re re00058 0)
460+EXPECTED_FOTS_FAILURE (fn-matches.re re00059 0)
461+EXPECTED_FOTS_FAILURE (fn-matches.re re00060 0)
462+EXPECTED_FOTS_FAILURE (fn-matches.re re00063 0)
463+EXPECTED_FOTS_FAILURE (fn-matches.re re00071 0)
464+EXPECTED_FOTS_FAILURE (fn-matches.re re00072 0)
465+EXPECTED_FOTS_FAILURE (fn-matches.re re00127a 0)
466+EXPECTED_FOTS_FAILURE (fn-matches.re re00129a 0)
467+EXPECTED_FOTS_FAILURE (fn-matches.re re00130a 0)
468+EXPECTED_FOTS_FAILURE (fn-matches.re re00288 0)
469+EXPECTED_FOTS_FAILURE (fn-matches.re re00370 0)
470+EXPECTED_FOTS_FAILURE (fn-matches.re re00480 0)
471+EXPECTED_FOTS_FAILURE (fn-matches.re re00498 0)
472+EXPECTED_FOTS_FAILURE (fn-matches.re re00501 0)
473+EXPECTED_FOTS_FAILURE (fn-matches.re re00506 0)
474+EXPECTED_FOTS_FAILURE (fn-matches.re re00589 0)
475+EXPECTED_FOTS_FAILURE (fn-matches.re re00590 0)
476+EXPECTED_FOTS_FAILURE (fn-matches.re re00613 0)
477+EXPECTED_FOTS_FAILURE (fn-matches.re re00680 0)
478+EXPECTED_FOTS_FAILURE (fn-matches.re re00693 0)
479+EXPECTED_FOTS_FAILURE (fn-matches.re re00694 0)
480+EXPECTED_FOTS_FAILURE (fn-matches.re re00695 0)
481+EXPECTED_FOTS_FAILURE (fn-matches.re re00696 0)
482+EXPECTED_FOTS_FAILURE (fn-matches.re re00697 0)
483+EXPECTED_FOTS_FAILURE (fn-matches.re re00698 0)
484+EXPECTED_FOTS_FAILURE (fn-matches.re re00702 0)
485+EXPECTED_FOTS_FAILURE (fn-matches.re re00703 0)
486+EXPECTED_FOTS_FAILURE (fn-matches.re re00704 0)
487+EXPECTED_FOTS_FAILURE (fn-matches.re re00705 0)
488+EXPECTED_FOTS_FAILURE (fn-matches.re re00706 0)
489+EXPECTED_FOTS_FAILURE (fn-matches.re re00707 0)
490+EXPECTED_FOTS_FAILURE (fn-matches.re re00708 0)
491+EXPECTED_FOTS_FAILURE (fn-matches.re re00709 0)
492+EXPECTED_FOTS_FAILURE (fn-matches.re re00710 0)
493+EXPECTED_FOTS_FAILURE (fn-matches.re re00711 0)
494+EXPECTED_FOTS_FAILURE (fn-matches.re re00712 0)
495+EXPECTED_FOTS_FAILURE (fn-matches.re re00713 0)
496+EXPECTED_FOTS_FAILURE (fn-matches.re re00717 0)
497+EXPECTED_FOTS_FAILURE (fn-matches.re re00718 0)
498+EXPECTED_FOTS_FAILURE (fn-matches.re re00719 0)
499+EXPECTED_FOTS_FAILURE (fn-matches.re re00720 0)
500+EXPECTED_FOTS_FAILURE (fn-matches.re re00721 0)
501+EXPECTED_FOTS_FAILURE (fn-matches.re re00722 0)
502+EXPECTED_FOTS_FAILURE (fn-matches.re re00723 0)
503+EXPECTED_FOTS_FAILURE (fn-matches.re re00730 0)
504+EXPECTED_FOTS_FAILURE (fn-matches.re re00732 0)
505+EXPECTED_FOTS_FAILURE (fn-matches.re re00736 0)
506+EXPECTED_FOTS_FAILURE (fn-matches.re re00739 0)
507+EXPECTED_FOTS_FAILURE (fn-matches.re re00740 0)
508+EXPECTED_FOTS_FAILURE (fn-matches.re re00744 0)
509+EXPECTED_FOTS_FAILURE (fn-matches.re re00745 0)
510+EXPECTED_FOTS_FAILURE (fn-matches.re re00746 0)
511+EXPECTED_FOTS_FAILURE (fn-matches.re re00749 0)
512+EXPECTED_FOTS_FAILURE (fn-matches.re re00750 0)
513+EXPECTED_FOTS_FAILURE (fn-matches.re re00754 0)
514+EXPECTED_FOTS_FAILURE (fn-matches.re re00763 0)
515+EXPECTED_FOTS_FAILURE (fn-matches.re re00767 0)
516+EXPECTED_FOTS_FAILURE (fn-matches.re re00768 0)
517+EXPECTED_FOTS_FAILURE (fn-matches.re re00769 0)
518+EXPECTED_FOTS_FAILURE (fn-matches.re re00770 0)
519+EXPECTED_FOTS_FAILURE (fn-matches.re re00771 0)
520+EXPECTED_FOTS_FAILURE (fn-matches.re re00779 0)
521+EXPECTED_FOTS_FAILURE (fn-matches.re re00780 0)
522+EXPECTED_FOTS_FAILURE (fn-matches.re re00795 0)
523+EXPECTED_FOTS_FAILURE (fn-matches.re re00804 0)
524+EXPECTED_FOTS_FAILURE (fn-matches.re re00805 0)
525+EXPECTED_FOTS_FAILURE (fn-matches.re re00806 0)
526+EXPECTED_FOTS_FAILURE (fn-matches.re re00814 0)
527+EXPECTED_FOTS_FAILURE (fn-matches.re re00867 0)
528+EXPECTED_FOTS_FAILURE (fn-matches.re re00868 0)
529+EXPECTED_FOTS_FAILURE (fn-matches.re re00869 0)
530+EXPECTED_FOTS_FAILURE (fn-matches.re re00870 0)
531+EXPECTED_FOTS_FAILURE (fn-matches.re re00871 0)
532+EXPECTED_FOTS_FAILURE (fn-matches.re re00872 0)
533+EXPECTED_FOTS_FAILURE (fn-matches.re re00873 0)
534+EXPECTED_FOTS_FAILURE (fn-matches.re re00874 0)
535+EXPECTED_FOTS_FAILURE (fn-matches.re re00875 0)
536+EXPECTED_FOTS_FAILURE (fn-matches.re re00876 0)
537+EXPECTED_FOTS_FAILURE (fn-matches.re re00881 0)
538+EXPECTED_FOTS_FAILURE (fn-matches.re re00882 0)
539+EXPECTED_FOTS_FAILURE (fn-matches.re re00890 0)
540+EXPECTED_FOTS_FAILURE (fn-matches.re re00891 0)
541+EXPECTED_FOTS_FAILURE (fn-matches.re re00905 0)
542+EXPECTED_FOTS_FAILURE (fn-matches.re re00912 0)
543+EXPECTED_FOTS_FAILURE (fn-matches.re re00913 0)
544+EXPECTED_FOTS_FAILURE (fn-matches.re re00914 0)
545+EXPECTED_FOTS_FAILURE (fn-matches.re re00919 0)
546+EXPECTED_FOTS_FAILURE (fn-matches.re re00939 0)
547+EXPECTED_FOTS_FAILURE (fn-matches.re re00940 0)
548+EXPECTED_FOTS_FAILURE (fn-matches.re re00941 0)
549+EXPECTED_FOTS_FAILURE (fn-matches.re re00957 0)
550+EXPECTED_FOTS_FAILURE (fn-matches.re re00970 0)
551+EXPECTED_FOTS_FAILURE (fn-matches.re re00977 0)
552+EXPECTED_FOTS_FAILURE (fn-matches.re re00978 0)
553+EXPECTED_FOTS_FAILURE (fn-matches.re re00982 0)
554+EXPECTED_FOTS_FAILURE (fn-matches.re re00983 0)
555+EXPECTED_FOTS_FAILURE (fn-matches.re re00984 0)
556+EXPECTED_FOTS_FAILURE (fn-matches.re re00987 0)
557+EXPECTED_FOTS_FAILURE (fn-matches.re re00988 0)
558+EXPECTED_FOTS_FAILURE (fn-matches.re re00989 0)
559+EXPECTED_FOTS_FAILURE (fn-matches.re re00994 0)
560+EXPECTED_FOTS_FAILURE (fn-matches.re re00998 0)
561+EXPECTED_FOTS_FAILURE (fn-matches.re re00999 0)
562+EXPECTED_FOTS_FAILURE (fn-namespace-uri-from-QName NamespaceURIFromQNameFunc001 0)
563+EXPECTED_FOTS_FAILURE (fn-namespace-uri-from-QName NamespaceURIFromQNameFunc002 0)
564+EXPECTED_FOTS_FAILURE (fn-namespace-uri-from-QName NamespaceURIFromQNameFunc003 0)
565+EXPECTED_FOTS_FAILURE (fn-namespace-uri-from-QName NamespaceURIFromQNameFunc004 0)
566+EXPECTED_FOTS_FAILURE (fn-namespace-uri-from-QName NamespaceURIFromQNameFunc005 0)
567+EXPECTED_FOTS_FAILURE (fn-namespace-uri-from-QName NamespaceURIFromQNameFunc018 0)
568+EXPECTED_FOTS_FAILURE (fn-namespace-uri-from-QName NamespaceURIFromQNameFunc019 0)
569+EXPECTED_FOTS_FAILURE (fn-namespace-uri-from-QName NamespaceURIFromQNameFunc020 0)
570+EXPECTED_FOTS_FAILURE (fn-nilled fn-nilled-33 0)
571+EXPECTED_FOTS_FAILURE (fn-nilled fn-nilled-35 0)
572+EXPECTED_FOTS_FAILURE (fn-nilled fn-nilled-37 0)
573+EXPECTED_FOTS_FAILURE (fn-nilled fn-nilled-38 0)
574+EXPECTED_FOTS_FAILURE (fn-nilled fn-nilled-39 0)
575+EXPECTED_FOTS_FAILURE (fn-nilled fn-nilled-41 0)
576+EXPECTED_FOTS_FAILURE (fn-nilled fn-nilled-44 0)
577+EXPECTED_FOTS_FAILURE (fn-nilled fn-nilled-45 0)
578+EXPECTED_FOTS_FAILURE (fn-nilled fn-nilled-46 0)
579+EXPECTED_FOTS_FAILURE (fn-nilled fn-nilled-47 0)
580+EXPECTED_FOTS_FAILURE (fn-nilled fn-nilled-48 0)
581+EXPECTED_FOTS_FAILURE (fn-nilled fn-nilled-49 0)
582+EXPECTED_FOTS_FAILURE (fn-nilled fn-nilled-50 0)
583+EXPECTED_FOTS_FAILURE (fn-nilled fn-nilled-51 0)
584+EXPECTED_FOTS_FAILURE (fn-nilled fn-nilled-52 0)
585+EXPECTED_FOTS_FAILURE (fn-nilled cbcl-nilled-002 0)
586+EXPECTED_FOTS_FAILURE (fn-nilled cbcl-nilled-005 0)
587+EXPECTED_FOTS_FAILURE (fn-normalize-space fn-normalize-space-23 0)
588+EXPECTED_FOTS_FAILURE (fn-normalize-space fn-normalize-space-25 0)
589+EXPECTED_FOTS_FAILURE (fn-normalize-unicode cbcl-fn-normalize-unicode-001 0)
590+EXPECTED_FOTS_FAILURE (fn-normalize-unicode cbcl-fn-normalize-unicode-006 0)
591+EXPECTED_FOTS_FAILURE (fn-parse-xml parse-xml-001 0)
592+EXPECTED_FOTS_FAILURE (fn-parse-xml-fragment parse-xml-fragment-001 0)
593+EXPECTED_FOTS_FAILURE (fn-parse-xml-fragment parse-xml-fragment-005 0)
594+EXPECTED_FOTS_FAILURE (fn-parse-xml-fragment parse-xml-fragment-006 0)
595+EXPECTED_FOTS_FAILURE (fn-parse-xml-fragment parse-xml-fragment-007 0)
596+EXPECTED_FOTS_FAILURE (fn-parse-xml-fragment parse-xml-fragment-008 0)
597+EXPECTED_FOTS_FAILURE (fn-parse-xml-fragment parse-xml-fragment-009 0)
598+EXPECTED_FOTS_FAILURE (fn-parse-xml-fragment parse-xml-fragment-010 0)
599+EXPECTED_FOTS_FAILURE (fn-parse-xml-fragment parse-xml-fragment-011 0)
600+EXPECTED_FOTS_FAILURE (fn-parse-xml-fragment parse-xml-fragment-012 0)
601+EXPECTED_FOTS_FAILURE (fn-parse-xml-fragment parse-xml-fragment-013 0)
602+EXPECTED_FOTS_FAILURE (fn-parse-xml-fragment parse-xml-fragment-014 0)
603+EXPECTED_FOTS_FAILURE (fn-parse-xml-fragment parse-xml-fragment-015 0)
604+EXPECTED_FOTS_FAILURE (fn-position position-23 0)
605+EXPECTED_FOTS_FAILURE (fn-replace fn-replace-34 0)
606+EXPECTED_FOTS_FAILURE (fn-replace fn-replace-35 0)
607+EXPECTED_FOTS_FAILURE (fn-replace fn-replace-42 0)
608+EXPECTED_FOTS_FAILURE (fn-replace K2-ReplaceFunc-8 0)
609+EXPECTED_FOTS_FAILURE (fn-round-half-to-even fn-round-half-to-even-9 0)
610+EXPECTED_FOTS_FAILURE (fn-round-half-to-even fn-round-half-to-even-30 0)
611+EXPECTED_FOTS_FAILURE (fn-round-half-to-even fn-round-half-to-even-31 0)
612+EXPECTED_FOTS_FAILURE (fn-round-half-to-even fn-round-half-to-even-32 0)
613+EXPECTED_FOTS_FAILURE (fn-round-half-to-even fn-round-half-to-even-33 0)
614+EXPECTED_FOTS_FAILURE (fn-round-half-to-even fn-round-half-to-even-34 0)
615+EXPECTED_FOTS_FAILURE (fn-round-half-to-even fn-round-half-to-even-35 0)
616+EXPECTED_FOTS_FAILURE (fn-round-half-to-even cbcl-round-half-to-even-001 0)
617+EXPECTED_FOTS_FAILURE (fn-round-half-to-even cbcl-round-half-to-even-003 0)
618+EXPECTED_FOTS_FAILURE (fn-round-half-to-even cbcl-round-half-to-even-005 0)
619+EXPECTED_FOTS_FAILURE (fn-round-half-to-even cbcl-round-half-to-even-012 0)
620+EXPECTED_FOTS_FAILURE (fn-serialize serialize-xml-007a 0)
621+EXPECTED_FOTS_FAILURE (fn-serialize serialize-xml-008 0)
622+EXPECTED_FOTS_FAILURE (fn-string fn-string-22 0)
623+EXPECTED_FOTS_FAILURE (fn-string-length fn-string-length-22 0)
624+EXPECTED_FOTS_FAILURE (fn-string-length fn-string-length-24 0)
625+EXPECTED_FOTS_FAILURE (fn-subsequence cbcl-subsequence-004 0)
626+EXPECTED_FOTS_FAILURE (fn-subsequence cbcl-subsequence-017 0)
627+EXPECTED_FOTS_FAILURE (fn-subsequence cbcl-subsequence-018 0)
628+EXPECTED_FOTS_FAILURE (fn-subsequence cbcl-subsequence-024 0)
629+EXPECTED_FOTS_FAILURE (fn-substring-after fn-substring-after-24 0)
630+EXPECTED_FOTS_FAILURE (fn-substring-before fn-substring-before-24 0)
631+EXPECTED_FOTS_FAILURE (fn-tokenize fn-tokenize-31 0)
632+EXPECTED_FOTS_FAILURE (fn-tokenize fn-tokenize-32 0)
633+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-001 0)
634+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-002 0)
635+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-003 0)
636+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-004 0)
637+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-005 0)
638+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-006 0)
639+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-007 0)
640+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-008 0)
641+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-009 0)
642+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-010 0)
643+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-011 0)
644+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-012 0)
645+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-013 0)
646+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-014 0)
647+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-015 0)
648+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-016 0)
649+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-017 0)
650+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-018 0)
651+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-019 0)
652+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-020 0)
653+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-021 0)
654+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-022 0)
655+EXPECTED_FOTS_FAILURE (fn-unordered fn-unordered-mix-args-023 0)
656+EXPECTED_FOTS_FAILURE (fn-unparsed-text fn-unparsed-text-013 0)
657+EXPECTED_FOTS_FAILURE (fn-unparsed-text fn-unparsed-text-014 0)
658+EXPECTED_FOTS_FAILURE (fn-unparsed-text fn-unparsed-text-037 0)
659+EXPECTED_FOTS_FAILURE (fn-unparsed-text fn-unparsed-text-038 0)
660+EXPECTED_FOTS_FAILURE (fn-unparsed-text fn-unparsed-text-039 0)
661+EXPECTED_FOTS_FAILURE (fn-unparsed-text fn-unparsed-text-042 0)
662+EXPECTED_FOTS_FAILURE (fn-unparsed-text fn-unparsed-text-050 0)
663+EXPECTED_FOTS_FAILURE (fn-unparsed-text-available fn-unparsed-text-available-013 0)
664+EXPECTED_FOTS_FAILURE (fn-unparsed-text-available fn-unparsed-text-available-014 0)
665+EXPECTED_FOTS_FAILURE (fn-unparsed-text-available fn-unparsed-text-available-023 0)
666+EXPECTED_FOTS_FAILURE (fn-unparsed-text-available fn-unparsed-text-available-024 0)
667+EXPECTED_FOTS_FAILURE (fn-unparsed-text-available fn-unparsed-text-available-036 0)
668+EXPECTED_FOTS_FAILURE (fn-unparsed-text-available fn-unparsed-text-available-037 0)
669+EXPECTED_FOTS_FAILURE (fn-unparsed-text-available fn-unparsed-text-available-038 0)
670+EXPECTED_FOTS_FAILURE (fn-unparsed-text-lines fn-unparsed-text-lines-013 0)
671+EXPECTED_FOTS_FAILURE (fn-unparsed-text-lines fn-unparsed-text-lines-014 0)
672+EXPECTED_FOTS_FAILURE (fn-unparsed-text-lines fn-unparsed-text-lines-037 0)
673+EXPECTED_FOTS_FAILURE (fn-unparsed-text-lines fn-unparsed-text-lines-038 0)
674+EXPECTED_FOTS_FAILURE (fn-unparsed-text-lines fn-unparsed-text-lines-039 0)
675+EXPECTED_FOTS_FAILURE (fn-unparsed-text-lines fn-unparsed-text-lines-040 0)
676+EXPECTED_FOTS_FAILURE (fn-unparsed-text-lines fn-unparsed-text-lines-042 0)
677+EXPECTED_FOTS_FAILURE (fn-unparsed-text-lines fn-unparsed-text-lines-047 0)
678+EXPECTED_FOTS_FAILURE (fn-unparsed-text-lines fn-unparsed-text-lines-048 0)
679+EXPECTED_FOTS_FAILURE (fn-unparsed-text-lines fn-unparsed-text-lines-049 0)
680+EXPECTED_FOTS_FAILURE (fn-unparsed-text-lines fn-unparsed-text-lines-050 0)
681+EXPECTED_FOTS_FAILURE (fn-unparsed-text-lines fn-unparsed-text-lines-051 0)
682+EXPECTED_FOTS_FAILURE (fn-unparsed-text-lines fn-unparsed-text-lines-053 0)
683+EXPECTED_FOTS_FAILURE (fn-unparsed-text-lines fn-unparsed-text-lines-054 0)
684+EXPECTED_FOTS_FAILURE (math-acos math-acos-003 0)
685+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FOAR0001_9 0)
686+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FOAR0002_1 0)
687+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FOAR0002-5 0)
688+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FOCA0001_1 0)
689+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FOCA0003_1 0)
690+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0001-1 0)
691+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0001-10 0)
692+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0001-11 0)
693+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0001-12 0)
694+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0001-2 0)
695+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0001-3 0)
696+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0001-4 0)
697+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0001-5 0)
698+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0001-6 0)
699+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0001-7 0)
700+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0001-8 0)
701+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0001-9 0)
702+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0002-1 0)
703+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0002-2 0)
704+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0002-3 0)
705+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0002-4 0)
706+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0002-6 0)
707+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0002-7 0)
708+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0002-8 0)
709+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes FODT0002-9 0)
710+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes XPTY0004_45 0)
711+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes XQDY0091 0)
712+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes XQST0046_13 0)
713+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes XQST0046_14 0)
714+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes XQST0085 0)
715+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes XQTY0086_2 0)
716+EXPECTED_FOTS_FAILURE (misc-CombinedErrorCodes XQTY0086_3 0)
717+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-id-5 0)
718+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-id-7 0)
719+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-id-8 0)
720+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-id-9 0)
721+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-id-12 0)
722+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-id-13 0)
723+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-id-15 0)
724+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-id-16 0)
725+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-id-17 0)
726+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-id-18 0)
727+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-id-19 0)
728+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-id-20 0)
729+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-id-21 0)
730+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-id-23 0)
731+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-idref-5 0)
732+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-idref-7 0)
733+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-idref-8 0)
734+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-idref-9 0)
735+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-idref-15 0)
736+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-idref-16 0)
737+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-idref-17 0)
738+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-idref-18 0)
739+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-idref-19 0)
740+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-idref-20 0)
741+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-idref-21 0)
742+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-idref-23 0)
743+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-idref-30 0)
744+EXPECTED_FOTS_FAILURE (misc-MiscFunctions fn-idref-31 0)
745+EXPECTED_FOTS_FAILURE (misc-Serialization K2-Serialization-1 0)
746+EXPECTED_FOTS_FAILURE (misc-Serialization K2-Serialization-2 0)
747+EXPECTED_FOTS_FAILURE (misc-Serialization K2-Serialization-3 0)
748+EXPECTED_FOTS_FAILURE (misc-Serialization K2-Serialization-4 0)
749+EXPECTED_FOTS_FAILURE (misc-Serialization K2-Serialization-5 0)
750+EXPECTED_FOTS_FAILURE (misc-Serialization K2-Serialization-6 0)
751+EXPECTED_FOTS_FAILURE (misc-Serialization K2-Serialization-9 0)
752+EXPECTED_FOTS_FAILURE (misc-Serialization K2-Serialization-10 0)
753+EXPECTED_FOTS_FAILURE (misc-Serialization K2-Serialization-11 0)
754+EXPECTED_FOTS_FAILURE (misc-XMLEdition XML10-4ed-Excluded-char-1 0)
755+EXPECTED_FOTS_FAILURE (misc-XMLEdition XML10-5ed-Included-char-1 0)
756+EXPECTED_FOTS_FAILURE (misc-XMLEdition XML11-1ed-Included-char-1 0)
757+EXPECTED_FOTS_FAILURE (op-add-dayTimeDurations cbcl-plus-002 0)
758+EXPECTED_FOTS_FAILURE (op-add-dayTimeDurations cbcl-plus-004 0)
759+EXPECTED_FOTS_FAILURE (op-add-dayTimeDurations cbcl-plus-006 0)
760+EXPECTED_FOTS_FAILURE (op-add-dayTimeDurations cbcl-plus-008 0)
761+EXPECTED_FOTS_FAILURE (op-add-dayTimeDuration-to-date cbcl-add-dayTimeDuration-to-date-003 0)
762+EXPECTED_FOTS_FAILURE (op-add-dayTimeDuration-to-dateTime cbcl-add-dayTimeDuration-to-dateTime-003 0)
763+EXPECTED_FOTS_FAILURE (op-add-yearMonthDuration-to-date cbcl-add-yearMonthDuration-to-date-003 0)
764+EXPECTED_FOTS_FAILURE (op-add-yearMonthDuration-to-dateTime cbcl-add-yearMonthDuration-to-dateTime-003 0)
765+EXPECTED_FOTS_FAILURE (op-date-greater-than cbcl-date-gt-001 0)
766+EXPECTED_FOTS_FAILURE (op-date-greater-than cbcl-date-le-001 0)
767+EXPECTED_FOTS_FAILURE (op-date-less-than cbcl-date-ge-001 0)
768+EXPECTED_FOTS_FAILURE (op-date-less-than cbcl-date-lt-001 0)
769+EXPECTED_FOTS_FAILURE (op-divide-dayTimeDuration cbcl-divide-dayTimeDuration-003 0)
770+EXPECTED_FOTS_FAILURE (op-divide-dayTimeDuration-by-dayTimeDuration cbcl-divide-dayTimeDuration-by-dayTimeDuration-001 0)
771+EXPECTED_FOTS_FAILURE (op-divide-dayTimeDuration-by-dayTimeDuration cbcl-divide-dayTimeDuration-by-dayTimeDuration-002 0)
772+EXPECTED_FOTS_FAILURE (op-divide-dayTimeDuration-by-dayTimeDuration cbcl-divide-dayTimeDuration-by-dayTimeDuration-003 0)
773+EXPECTED_FOTS_FAILURE (op-divide-yearMonthDuration cbcl-divide-yearMonthDuration-003 0)
774+EXPECTED_FOTS_FAILURE (op-divide-yearMonthDuration-by-yearMonthDuration cbcl-divide-yearMonthDuration-by-yearMonthDuration-001 0)
775+EXPECTED_FOTS_FAILURE (op-intersect fn-intersect-node-args-002 0)
776+EXPECTED_FOTS_FAILURE (op-intersect fn-intersect-node-args-015 0)
777+EXPECTED_FOTS_FAILURE (op-intersect fn-intersect-node-args-016 0)
778+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-1 0)
779+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-2 0)
780+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-3 0)
781+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-4 0)
782+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-5 0)
783+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-6 0)
784+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-7 0)
785+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-8 0)
786+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-9 0)
787+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-10 0)
788+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-11 0)
789+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-12 0)
790+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-13 0)
791+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-14 0)
792+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-15 0)
793+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-16 0)
794+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-17 0)
795+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-18 0)
796+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-19 0)
797+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-20 0)
798+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-21 0)
799+EXPECTED_FOTS_FAILURE (op-NOTATION-equal Comp-notation-22 0)
800+EXPECTED_FOTS_FAILURE (op-numeric-divide op-numeric-divide-big-01 0)
801+EXPECTED_FOTS_FAILURE (op-numeric-integer-divide cbcl-numeric-idivide-002 0)
802+EXPECTED_FOTS_FAILURE (op-numeric-subtract op-numeric-subtract-big-01 0)
803+EXPECTED_FOTS_FAILURE (op-subtract-dates cbcl-subtract-dates-001 0)
804+EXPECTED_FOTS_FAILURE (op-subtract-dates cbcl-subtract-dates-002 0)
805+EXPECTED_FOTS_FAILURE (op-subtract-dates cbcl-subtract-dates-003 0)
806+EXPECTED_FOTS_FAILURE (op-subtract-dates cbcl-subtract-dates-004 0)
807+EXPECTED_FOTS_FAILURE (op-subtract-dateTimes cbcl-subtract-dateTimes-001 0)
808+EXPECTED_FOTS_FAILURE (op-subtract-dateTimes cbcl-subtract-dateTimes-002 0)
809+EXPECTED_FOTS_FAILURE (op-subtract-dateTimes cbcl-subtract-dateTimes-003 0)
810+EXPECTED_FOTS_FAILURE (op-subtract-dateTimes cbcl-subtract-dateTimes-004 0)
811+EXPECTED_FOTS_FAILURE (op-subtract-dayTimeDuration-from-date cbcl-subtract-dayTimeDuration-from-date-002 0)
812+EXPECTED_FOTS_FAILURE (op-subtract-dayTimeDuration-from-dateTime cbcl-subtract-dayTimeDuration-from-dateTime-002 0)
813+EXPECTED_FOTS_FAILURE (op-subtract-dayTimeDurations cbcl-subtract-dayTimeDurations-003 0)
814+EXPECTED_FOTS_FAILURE (op-subtract-dayTimeDurations cbcl-minus-002 0)
815+EXPECTED_FOTS_FAILURE (op-subtract-dayTimeDurations cbcl-minus-004 0)
816+EXPECTED_FOTS_FAILURE (op-subtract-dayTimeDurations cbcl-minus-006 0)
817+EXPECTED_FOTS_FAILURE (op-subtract-dayTimeDurations cbcl-minus-008 0)
818+EXPECTED_FOTS_FAILURE (op-subtract-times cbcl-subtract-times-001 0)
819+EXPECTED_FOTS_FAILURE (op-subtract-times cbcl-subtract-times-002 0)
820+EXPECTED_FOTS_FAILURE (op-subtract-times cbcl-subtract-times-003 0)
821+EXPECTED_FOTS_FAILURE (op-subtract-times cbcl-subtract-times-004 0)
822+EXPECTED_FOTS_FAILURE (op-subtract-yearMonthDuration-from-date cbcl-subtract-yearMonthDuration-from-date-002 0)
823+EXPECTED_FOTS_FAILURE (op-subtract-yearMonthDuration-from-dateTime cbcl-subtract-yearMonthDuration-from-dateTime-002 0)
824+EXPECTED_FOTS_FAILURE (op-subtract-yearMonthDurations cbcl-subtract-yearMonthDurations-003 0)
825+EXPECTED_FOTS_FAILURE (op-union fn-union-node-args-015 0)
826+EXPECTED_FOTS_FAILURE (op-union fn-union-node-args-016 0)
827+EXPECTED_FOTS_FAILURE (op-union fn-union-node-args-017 0)
828+EXPECTED_FOTS_FAILURE (prod-AllowingEmpty outer-013 0)
829+EXPECTED_FOTS_FAILURE (prod-AllowingEmpty outer-016 0)
830+EXPECTED_FOTS_FAILURE (prod-Annotation annotation-3 0)
831+EXPECTED_FOTS_FAILURE (prod-Annotation annotation-26 0)
832+EXPECTED_FOTS_FAILURE (prod-Annotation annotation-27 0)
833+EXPECTED_FOTS_FAILURE (prod-Annotation annotation-28 0)
834+EXPECTED_FOTS_FAILURE (prod-Annotation annotation-assertion-1 0)
835+EXPECTED_FOTS_FAILURE (prod-Annotation annotation-assertion-2 0)
836+EXPECTED_FOTS_FAILURE (prod-Annotation annotation-assertion-3 0)
837+EXPECTED_FOTS_FAILURE (prod-Annotation annotation-assertion-4 0)
838+EXPECTED_FOTS_FAILURE (prod-Annotation annotation-assertion-5 0)
839+EXPECTED_FOTS_FAILURE (prod-Annotation annotation-assertion-6 0)
840+EXPECTED_FOTS_FAILURE (prod-Annotation annotation-assertion-7 0)
841+EXPECTED_FOTS_FAILURE (prod-Annotation annotation-assertion-8 0)
842+EXPECTED_FOTS_FAILURE (prod-Annotation annotation-assertion-9 0)
843+EXPECTED_FOTS_FAILURE (prod-Annotation annotation-assertion-10 0)
844+EXPECTED_FOTS_FAILURE (prod-AxisStep Axes085 0)
845+EXPECTED_FOTS_FAILURE (prod-AxisStep Axes086 0)
846+EXPECTED_FOTS_FAILURE (prod-AxisStep Axes089 0)
847+EXPECTED_FOTS_FAILURE (prod-AxisStep cbcl-childAxis-001 0)
848+EXPECTED_FOTS_FAILURE (prod-AxisStep cbcl-wild-002 0)
849+EXPECTED_FOTS_FAILURE (prod-AxisStep.abbr abbreviatedSyntax-3 0)
850+EXPECTED_FOTS_FAILURE (prod-AxisStep.abbr abbreviatedSyntax-5 0)
851+EXPECTED_FOTS_FAILURE (prod-AxisStep.abbr abbreviatedSyntax-6 0)
852+EXPECTED_FOTS_FAILURE (prod-AxisStep.abbr abbreviatedSyntax-8 0)
853+EXPECTED_FOTS_FAILURE (prod-AxisStep.abbr abbreviatedSyntax-14 0)
854+EXPECTED_FOTS_FAILURE (prod-AxisStep.abbr abbreviatedSyntax-16 0)
855+EXPECTED_FOTS_FAILURE (prod-AxisStep.abbr abbreviatedSyntax-17 0)
856+EXPECTED_FOTS_FAILURE (prod-AxisStep.abbr abbreviatedSyntax-18 0)
857+EXPECTED_FOTS_FAILURE (prod-AxisStep.abbr abbreviatedSyntax-19 0)
858+EXPECTED_FOTS_FAILURE (prod-AxisStep.abbr abbreviatedSyntax-20 0)
859+EXPECTED_FOTS_FAILURE (prod-AxisStep.abbr abbreviatedSyntax-21 0)
860+EXPECTED_FOTS_FAILURE (prod-AxisStep.abbr abbreviatedSyntax-25 0)
861+EXPECTED_FOTS_FAILURE (prod-AxisStep.ancestor ancestor-15 0)
862+EXPECTED_FOTS_FAILURE (prod-AxisStep.ancestor-or-self ancestorself-13 0)
863+EXPECTED_FOTS_FAILURE (prod-AxisStep.ancestor-or-self ancestorself-15 0)
864+EXPECTED_FOTS_FAILURE (prod-AxisStep.ancestor-or-self unabbreviatedSyntax-11 0)
865+EXPECTED_FOTS_FAILURE (prod-BaseURIDecl base-URI-4 0)
866+EXPECTED_FOTS_FAILURE (prod-BaseURIDecl K2-BaseURIProlog-5 0)
867+EXPECTED_FOTS_FAILURE (prod-BoundarySpaceDecl boundary-space-005 0)
868+EXPECTED_FOTS_FAILURE (prod-BoundarySpaceDecl boundary-space-007 0)
869+EXPECTED_FOTS_FAILURE (prod-BoundarySpaceDecl boundary-space-009 0)
870+EXPECTED_FOTS_FAILURE (prod-CastableExpr CastableAs648 0)
871+EXPECTED_FOTS_FAILURE (prod-CastableExpr Castable-UnionType-1 0)
872+EXPECTED_FOTS_FAILURE (prod-CastableExpr Castable-ListType-2 0)
873+EXPECTED_FOTS_FAILURE (prod-CastableExpr cbcl-castable-date-001 0)
874+EXPECTED_FOTS_FAILURE (prod-CastableExpr cbcl-castable-date-002 0)
875+EXPECTED_FOTS_FAILURE (prod-CastableExpr cbcl-castable-dateTime-001 0)
876+EXPECTED_FOTS_FAILURE (prod-CastableExpr cbcl-castable-dateTime-002 0)
877+EXPECTED_FOTS_FAILURE (prod-CastableExpr cbcl-castable-duration-001 0)
878+EXPECTED_FOTS_FAILURE (prod-CastableExpr cbcl-castable-duration-002 0)
879+EXPECTED_FOTS_FAILURE (prod-CastableExpr cbcl-castable-yearMonthDuration-001 0)
880+EXPECTED_FOTS_FAILURE (prod-CastableExpr cbcl-castable-yearMonthDuration-002 0)
881+EXPECTED_FOTS_FAILURE (prod-CastExpr CastAs673a 0)
882+EXPECTED_FOTS_FAILURE (prod-CastExpr CastAs674a 0)
883+EXPECTED_FOTS_FAILURE (prod-CastExpr CastAsNamespaceSensitiveType-10 0)
884+EXPECTED_FOTS_FAILURE (prod-CastExpr K-SeqExprCast-71b 0)
885+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-date-001 0)
886+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-date-002 0)
887+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-dateTime-001 0)
888+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-dateTime-002 0)
889+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-decimal-001 0)
890+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-decimal-002 0)
891+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-decimal-003 0)
892+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-decimal-004 0)
893+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-duration-001 0)
894+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-duration-002 0)
895+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-integer-001 0)
896+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-integer-002 0)
897+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-integer-003 0)
898+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-integer-004 0)
899+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-ncname-001 0)
900+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-normalizedString-001 0)
901+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-normalizedString-001b 0)
902+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-token-001 0)
903+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-token-001b 0)
904+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-yearMonthDuration-001 0)
905+EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-yearMonthDuration-002 0)
906+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-UnionType-1 0)
907+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-UnionType-2 0)
908+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-UnionType-3 0)
909+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-UnionType-5 0)
910+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-UnionType-6 0)
911+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-UnionType-9 0)
912+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-UnionType-10 0)
913+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-UnionType-11 0)
914+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-UnionType-12 0)
915+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-UnionType-16 0)
916+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-UnionType-19 0)
917+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-UnionType-20 0)
918+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-UnionType-21 0)
919+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-UnionType-25 0)
920+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-UnionType-27 0)
921+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-UnionType-28 0)
922+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-UnionType-29 0)
923+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-UnionType-33 0)
924+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-UnionType-34 0)
925+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-ListType-1 0)
926+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-ListType-2 0)
927+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-ListType-4 0)
928+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-ListType-7 0)
929+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-ListType-11 0)
930+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-ListType-12 0)
931+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-ListType-14 0)
932+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-ListType-21 0)
933+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-ListType-22 0)
934+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-ListType-28 0)
935+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-ListType-29 0)
936+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-ListType-30 0)
937+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-ListType-31 0)
938+EXPECTED_FOTS_FAILURE (prod-CastExpr.schema CastAs-ListType-32 0)
939+EXPECTED_FOTS_FAILURE (prod-Comment XQueryComment012 0)
940+EXPECTED_FOTS_FAILURE (prod-CompAttrConstructor K2-ComputeConAttr-51 0)
941+EXPECTED_FOTS_FAILURE (prod-CompAttrConstructor K2-ComputeConAttr-53 0)
942+EXPECTED_FOTS_FAILURE (prod-CompAttrConstructor K2-ComputeConAttr-58 0)
943+EXPECTED_FOTS_FAILURE (prod-CompDocConstructor K2-ConDocNode-2 0)
944+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-001 0)
945+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-002 0)
946+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-003 0)
947+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-004 0)
948+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-005 0)
949+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-006 0)
950+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-010 0)
951+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-011 0)
952+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-012 0)
953+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-013 0)
954+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-014 0)
955+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-015 0)
956+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-022 0)
957+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-027 0)
958+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-028 0)
959+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-030 0)
960+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-031 0)
961+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-032 0)
962+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-033 0)
963+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-034 0)
964+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-035 0)
965+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-036 0)
966+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-037 0)
967+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-038 0)
968+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-039 0)
969+EXPECTED_FOTS_FAILURE (prod-CompNamespaceConstructor nscons-041 0)
970+EXPECTED_FOTS_FAILURE (prod-CompTextConstructor K2-ConText-4 0)
971+EXPECTED_FOTS_FAILURE (prod-ContextItemDecl contextDecl-016 0)
972+EXPECTED_FOTS_FAILURE (prod-ContextItemDecl contextDecl-017 0)
973+EXPECTED_FOTS_FAILURE (prod-ContextItemDecl contextDecl-031 0)
974+EXPECTED_FOTS_FAILURE (prod-ContextItemDecl contextDecl-047 0)
975+EXPECTED_FOTS_FAILURE (prod-ContextItemDecl contextDecl-049 0)
976+EXPECTED_FOTS_FAILURE (prod-ContextItemDecl contextDecl-055 0)
977+EXPECTED_FOTS_FAILURE (prod-CopyNamespacesDecl copynamespace-3 0)
978+EXPECTED_FOTS_FAILURE (prod-CopyNamespacesDecl K2-CopyNamespacesProlog-5 0)
979+EXPECTED_FOTS_FAILURE (prod-CountClause count-007 0)
980+EXPECTED_FOTS_FAILURE (prod-CountClause count-008 0)
981+EXPECTED_FOTS_FAILURE (prod-DecimalFormatDecl decimal-format-14 0)
982+EXPECTED_FOTS_FAILURE (prod-DecimalFormatDecl decimal-format-907err 0)
983+EXPECTED_FOTS_FAILURE (prod-DecimalFormatDecl decimal-format-908err 0)
984+EXPECTED_FOTS_FAILURE (prod-DecimalFormatDecl decimal-format-910err 0)
985+EXPECTED_FOTS_FAILURE (prod-DecimalFormatDecl decimal-format-911err 0)
986+EXPECTED_FOTS_FAILURE (prod-DefaultNamespaceDecl defaultnamespacedeclerr-6 0)
987+EXPECTED_FOTS_FAILURE (prod-DefaultNamespaceDecl defaultnamespacedeclerr-8 0)
988+EXPECTED_FOTS_FAILURE (prod-DirAttributeList Constr-attr-nsprein-3 0)
989+EXPECTED_FOTS_FAILURE (prod-DirAttributeList Constr-attr-nsprein-4 0)
990+EXPECTED_FOTS_FAILURE (prod-DirAttributeList Constr-attr-ws-3 0)
991+EXPECTED_FOTS_FAILURE (prod-DirAttributeList Constr-attr-ws-4 0)
992+EXPECTED_FOTS_FAILURE (prod-DirAttributeList Constr-attr-ws-5 0)
993+EXPECTED_FOTS_FAILURE (prod-DirAttributeList Constr-attr-entref-1 0)
994+EXPECTED_FOTS_FAILURE (prod-DirAttributeList Constr-attr-entref-2 0)
995+EXPECTED_FOTS_FAILURE (prod-DirAttributeList K2-DirectConElemAttr-75 0)
996+EXPECTED_FOTS_FAILURE (prod-DirAttributeList DirectConElemAttr-1 0)
997+EXPECTED_FOTS_FAILURE (prod-DirectConstructor Constr-pi-content-5 0)
998+EXPECTED_FOTS_FAILURE (prod-DirectConstructor Constr-comment-5 0)
999+EXPECTED_FOTS_FAILURE (prod-DirectConstructor K2-DirectConOther-35 0)
1000+EXPECTED_FOTS_FAILURE (prod-DirectConstructor K2-DirectConOther-46 0)
1001+EXPECTED_FOTS_FAILURE (prod-DirectConstructor K2-DirectConOther-49 0)
1002+EXPECTED_FOTS_FAILURE (prod-DirectConstructor K2-DirectConOther-50 0)
1003+EXPECTED_FOTS_FAILURE (prod-DirectConstructor K2-DirectConOther-51 0)
1004+EXPECTED_FOTS_FAILURE (prod-DirectConstructor K2-DirectConOther-52 0)
1005+EXPECTED_FOTS_FAILURE (prod-DirectConstructor K2-DirectConOther-53 0)
1006+EXPECTED_FOTS_FAILURE (prod-DirectConstructor K2-DirectConOther-54 0)
1007+EXPECTED_FOTS_FAILURE (prod-DirectConstructor K2-DirectConOther-66 0)
1008+EXPECTED_FOTS_FAILURE (prod-DirectConstructor K2-DirectConOther-70 0)
1009+EXPECTED_FOTS_FAILURE (prod-DirElemConstructor Constr-elem-curlybr-3 0)
1010+EXPECTED_FOTS_FAILURE (prod-DirElemConstructor Constr-elem-curlybr-4 0)
1011+EXPECTED_FOTS_FAILURE (prod-DirElemConstructor K2-DirectConElem-38 0)
1012+EXPECTED_FOTS_FAILURE (prod-DirElemConstructor K2-DirectConElem-48 0)
1013+EXPECTED_FOTS_FAILURE (prod-DirElemConstructor K2-DirectConElem-49 0)
1014+EXPECTED_FOTS_FAILURE (prod-DirElemConstructor K2-DirectConElem-52 0)
1015+EXPECTED_FOTS_FAILURE (prod-DirElemConstructor K2-DirectConElem-53a 0)
1016+EXPECTED_FOTS_FAILURE (prod-DirElemContent Constr-cont-eol-3 0)
1017+EXPECTED_FOTS_FAILURE (prod-DirElemContent Constr-cont-eol-4 0)
1018+EXPECTED_FOTS_FAILURE (prod-DirElemContent Constr-cont-entref-1 0)
1019+EXPECTED_FOTS_FAILURE (prod-DirElemContent Constr-cont-entref-3 0)
1020+EXPECTED_FOTS_FAILURE (prod-DirElemContent Constr-cont-cdata-1 0)
1021+EXPECTED_FOTS_FAILURE (prod-DirElemContent Constr-cont-nsmode-5 0)
1022+EXPECTED_FOTS_FAILURE (prod-DirElemContent Constr-cont-nsmode-6 0)
1023+EXPECTED_FOTS_FAILURE (prod-DirElemContent Constr-cont-nsmode-7 0)
1024+EXPECTED_FOTS_FAILURE (prod-DirElemContent Constr-cont-nsmode-8 0)
1025+EXPECTED_FOTS_FAILURE (prod-DirElemContent Constr-cont-nsmode-10 0)
1026+EXPECTED_FOTS_FAILURE (prod-DirElemContent Constr-cont-nsmode-11 0)
1027+EXPECTED_FOTS_FAILURE (prod-DirElemContent K2-DirectConElemContent-28 0)
1028+EXPECTED_FOTS_FAILURE (prod-DirElemContent.namespace K2-DirectConElemNamespace-40 0)
1029+EXPECTED_FOTS_FAILURE (prod-DirElemContent.namespace K2-DirectConElemNamespace-56 0)
1030+EXPECTED_FOTS_FAILURE (prod-DirElemContent.namespace Constr-inscope-10 0)
1031+EXPECTED_FOTS_FAILURE (prod-DirElemContent.namespace Constr-inscope-12 0)
1032+EXPECTED_FOTS_FAILURE (prod-DirElemContent.namespace Constr-inscope-21 0)
1033+EXPECTED_FOTS_FAILURE (prod-DirElemContent.namespace Constr-inscope-22 0)
1034+EXPECTED_FOTS_FAILURE (prod-DirElemContent.whitespace Constr-ws-enclexpr-15 0)
1035+EXPECTED_FOTS_FAILURE (prod-DirElemContent.whitespace Constr-ws-enclexpr-16 0)
1036+EXPECTED_FOTS_FAILURE (prod-DirElemContent.whitespace Constr-ws-enclexpr-17 0)
1037+EXPECTED_FOTS_FAILURE (prod-DirElemContent.whitespace Constr-ws-enclexpr-18 0)
1038+EXPECTED_FOTS_FAILURE (prod-DirElemContent.whitespace Constr-ws-enclexpr-19 0)
1039+EXPECTED_FOTS_FAILURE (prod-DirElemContent.whitespace Constr-ws-enclexpr-20 0)
1040+EXPECTED_FOTS_FAILURE (prod-DirElemContent.whitespace Constr-ws-enclexpr-21 0)
1041+EXPECTED_FOTS_FAILURE (prod-DirElemContent.whitespace Constr-ws-enclexpr-22 0)
1042+EXPECTED_FOTS_FAILURE (prod-DirElemContent.whitespace Constr-ws-enclexpr-23 0)
1043+EXPECTED_FOTS_FAILURE (prod-DirElemContent.whitespace Constr-ws-enclexpr-24 0)
1044+EXPECTED_FOTS_FAILURE (prod-DirElemContent.whitespace Constr-ws-genchref-1 0)
1045+EXPECTED_FOTS_FAILURE (prod-DirElemContent.whitespace Constr-ws-genchref-2 0)
1046+EXPECTED_FOTS_FAILURE (prod-DirElemContent.whitespace Constr-ws-genchref-3 0)
1047+EXPECTED_FOTS_FAILURE (prod-DirElemContent.whitespace Constr-ws-genchref-4 0)
1048+EXPECTED_FOTS_FAILURE (prod-DirElemContent.whitespace K2-DirectConElemWhitespace-10 0)
1049+EXPECTED_FOTS_FAILURE (prod-DirElemContent.whitespace K2-DirectConElemWhitespace-25 0)
1050+EXPECTED_FOTS_FAILURE (prod-FLWORExpr ForExprType025 0)
1051+EXPECTED_FOTS_FAILURE (prod-FLWORExpr ForExprType026 0)
1052+EXPECTED_FOTS_FAILURE (prod-FLWORExpr ForExprType027 0)
1053+EXPECTED_FOTS_FAILURE (prod-FLWORExpr ForExprType037 0)
1054+EXPECTED_FOTS_FAILURE (prod-FLWORExpr ForExprType038 0)
1055+EXPECTED_FOTS_FAILURE (prod-FLWORExpr ForExprType039 0)
1056+EXPECTED_FOTS_FAILURE (prod-FLWORExpr ForExprType040 0)
1057+EXPECTED_FOTS_FAILURE (prod-FLWORExpr ForExprType041 0)
1058+EXPECTED_FOTS_FAILURE (prod-FLWORExpr ForExprType042 0)
1059+EXPECTED_FOTS_FAILURE (prod-FLWORExpr ForExprType043 0)
1060+EXPECTED_FOTS_FAILURE (prod-FLWORExpr ForExprType044 0)
1061+EXPECTED_FOTS_FAILURE (prod-FLWORExpr ForExprType048 0)
1062+EXPECTED_FOTS_FAILURE (prod-FLWORExpr ForExprType049 0)
1063+EXPECTED_FOTS_FAILURE (prod-FLWORExpr ForExprType050 0)
1064+EXPECTED_FOTS_FAILURE (prod-FLWORExpr ForExprType051 0)
1065+EXPECTED_FOTS_FAILURE (prod-FLWORExpr ForExprType052 0)
1066+EXPECTED_FOTS_FAILURE (prod-FLWORExpr ForExprType053 0)
1067+EXPECTED_FOTS_FAILURE (prod-FLWORExpr step-expr-si-2 0)
1068+EXPECTED_FOTS_FAILURE (prod-FLWORExpr step-expr-si-3 0)
1069+EXPECTED_FOTS_FAILURE (prod-ForClause ForExpr004 0)
1070+EXPECTED_FOTS_FAILURE (prod-ForClause ForExpr013 0)
1071+EXPECTED_FOTS_FAILURE (prod-ForClause ForExprType022 0)
1072+EXPECTED_FOTS_FAILURE (prod-ForClause ForExprType023 0)
1073+EXPECTED_FOTS_FAILURE (prod-ForClause ForExprType024 0)
1074+EXPECTED_FOTS_FAILURE (prod-ForClause ForExprType036 0)
1075+EXPECTED_FOTS_FAILURE (prod-FunctionCall FunctionCall-003 0)
1076+EXPECTED_FOTS_FAILURE (prod-FunctionCall FunctionCall-005 0)
1077+EXPECTED_FOTS_FAILURE (prod-FunctionCall FunctionCall-009 0)
1078+EXPECTED_FOTS_FAILURE (prod-FunctionCall FunctionCall-011 0)
1079+EXPECTED_FOTS_FAILURE (prod-FunctionCall FunctionCall-036 0)
1080+EXPECTED_FOTS_FAILURE (prod-FunctionCall FunctionCall-037 0)
1081+EXPECTED_FOTS_FAILURE (prod-GroupByClause group-001 0)
1082+EXPECTED_FOTS_FAILURE (prod-GroupByClause group-001a 0)
1083+EXPECTED_FOTS_FAILURE (prod-GroupByClause group-002 0)
1084+EXPECTED_FOTS_FAILURE (prod-GroupByClause group-002a 0)
1085+EXPECTED_FOTS_FAILURE (prod-GroupByClause group-003 0)
1086+EXPECTED_FOTS_FAILURE (prod-GroupByClause group-003a 0)
1087+EXPECTED_FOTS_FAILURE (prod-GroupByClause group-004 0)
1088+EXPECTED_FOTS_FAILURE (prod-GroupByClause group-007 0)
1089+EXPECTED_FOTS_FAILURE (prod-GroupByClause group-010 0)
1090+EXPECTED_FOTS_FAILURE (prod-GroupByClause group-011 0)
1091+EXPECTED_FOTS_FAILURE (prod-GroupByClause group-013 0)
1092+EXPECTED_FOTS_FAILURE (prod-GroupByClause group-014 0)
1093+EXPECTED_FOTS_FAILURE (prod-IfExpr CondExpr012 0)
1094+EXPECTED_FOTS_FAILURE (prod-IfExpr CondExpr017 0)
1095+EXPECTED_FOTS_FAILURE (prod-InstanceofExpr instanceof112 0)
1096+EXPECTED_FOTS_FAILURE (prod-InstanceofExpr instanceof116 0)
1097+EXPECTED_FOTS_FAILURE (prod-InstanceofExpr instanceof118 0)
1098+EXPECTED_FOTS_FAILURE (prod-InstanceofExpr instanceof119 0)
1099+EXPECTED_FOTS_FAILURE (prod-InstanceofExpr cbcl-instance-of-001 0)
1100+EXPECTED_FOTS_FAILURE (prod-LetClause LetExpr020a 0)
1101+EXPECTED_FOTS_FAILURE (prod-Literal Literals056 0)
1102+EXPECTED_FOTS_FAILURE (prod-Literal Literals056a 0)
1103+EXPECTED_FOTS_FAILURE (prod-Literal Literals057 0)
1104+EXPECTED_FOTS_FAILURE (prod-Literal Literals057a 0)
1105+EXPECTED_FOTS_FAILURE (prod-Literal Literals058a 0)
1106+EXPECTED_FOTS_FAILURE (prod-Literal Literals059a 0)
1107+EXPECTED_FOTS_FAILURE (prod-Literal Literals060a 0)
1108+EXPECTED_FOTS_FAILURE (prod-Literal Literals061a 0)
1109+EXPECTED_FOTS_FAILURE (prod-Literal K-Literals-30 0)
1110+EXPECTED_FOTS_FAILURE (prod-Literal K-Literals-31a 0)
1111+EXPECTED_FOTS_FAILURE (prod-Literal K-Literals-46 0)
1112+EXPECTED_FOTS_FAILURE (prod-Literal K-Literals-47a 0)
1113+EXPECTED_FOTS_FAILURE (prod-Literal K-Literals-49 0)
1114+EXPECTED_FOTS_FAILURE (prod-Literal K-Literals-50 0)
1115+EXPECTED_FOTS_FAILURE (prod-Literal K2-Literals-7 0)
1116+EXPECTED_FOTS_FAILURE (prod-Literal K2-Literals-20 0)
1117+EXPECTED_FOTS_FAILURE (prod-ModuleImport module-URIs-1 0)
1118+EXPECTED_FOTS_FAILURE (prod-ModuleImport module-URIs-2 0)
1119+EXPECTED_FOTS_FAILURE (prod-ModuleImport module-URIs-3 0)
1120+EXPECTED_FOTS_FAILURE (prod-ModuleImport module-URIs-8 0)
1121+EXPECTED_FOTS_FAILURE (prod-ModuleImport module-URIs-10 0)
1122+EXPECTED_FOTS_FAILURE (prod-ModuleImport module-URIs-12 0)
1123+EXPECTED_FOTS_FAILURE (prod-ModuleImport module-URIs-17 0)
1124+EXPECTED_FOTS_FAILURE (prod-ModuleImport module-URIs-18 0)
1125+EXPECTED_FOTS_FAILURE (prod-ModuleImport module-URIs-19 0)
1126+EXPECTED_FOTS_FAILURE (prod-ModuleImport modules-collide-var-001 0)
1127+EXPECTED_FOTS_FAILURE (prod-ModuleImport modules-collide-fn-001 0)
1128+EXPECTED_FOTS_FAILURE (prod-ModuleImport modules-circular 0)
1129+EXPECTED_FOTS_FAILURE (prod-ModuleImport modules-pub-priv-30 0)
1130+EXPECTED_FOTS_FAILURE (prod-ModuleImport modules-pub-priv-34 0)
1131+EXPECTED_FOTS_FAILURE (prod-ModuleImport cbcl-module-001 0)
1132+EXPECTED_FOTS_FAILURE (prod-ModuleImport cbcl-module-002 0)
1133+EXPECTED_FOTS_FAILURE (prod-ModuleImport cbcl-module-004 0)
1134+EXPECTED_FOTS_FAILURE (prod-NamespaceDecl namespaceDecl-23 0)
1135+EXPECTED_FOTS_FAILURE (prod-NameTest K2-NameTest-30 0)
1136+EXPECTED_FOTS_FAILURE (prod-NameTest K2-NameTest-31 0)
1137+EXPECTED_FOTS_FAILURE (prod-OptionDecl.serialization Serialization-003 0)
1138+EXPECTED_FOTS_FAILURE (prod-OptionDecl.serialization Serialization-004 0)
1139+EXPECTED_FOTS_FAILURE (prod-OptionDecl.serialization Serialization-005 0)
1140+EXPECTED_FOTS_FAILURE (prod-OptionDecl.serialization Serialization-011 0)
1141+EXPECTED_FOTS_FAILURE (prod-OptionDecl.serialization Serialization-025 0)
1142+EXPECTED_FOTS_FAILURE (prod-OptionDecl.serialization Serialization-026 0)
1143+EXPECTED_FOTS_FAILURE (prod-OptionDecl.serialization Serialization-028 0)
1144+EXPECTED_FOTS_FAILURE (prod-OptionDecl.serialization Serialization-031 0)
1145+EXPECTED_FOTS_FAILURE (prod-OptionDecl.serialization Serialization-032 0)
1146+EXPECTED_FOTS_FAILURE (prod-OrderByClause orderBy20 0)
1147+EXPECTED_FOTS_FAILURE (prod-OrderByClause orderBy21 0)
1148+EXPECTED_FOTS_FAILURE (prod-OrderByClause orderBy40 0)
1149+EXPECTED_FOTS_FAILURE (prod-OrderByClause orderBy41 0)
1150+EXPECTED_FOTS_FAILURE (prod-OrderByClause orderBy49 0)
1151+EXPECTED_FOTS_FAILURE (prod-OrderByClause orderBy50 0)
1152+EXPECTED_FOTS_FAILURE (prod-OrderByClause orderBy51 0)
1153+EXPECTED_FOTS_FAILURE (prod-OrderByClause orderBy59 0)
1154+EXPECTED_FOTS_FAILURE (prod-PathExpr PathExpr-1 0)
1155+EXPECTED_FOTS_FAILURE (prod-PathExpr PathExpr-2 0)
1156+EXPECTED_FOTS_FAILURE (prod-PathExpr PathExpr-5p 0)
1157+EXPECTED_FOTS_FAILURE (prod-PathExpr PathExpr-7p 0)
1158+EXPECTED_FOTS_FAILURE (prod-PathExpr PathExpr-8p 0)
1159+EXPECTED_FOTS_FAILURE (prod-PathExpr PathExpr-9p 0)
1160+EXPECTED_FOTS_FAILURE (prod-Predicate K2-FilterExpr-5 0)
1161+EXPECTED_FOTS_FAILURE (prod-Predicate K2-FilterExpr-7 0)
1162+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-static-typing-1-ns 0)
1163+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-higher-order-function-1-ns 0)
1164+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-higher-order-function-2-ns 0)
1165+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-higher-order-function-3-ns 0)
1166+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-higher-order-function-4-ns 0)
1167+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-higher-order-function-6-ns 0)
1168+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-higher-order-function-7-ns 0)
1169+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-higher-order-function-8-ns 0)
1170+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-higher-order-function-9-ns 0)
1171+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature prohibit-schema-aware-1-s 0)
1172+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature prohibit-schema-aware-2-s 0)
1173+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature prohibit-higher-order-function-1-ns 0)
1174+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature prohibit-higher-order-function-2-ns 0)
1175+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature prohibit-higher-order-function-3-ns 0)
1176+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature prohibit-higher-order-function-4-ns 0)
1177+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature unknown-feature 0)
1178+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature well-formed-feature-1 0)
1179+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature well-formed-feature-2 0)
1180+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature well-formed-feature-3 0)
1181+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature well-formed-feature-4 0)
1182+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-prohibit-1 0)
1183+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-prohibit-2 0)
1184+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-prohibit-3 0)
1185+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-prohibit-4 0)
1186+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-prohibit-5 0)
1187+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-all-extensions-1 0)
1188+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-all-optional-features-1-ns3 0)
1189+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-all-optional-features-3-ns3 0)
1190+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-all-optional-features-2-ns2 0)
1191+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature prohibit-all-optional-features-1 0)
1192+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-all-optional-features-5-ns 0)
1193+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature require-all-optional-features-7-s 0)
1194+EXPECTED_FOTS_FAILURE (prod-RequireProhibitFeature separate-modules-8-ns 0)
1195+EXPECTED_FOTS_FAILURE (prod-ReturnClause ReturnExpr010 0)
1196+EXPECTED_FOTS_FAILURE (prod-ReturnClause ReturnExpr016 0)
1197+EXPECTED_FOTS_FAILURE (prod-SchemaImport qischema005 0)
1198+EXPECTED_FOTS_FAILURE (prod-SchemaImport qischema016 0)
1199+EXPECTED_FOTS_FAILURE (prod-SchemaImport qischema031 0)
1200+EXPECTED_FOTS_FAILURE (prod-SchemaImport qischema032 0)
1201+EXPECTED_FOTS_FAILURE (prod-SchemaImport qischema032a 0)
1202+EXPECTED_FOTS_FAILURE (prod-SchemaImport qischema032b 0)
1203+EXPECTED_FOTS_FAILURE (prod-SchemaImport qischema032c 0)
1204+EXPECTED_FOTS_FAILURE (prod-SchemaImport qischema040 0)
1205+EXPECTED_FOTS_FAILURE (prod-SchemaImport qischema040a 0)
1206+EXPECTED_FOTS_FAILURE (prod-SchemaImport qischema070 0)
1207+EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-001 0)
1208+EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-002 0)
1209+EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-003 0)
1210+EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-004 0)
1211+EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-005 0)
1212+EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-006 0)
1213+EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-007 0)
1214+EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-008 0)
1215+EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-009 0)
1216+EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-010 0)
1217+EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-011 0)
1218+EXPECTED_FOTS_FAILURE (prod-SchemaImport cbcl-schema-element-1 0)
1219+EXPECTED_FOTS_FAILURE (prod-SchemaImport cbcl-schema-element-2 0)
1220+EXPECTED_FOTS_FAILURE (prod-SchemaImport cbcl-schema-element-4 0)
1221+EXPECTED_FOTS_FAILURE (prod-SchemaImport cbcl-schema-element-5 0)
1222+EXPECTED_FOTS_FAILURE (prod-SchemaImport cbcl-schema-element-8 0)
1223+EXPECTED_FOTS_FAILURE (prod-SchemaImport cbcl-validated-schema-element-1 0)
1224+EXPECTED_FOTS_FAILURE (prod-SchemaImport cbcl-validated-schema-element-3 0)
1225+EXPECTED_FOTS_FAILURE (prod-SchemaImport cbcl-validated-schema-element-4 0)
1226+EXPECTED_FOTS_FAILURE (prod-TryCatchExpr try-catch-all-dynamic-errors-caught-14 0)
1227+EXPECTED_FOTS_FAILURE (prod-TypeswitchExpr typeswitch-union-nomatch 0)
1228+EXPECTED_FOTS_FAILURE (prod-TypeswitchExpr typeswitch-union-nomatch-2 0)
1229+EXPECTED_FOTS_FAILURE (prod-TypeswitchExpr typeswitch-union-branch-1 0)
1230+EXPECTED_FOTS_FAILURE (prod-TypeswitchExpr typeswitch-union-branch-1-dup 0)
1231+EXPECTED_FOTS_FAILURE (prod-TypeswitchExpr typeswitch-union-branch-2 0)
1232+EXPECTED_FOTS_FAILURE (prod-TypeswitchExpr typeswitch-union-branch-2-dup 0)
1233+EXPECTED_FOTS_FAILURE (prod-TypeswitchExpr typeswitch-union-branch-both 0)
1234+EXPECTED_FOTS_FAILURE (prod-TypeswitchExpr typeswitch-union-branch-both-dup 0)
1235+EXPECTED_FOTS_FAILURE (prod-TypeswitchExpr typeswitch-union-multi 0)
1236+EXPECTED_FOTS_FAILURE (prod-TypeswitchExpr typeswitch-in-xpath 0)
1237+EXPECTED_FOTS_FAILURE (prod-TypeswitchExpr typeswitch-112 0)
1238+EXPECTED_FOTS_FAILURE (prod-TypeswitchExpr typeswitch-116 0)
1239+EXPECTED_FOTS_FAILURE (prod-ValidateExpr validateexpr-27 0)
1240+EXPECTED_FOTS_FAILURE (prod-ValidateExpr validateexpr-35 0)
1241+EXPECTED_FOTS_FAILURE (prod-ValidateExpr validate-as-101 0)
1242+EXPECTED_FOTS_FAILURE (prod-ValidateExpr validate-as-102 0)
1243+EXPECTED_FOTS_FAILURE (prod-ValidateExpr validate-as-104 0)
1244+EXPECTED_FOTS_FAILURE (prod-ValidateExpr validate-as-105 0)
1245+EXPECTED_FOTS_FAILURE (prod-ValidateExpr validate-as-106 0)
1246+EXPECTED_FOTS_FAILURE (prod-VarDecl.external K2-ExternalVariablesWithout-18 0)
1247+EXPECTED_FOTS_FAILURE (prod-VarDecl.external extvardeclwithtype-23 0)
1248+EXPECTED_FOTS_FAILURE (prod-VarDecl.external K2-ExternalVariablesWith-22 0)
1249+EXPECTED_FOTS_FAILURE (prod-VarDefaultValue extvardef-003a 0)
1250+EXPECTED_FOTS_FAILURE (prod-VarDefaultValue extvardef-006b 0)
1251+EXPECTED_FOTS_FAILURE (prod-VarDefaultValue extvardef-016a 0)
1252+EXPECTED_FOTS_FAILURE (prod-VarDefaultValue extvardef-016b 0)
1253+EXPECTED_FOTS_FAILURE (prod-VersionDecl VersionDecl-v1-processor-and-v3-query 0)
1254+EXPECTED_FOTS_FAILURE (prod-VersionDecl version_declaration-023-v3 0)
1255+EXPECTED_FOTS_FAILURE (prod-WhereClause WhereExpr001 0)
1256+EXPECTED_FOTS_FAILURE (prod-WhereClause WhereExpr003 0)
1257+EXPECTED_FOTS_FAILURE (prod-WhereClause WhereExpr022 0)
1258+EXPECTED_FOTS_FAILURE (prod-WhereClause WhereExpr024 0)
1259+EXPECTED_FOTS_FAILURE (prod-WhereClause WhereExpr025 0)
1260+EXPECTED_FOTS_FAILURE (prod-WhereClause WhereExpr026 0)
1261+EXPECTED_FOTS_FAILURE (prod-WindowClause WindowingUseCase07S 0)
1262+EXPECTED_FOTS_FAILURE (prod-WindowClause WindowingUseCase11S 0)
1263+EXPECTED_FOTS_FAILURE (prod-WindowClause WindowingUseCase13S 0)
1264+EXPECTED_FOTS_FAILURE (prod-WindowClause SlidingWindowExpr507 0)
1265+EXPECTED_FOTS_FAILURE (prod-WindowClause TumblingWindowExpr507 0)
1266+EXPECTED_FOTS_FAILURE (xs-base64Binary base64-115 0)
1267+EXPECTED_FOTS_FAILURE (xs-normalizedString cbcl-normalizedstring-002 0)
1268+EXPECTED_FOTS_FAILURE (xs-normalizedString cbcl-normalizedstring-002b 0)
1269+EXPECTED_FOTS_FAILURE (xs-normalizedString cbcl-normalizedstring-004 0)
1270+EXPECTED_FOTS_FAILURE (xs-token cbcl-token-002 0)
1271+EXPECTED_FOTS_FAILURE (xs-token cbcl-token-002b 0)
1272+EXPECTED_FOTS_FAILURE (xs-token cbcl-token-004 0)
1273+
1274+# Initialize FOTSExpectedFailures.xml
1275+SET (fots_expected_failures_file "${CMAKE_BINARY_DIR}/FOTSExpectedFailures.xml")
1276+# QQQ For now, we output the outer <failures> element so we can load this
1277+# using fn:doc(). This should probably go away.
1278+FILE (WRITE "${fots_expected_failures_file}" "<failures>\n")
1279+
1280+# Loop through test sets
1281+GET_PROPERTY (_test_sets GLOBAL PROPERTY "_ALL_FOTS_TEST_SETS_")
1282+FOREACH (_test_set ${_test_sets})
1283+ FILE (APPEND "${fots_expected_failures_file}"
1284+ " <TestSet name=\"${_test_set}\">\n")
1285+ # Loop through the test cases for each test set
1286+ GET_PROPERTY (_test_cases GLOBAL PROPERTY "_FOTS_${_test_set}_CASES_")
1287+ WHILE (_test_cases)
1288+ # Pop off three items and write out entry
1289+ LIST (GET _test_cases 0 _test_case)
1290+ LIST (GET _test_cases 1 _bugnum)
1291+ LIST (GET _test_cases 2 _notrun)
1292+ LIST (REMOVE_AT _test_cases 0 1 2)
1293+ IF (_notrun)
1294+ SET (_notrun " notRun=\"true\"")
1295+ ENDIF (_notrun)
1296+ FILE (APPEND "${fots_expected_failures_file}"
1297+ " <Test name=\"${_test_case}\" bug=\"${_bugnum}\"${_notrun}/>\n")
1298+ ENDWHILE (_test_cases)
1299+ FILE (APPEND "${fots_expected_failures_file}" " </TestSet>\n")
1300+ENDFOREACH (_test_set)
1301+
1302+# QQQ Have to close this outer element, which means you can't call
1303+# EXPECTED_FOTS_FAILURE from any other CMakeLists.txt.
1304+FILE (APPEND "${fots_expected_failures_file}" "</failures>\n")
1305
1306=== added file 'test/fots/ImportFOTS.cmake'
1307--- test/fots/ImportFOTS.cmake 1970-01-01 00:00:00 +0000
1308+++ test/fots/ImportFOTS.cmake 2013-01-08 14:37:31 +0000
1309@@ -0,0 +1,106 @@
1310+# Copyright 2006-2008 The FLWOR Foundation.
1311+#
1312+# Licensed under the Apache License, Version 2.0 (the "License");
1313+# you may not use this file except in compliance with the License.
1314+# You may obtain a copy of the License at
1315+#
1316+# http://www.apache.org/licenses/LICENSE-2.0
1317+#
1318+# Unless required by applicable law or agreed to in writing, software
1319+# distributed under the License is distributed on an "AS IS" BASIS,
1320+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1321+# See the License for the specific language governing permissions and
1322+# limitations under the License.
1323+#
1324+#
1325+# Downloads the latest FOTS archive and prepares for CTest integration.
1326+# Required argument: BUILDDIR (should be ${PROJECT_BINARY_DIR})
1327+# Required argument: ZORBA (full path to Zorba command-line executable)
1328+
1329+
1330+# Change this to publish updated FOTS archives
1331+SET (FOTS_ARCHIVE "FOTS_191212.tgz")
1332+
1333+# Change this to modify which elements in FOTS driver results are output
1334+# as CDATA
1335+SET (FOTS_CDATA_ELEMENTS "fots:query test assert-xml")
1336+
1337+# Download and unpack pre-created archive
1338+SET (_outdir "${BUILDDIR}/test/fots")
1339+MESSAGE (STATUS "Downloading FOTS archive...")
1340+FILE (DOWNLOAD http://zorbatest.lambda.nu:8080/~ceej/${FOTS_ARCHIVE}
1341+ "${_outdir}/${FOTS_ARCHIVE}" STATUS _dlstat SHOW_PROGRESS)
1342+LIST (GET _dlstat 0 _dlcode)
1343+IF (NOT _dlcode EQUAL 0)
1344+ LIST (GET _dlstat 1 _dlmsg)
1345+ MESSAGE (FATAL_ERROR "Error downloading FOTS archive: ${_dlmsg}")
1346+ENDIF (NOT _dlcode EQUAL 0)
1347+
1348+MESSAGE (STATUS "Unpacking FOTS archive...")
1349+EXECUTE_PROCESS (COMMAND "${CMAKE_COMMAND}" -E tar xf ${FOTS_ARCHIVE}
1350+ WORKING_DIRECTORY "${_outdir}" RESULT_VARIABLE _unpackstat)
1351+IF (NOT _unpackstat EQUAL 0)
1352+ MESSAGE (FATAL_ERROR "Error unpackaging FOTS archive: ${_unpackstat}")
1353+ENDIF (NOT _unpackstat EQUAL 0)
1354+
1355+# Scan FOTS catalogs and create ADD_TEST scripts. First, create a list
1356+# of test sets. We assume that the FOTS driver is in a sibling directory
1357+# named fots_driver.
1358+MESSAGE (STATUS "Creating CTest scripts...")
1359+EXECUTE_PROCESS (COMMAND "${ZORBA}" --omit-xml-declaration -f -q
1360+ "${CMAKE_CURRENT_LIST_DIR}/../fots_driver/cli.xq"
1361+ -e "fotsPath:=${_outdir}/2011/QT3-test-suite/catalog.xml"
1362+ -e mode:=list-test-sets
1363+ OUTPUT_VARIABLE _testsetsstring RESULT_VARIABLE _zstat)
1364+IF (NOT _zstat EQUAL 0)
1365+ MESSAGE (FATAL_ERROR "Zorba failed with message: ${_zstat}\n"
1366+ "(perhaps you haven't built Zorba yet?)")
1367+ENDIF (NOT _zstat EQUAL 0)
1368+STRING (REGEX REPLACE "[\n\r]+" ";" _testsets ${_testsetsstring})
1369+
1370+SET (_setscript "${_outdir}/FOTSSetTests.cmake")
1371+SET (_casescript "${_outdir}/FOTSCaseTests.cmake")
1372+FILE (REMOVE "${_setscript}")
1373+FILE (REMOVE "${_casescript}")
1374+
1375+# Iterate through all test sets.
1376+FOREACH (_testset ${_testsets})
1377+ # Add a test for the whole test set.
1378+ FILE (APPEND "${_setscript}"
1379+ "ZORBA_ADD_TEST (FOTS/${_testset} zorbacmd -f -q "
1380+ "${CMAKE_CURRENT_LIST_DIR}/../fots_driver/cli.xq "
1381+ "-e fotsPath:=${_outdir}/2011/QT3-test-suite/catalog.xml "
1382+ "-e mode:=run-test-sets -e testSetPrefixes:=${_testset} "
1383+ "-e expectedFailuresPath:=${BUILDDIR}/FOTSExpectedFailures.xml "
1384+ "--disable-http-resolution --indent "
1385+ "-z \"cdata-section-elements=${FOTS_CDATA_ELEMENTS}\")\n"
1386+ "ZORBA_SET_TEST_PROPERTY (FOTS/${_testset} "
1387+ "FAIL_REGULAR_EXPRESSION \"result=\\\"fail\\\"\")\n")
1388+
1389+ # Iterate through the test cases for this test set.
1390+# EXECUTE_PROCESS (COMMAND "${ZORBA}" --omit-xml-declaration -f -q
1391+# "${CMAKE_CURRENT_LIST_DIR}/../fots_driver/cli.xq"
1392+# -e "fotsPath:=${_outdir}/2011/QT3-test-suite/catalog.xml"
1393+# -e mode:=list-test-cases -e testSetPrefixes:=${_testset}
1394+# OUTPUT_VARIABLE _testcasesstring)
1395+# STRING (REGEX REPLACE "[\n\r]+" ";" _testcases ${_testcasesstring})
1396+ EXECUTE_PROCESS (COMMAND "${ZORBA}" --omit-xml-declaration -f -q
1397+ "${CMAKE_CURRENT_LIST_DIR}/get-tests.xq"
1398+ --base-uri "${_outdir}/2011/QT3-test-suite/catalog.xml"
1399+ -e testSet:=${_testset}
1400+ OUTPUT_VARIABLE _testcases)
1401+ FOREACH (_testcase ${_testcases})
1402+ # Add a test for the test case.
1403+ FILE (APPEND "${_casescript}"
1404+ "ZORBA_ADD_TEST (FOTS/${_testset}/${_testcase} zorbacmd -f -q "
1405+ "${CMAKE_CURRENT_LIST_DIR}/../fots_driver/cli.xq "
1406+ "-e fotsPath:=${_outdir}/2011/QT3-test-suite/catalog.xml "
1407+ "-e mode:=run-test-case "
1408+ "-e testSetName:=${_testset} -e testCaseName:=${_testcase} "
1409+ "-e expectedFailuresPath:=${BUILDDIR}/FOTSExpectedFailures.xml "
1410+ "--disable-http-resolution --indent "
1411+ "-z \"cdata-section-elements=${FOTS_CDATA_ELEMENTS}\")\n"
1412+ "ZORBA_SET_TEST_PROPERTY (FOTS/${_testset}/${_testcase} "
1413+ "PASS_REGULAR_EXPRESSION \"name=\\\"${_testcase}\\\" result=\\\"pass\\\"\")\n")
1414+ ENDFOREACH (_testcase)
1415+ENDFOREACH (_testset)
1416
1417=== added file 'test/fots/README.TXT'
1418--- test/fots/README.TXT 1970-01-01 00:00:00 +0000
1419+++ test/fots/README.TXT 2013-01-08 14:37:31 +0000
1420@@ -0,0 +1,26 @@
1421+This directory contains scripts for integrating the Zorba FOTS Driver
1422+(contained in the directory ../fots_driver) with CTest.
1423+
1424+It adds four targets to the Zorba project: one to download and import
1425+FOTS, and three to configure which kinds of CTests are added to the
1426+project.
1427+
1428+ fots-import: This target will download FOTS and create CTest
1429+ scripts. This is somewhat slow (around a minute), but you only need
1430+ to do it once. You should not need to repeat this target unless you
1431+ delete your build directory, or you want to update to a newer FOTS.
1432+
1433+ fots-activate-sets: This target will re-configure your project to
1434+ include one CTest test for each FOTS test set (roughly 370 tests).
1435+ This is the recommended approach for running FOTS tests as it
1436+ provides a good tradeoff between testing time and test granularity.
1437+
1438+ fots-activate-cases: This target will re-configure your project to
1439+ include one CTest test for each FOTS test case (roughly 27000
1440+ tests). This is only recommended when debugging a problem reported
1441+ with a specific test case, because CTest really isn't designed for
1442+ such a large number of tests; it will slow down considerably.
1443+
1444+ fots-deactivate: This target will re-configure your project to
1445+ include no CTest tests for FOTS. Use this when doing normal
1446+ development.
1447
1448=== added file 'test/fots/get-tests.xq'
1449--- test/fots/get-tests.xq 1970-01-01 00:00:00 +0000
1450+++ test/fots/get-tests.xq 2013-01-08 14:37:31 +0000
1451@@ -0,0 +1,25 @@
1452+(:
1453+ : Copyright 2006-2011 The FLWOR Foundation.
1454+ :
1455+ : Licensed under the Apache License, Version 2.0 (the "License");
1456+ : you may not use this file except in compliance with the License.
1457+ : You may obtain a copy of the License at
1458+ :
1459+ : http://www.apache.org/licenses/LICENSE-2.0
1460+ :
1461+ : Unless required by applicable law or agreed to in writing, software
1462+ : distributed under the License is distributed on an "AS IS" BASIS,
1463+ : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1464+ : See the License for the specific language governing permissions and
1465+ : limitations under the License.
1466+ :)
1467+
1468+declare namespace c = "http://www.w3.org/2010/09/qt-fots-catalog";
1469+
1470+declare variable $fotsPath as xs:string external := "";
1471+declare variable $testSet as xs:string external := "";
1472+
1473+let $catalog := fn:doc(fn:static-base-uri())/c:catalog
1474+let $test-set := $catalog/c:test-set[@name = $testSet]
1475+let $test-relfile := fn:trace(data($test-set/@file), "Loading")
1476+return fn:string-join(data(fn:doc($test-relfile)/c:test-set/c:test-case/@name), ';')
1477
1478=== added directory 'test/fots_driver'
1479=== removed directory 'test/fots_driver'
1480=== added file 'test/fots_driver/FOTSZorbaManifest.xml'
1481--- test/fots_driver/FOTSZorbaManifest.xml 1970-01-01 00:00:00 +0000
1482+++ test/fots_driver/FOTSZorbaManifest.xml 2013-01-08 14:37:31 +0000
1483@@ -0,0 +1,66 @@
1484+<?xml version="1.0" encoding="UTF-8"?>
1485+<FOTS-test-suite-result xmlns="http://www.w3.org/2010/09/qt-fots-catalog">
1486+ <implementation name="Zorba" version="trunk" anonymous-result-column="false">
1487+ <organization name="http://www.zorba-xquery.com" anonymous="false"/>
1488+ <submitter name="Sorin Nasoi" email="spungi@gmail.com"/>
1489+ </implementation>
1490+ <dependencies-satisfied>
1491+ <dependency type="feature" value="collection-stability" satisfied="true"/> <!-- Is this correct? -->
1492+ <dependency type="feature" value="directory-as-collection-uri" satisfied="true"/> <!-- Is this correct? -->
1493+ <dependency type="feature" value="higherOrderFunctions" satisfied="false"/>
1494+ <dependency type="feature" value="moduleImport" satisfied="true"/>
1495+ <dependency type="feature" value="namespace-axis" satisfied="false"/> <!-- Is this correct? -->
1496+ <dependency type="feature" value="schema-location-hint" satisfied="false"/> <!-- Is this correct? -->
1497+ <dependency type="feature" value="schemaAware" satisfied="true"/>
1498+ <dependency type="feature" value="schemaImport" satisfied="true"/>
1499+ <dependency type="feature" value="schemaValidation" satisfied="true"/>
1500+ <dependency type="feature" value="staticTyping" satisfied="false"/>
1501+ <dependency type="feature" value="xpath-1.0-compatibility" satisfied="true"/> <!-- Is this correct? -->
1502+
1503+ <dependency type="spec" value="XP10 XQ10" satisfied="true"/>
1504+ <dependency type="spec" value="XP10+" satisfied="true"/>
1505+ <dependency type="spec" value="XP20 XQ10" satisfied="true"/>
1506+ <dependency type="spec" value="XP20+" satisfied="true"/>
1507+ <dependency type="spec" value="XP30+" satisfied="true"/>
1508+ <dependency type="spec" value="XP30+ XQ10+" satisfied="true"/>
1509+ <dependency type="spec" value="XP30+ XQ30+" satisfied="true"/>
1510+ <dependency type="spec" value="XQ10" satisfied="true"/>
1511+ <dependency type="spec" value="XQ10 XP20" satisfied="true"/>
1512+ <dependency type="spec" value="XQ10+" satisfied="true"/>
1513+ <dependency type="spec" value="XQ10+ XP20+" satisfied="true"/>
1514+ <dependency type="spec" value="XQ10+ XP30+" satisfied="true"/>
1515+ <dependency type="spec" value="XQ30" satisfied="true"/>
1516+ <dependency type="spec" value="XQ30 XP30" satisfied="true"/>
1517+ <dependency type="spec" value="XQ30+" satisfied="true"/>
1518+ <dependency type="spec" value="XQ30+ XP30+" satisfied="true"/>
1519+ <dependency type="spec" value="XT30+" satisfied="false"/>
1520+
1521+ <dependency type="xml-version" value="1.0" satisfied="true"/>
1522+ <dependency type="xml-version" value="1.0:4-" satisfied="true"/>
1523+ <dependency type="xml-version" value="1.0:5+ 1.1" satisfied="false"/>
1524+ <dependency type="xml-version" value="1.1" satisfied="false"/>
1525+
1526+ <dependency type="language" value="de" satisfied="false"/> <!-- Is this correct? -->
1527+ <dependency type="language" value="en" satisfied="true"/>
1528+ <dependency type="language" value="xib" satisfied="false"/> <!-- Is this correct? -->
1529+
1530+ <!-- Are these correct? -->
1531+ <dependency type="limits" value="year_lt_0" satisfied="true"/>
1532+ <dependency type="calendar" value="CB" satisfied="true"/>
1533+ <dependency type="format-integer-sequence" value="Α" satisfied="true"/>
1534+ <dependency type="format-integer-sequence" value="α" satisfied="true"/>
1535+ <dependency type="format-integer-sequence" value="Ù¡" satisfied="true"/>
1536+ <dependency type="format-integer-sequence" value="â‘ " satisfied="true"/>
1537+ <dependency type="format-integer-sequence" value="â‘´" satisfied="true"/>
1538+ <dependency type="format-integer-sequence" value="â’ˆ" satisfied="true"/>
1539+ <dependency type="format-integer-sequence" value="一" satisfied="true"/>
1540+ <dependency type="format-integer-sequence" value="ﯴ" satisfied="true"/>
1541+ <dependency type="default-language" value="en" satisfied="true"/>
1542+ <dependency type="unicode-normalization-form" value="FULLY-NORMALIZED" satisfied="true"/>
1543+ <dependency type="unicode-normalization-form" value="NFD" satisfied="true"/>
1544+ <dependency type="unicode-normalization-form" value="NFKC" satisfied="true"/>
1545+ <dependency type="unicode-normalization-form" value="NFKD" satisfied="true"/>
1546+ <dependency type="xsd-version" value="1.0" satisfied="true"/>
1547+ <dependency type="xsd-version" value="1.1" satisfied="false"/>
1548+ </dependencies-satisfied>
1549+</FOTS-test-suite-result>
1550
1551=== removed file 'test/fots_driver/FOTSZorbaManifest.xml'
1552--- test/fots_driver/FOTSZorbaManifest.xml 2012-12-18 11:40:08 +0000
1553+++ test/fots_driver/FOTSZorbaManifest.xml 1970-01-01 00:00:00 +0000
1554@@ -1,66 +0,0 @@
1555-<?xml version="1.0" encoding="UTF-8"?>
1556-<FOTS-test-suite-result xmlns="http://www.w3.org/2010/09/qt-fots-catalog">
1557- <implementation name="Zorba" version="trunk" anonymous-result-column="false">
1558- <organization name="http://www.zorba-xquery.com" anonymous="false"/>
1559- <submitter name="Sorin Nasoi" email="spungi@gmail.com"/>
1560- </implementation>
1561- <dependencies-satisfied>
1562- <dependency type="feature" value="collection-stability" satisfied="true"/> <!-- Is this correct? -->
1563- <dependency type="feature" value="directory-as-collection-uri" satisfied="true"/> <!-- Is this correct? -->
1564- <dependency type="feature" value="higherOrderFunctions" satisfied="false"/>
1565- <dependency type="feature" value="moduleImport" satisfied="true"/>
1566- <dependency type="feature" value="namespace-axis" satisfied="false"/> <!-- Is this correct? -->
1567- <dependency type="feature" value="schema-location-hint" satisfied="false"/> <!-- Is this correct? -->
1568- <dependency type="feature" value="schemaAware" satisfied="true"/>
1569- <dependency type="feature" value="schemaImport" satisfied="true"/>
1570- <dependency type="feature" value="schemaValidation" satisfied="true"/>
1571- <dependency type="feature" value="staticTyping" satisfied="false"/>
1572- <dependency type="feature" value="xpath-1.0-compatibility" satisfied="true"/> <!-- Is this correct? -->
1573-
1574- <dependency type="spec" value="XP10 XQ10" satisfied="true"/>
1575- <dependency type="spec" value="XP10+" satisfied="true"/>
1576- <dependency type="spec" value="XP20 XQ10" satisfied="true"/>
1577- <dependency type="spec" value="XP20+" satisfied="true"/>
1578- <dependency type="spec" value="XP30+" satisfied="true"/>
1579- <dependency type="spec" value="XP30+ XQ10+" satisfied="true"/>
1580- <dependency type="spec" value="XP30+ XQ30+" satisfied="true"/>
1581- <dependency type="spec" value="XQ10" satisfied="true"/>
1582- <dependency type="spec" value="XQ10 XP20" satisfied="true"/>
1583- <dependency type="spec" value="XQ10+" satisfied="true"/>
1584- <dependency type="spec" value="XQ10+ XP20+" satisfied="true"/>
1585- <dependency type="spec" value="XQ10+ XP30+" satisfied="true"/>
1586- <dependency type="spec" value="XQ30" satisfied="true"/>
1587- <dependency type="spec" value="XQ30 XP30" satisfied="true"/>
1588- <dependency type="spec" value="XQ30+" satisfied="true"/>
1589- <dependency type="spec" value="XQ30+ XP30+" satisfied="true"/>
1590- <dependency type="spec" value="XT30+" satisfied="false"/>
1591-
1592- <dependency type="xml-version" value="1.0" satisfied="true"/>
1593- <dependency type="xml-version" value="1.0:4-" satisfied="true"/>
1594- <dependency type="xml-version" value="1.0:5+ 1.1" satisfied="false"/>
1595- <dependency type="xml-version" value="1.1" satisfied="false"/>
1596-
1597- <dependency type="language" value="de" satisfied="false"/> <!-- Is this correct? -->
1598- <dependency type="language" value="en" satisfied="true"/>
1599- <dependency type="language" value="xib" satisfied="false"/> <!-- Is this correct? -->
1600-
1601- <!-- Are these correct? -->
1602- <dependency type="limits" value="year_lt_0" satisfied="true"/>
1603- <dependency type="calendar" value="CB" satisfied="true"/>
1604- <dependency type="format-integer-sequence" value="Α" satisfied="true"/>
1605- <dependency type="format-integer-sequence" value="α" satisfied="true"/>
1606- <dependency type="format-integer-sequence" value="Ù¡" satisfied="true"/>
1607- <dependency type="format-integer-sequence" value="â‘ " satisfied="true"/>
1608- <dependency type="format-integer-sequence" value="â‘´" satisfied="true"/>
1609- <dependency type="format-integer-sequence" value="â’ˆ" satisfied="true"/>
1610- <dependency type="format-integer-sequence" value="一" satisfied="true"/>
1611- <dependency type="format-integer-sequence" value="ﯴ" satisfied="true"/>
1612- <dependency type="default-language" value="en" satisfied="true"/>
1613- <dependency type="unicode-normalization-form" value="FULLY-NORMALIZED" satisfied="true"/>
1614- <dependency type="unicode-normalization-form" value="NFD" satisfied="true"/>
1615- <dependency type="unicode-normalization-form" value="NFKC" satisfied="true"/>
1616- <dependency type="unicode-normalization-form" value="NFKD" satisfied="true"/>
1617- <dependency type="xsd-version" value="1.0" satisfied="true"/>
1618- <dependency type="xsd-version" value="1.1" satisfied="false"/>
1619- </dependencies-satisfied>
1620-</FOTS-test-suite-result>
1621
1622=== added file 'test/fots_driver/README.TXT'
1623--- test/fots_driver/README.TXT 1970-01-01 00:00:00 +0000
1624+++ test/fots_driver/README.TXT 2013-01-08 14:37:31 +0000
1625@@ -0,0 +1,51 @@
1626+Information about the W3C XQuery/XPath/XSLT 3.* Test Suite can be found at:
1627+ http://dev.w3.org/2011/QT3-test-suite.
1628+
1629+In order to use the Zorba FOTS driver (written in XQuery) one has to follow
1630+these steps:
1631+
1632+0) Build Zorba with ZORBA_WITH_BIG_INTEGER flag set to ON.
1633+
1634+ For example with CMake:
1635+ cmake -DZORBA_WITH_BIG_INTEGER=ON ..
1636+ make
1637+
1638+1) Download the FOTS testsuite from W3C
1639+ Since currently there is no official release, a simple "cvs get" will do:
1640+
1641+ $ export CVSROOT=":pserver:anonymous@dev.w3.org:/sources/public"
1642+ $ cvs login
1643+ (Logging in to anonymous@dev.w3.org)
1644+ CVS password: anonymous
1645+ $ cvs get 2011/QT3-test-suite
1646+
1647+3) run
1648+ ./zorba -f
1649+ -q ../../test/fots_driver/cli.xq
1650+
1651+Zorba FOTS driver usage examples:
1652+If you run Zorba from a checkout of the trunk and the build/bin folder,
1653+- /path/to/cli.xq can be set to ../../test/fots_driver/cli.xq
1654+
1655+Always try to output the result back to an XML file with nice indentation:
1656+./zorba -f -q ../../test/fots_driver/cli.xq -e SET_CLI_OPTIONS_HERE -o output.xml --indent
1657+
1658+ This way you will see trace information in the CLI window and detailed
1659+ results of the test cases in the 'output.xml'.
1660+
1661+zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e fotsZorbaManifestPath:=/path/to/Zorba_manifest.xml -e mode:=list-test-sets
1662+zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-test-sets
1663+zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-test-sets -e testSetPrefixes:=prod,app
1664+zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-test-cases -e testSetPrefixes:=prod-Literal
1665+zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-test-cases -e dependency:=higherOrderFunctions
1666+zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-test-cases -e dependency:=higherOrderFunctions -e assertType:=assert-count
1667+zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-matching-test-cases -e pattern:=catch
1668+zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-sets -e testSetPrefixes:=prod -o result.xml --indent
1669+zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-sets -e testSetPrefixes:=prod -e expectedFailuresPath:=ExpectedFailures.xml -o result.xml --indent
1670+zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-sets -e testSetPrefixes:=prod -e dependency:=higherOrderFunctions_false -o result.xml --indent
1671+zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-sets -e testSetPrefixes:=prod -e assertType:=assert-count -o result.xml --indent
1672+zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-sets -e testSetPrefixes:=prod-Literal -e verbose:=false -o result.xml --indent
1673+zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-case -e testSetName:=prod-Literal -e testCaseName:=Literals001 -o result.xml --indent
1674+zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-and-report -o report.xml --indent
1675+zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=report -e failuresFilePath:=failures.xml -e verbose:=false -o report.xml --indent
1676+zorba -f -q /path/to/cli.xq -e mode:=generate-expected-failures -e failuresFilePath:=failures.xml -o ExpectedFailures.xml --indent
1677
1678=== removed file 'test/fots_driver/README.TXT'
1679--- test/fots_driver/README.TXT 2012-12-18 11:40:08 +0000
1680+++ test/fots_driver/README.TXT 1970-01-01 00:00:00 +0000
1681@@ -1,49 +0,0 @@
1682-Information about the W3C XQuery/XPath/XSLT 3.* Test Suite can be found at:
1683- http://dev.w3.org/2011/QT3-test-suite.
1684-
1685-In order to use the Zorba FOTS driver (written in XQuery) one has to follow
1686-these steps:
1687-
1688-0) Build Zorba with ZORBA_WITH_BIG_INTEGER flag set to ON.
1689-
1690- For example with CMake:
1691- cmake -DZORBA_WITH_BIG_INTEGER=ON ..
1692- make
1693-
1694-1) Download the FOTS testsuite from W3C
1695- Since currently there is no official release, a simple "cvs get" will do:
1696-
1697- $ export CVSROOT=":pserver:anonymous@dev.w3.org:/sources/public"
1698- $ cvs login
1699- (Logging in to anonymous@dev.w3.org)
1700- CVS password: anonymous
1701- $ cvs get 2011/QT3-test-suite
1702-
1703-3) run
1704- ./zorba -f
1705- -q ../../test/fots_driver/cli.xq
1706-
1707-Zorba FOTS driver usage examples:
1708-If you run Zorba from a checkout of the trunk and the build/bin folder,
1709-- /path/to/cli.xq can be set to ../../test/fots_driver/cli.xq
1710-
1711-Always try to output the result back to an XML file with nice indentation:
1712-./zorba -f -q ../../test/fots_driver/cli.xq -e SET_CLI_OPTIONS_HERE -o output.xml --indent
1713-
1714- This way you will see trace information in the CLI window and detailed
1715- results of the test cases in the 'output.xml'.
1716-
1717-zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e fotsZorbaManifestPath:=/path/to/Zorba_manifest.xml -e mode:=list-test-sets
1718-zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-test-sets
1719-zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-test-sets -e testSetPrefixes:=prod,app
1720-zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-test-cases -e testSetPrefixes:=prod-Literal
1721-zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-test-cases -e dependency:=higherOrderFunctions
1722-zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-matching-test-cases -e pattern:=catch
1723-zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-sets -e testSetPrefixes:=prod -o result.xml --indent
1724-zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-sets -e testSetPrefixes:=prod -e dependency:=higherOrderFunctions_false -o result.xml --indent
1725-zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-sets -e testSetPrefixes:=prod-Literal -e verbose:=false -o result.xml --indent
1726-zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-case -e testSetName:=prod-Literal -e testCaseName:=Literals001 -o result.xml --indent
1727-zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-case -e assertType:=assert-count -e testSetName:=fn-innermost -o result.xml --indent
1728-zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-case -e assertType:=assert-count -o result.xml --indent
1729-zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-and-report -o report.xml --indent
1730-zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=report -e failuresFilePath:=failures.xml -e verbose:=false -o report.xml --indent
1731
1732=== added file 'test/fots_driver/cli.xq'
1733--- test/fots_driver/cli.xq 1970-01-01 00:00:00 +0000
1734+++ test/fots_driver/cli.xq 2013-01-08 14:37:31 +0000
1735@@ -0,0 +1,196 @@
1736+(:
1737+ : Copyright 2006-2011 The FLWOR Foundation.
1738+ :
1739+ : Licensed under the Apache License, Version 2.0 (the "License");
1740+ : you may not use this file except in compliance with the License.
1741+ : You may obtain a copy of the License at
1742+ :
1743+ : http://www.apache.org/licenses/LICENSE-2.0
1744+ :
1745+ : Unless required by applicable law or agreed to in writing, software
1746+ : distributed under the License is distributed on an "AS IS" BASIS,
1747+ : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1748+ : See the License for the specific language governing permissions and
1749+ : limitations under the License.
1750+ :)
1751+
1752+(:~
1753+ : Zorba FOTS driver CLI
1754+ : @author Ghislain Fourny, Sorin Nasoi
1755+ :)
1756+
1757+import module namespace d =
1758+ "http://www.zorba-xquery.com/fots-driver" at "fots-driver.xq";
1759+import module namespace r =
1760+ "http://www.zorba-xquery.com/fots-driver/reporting" at "reporting.xq";
1761+
1762+(:~ path to the place where FOTS can be found :)
1763+declare variable $fotsPath as xs:string external := "";
1764+
1765+(:~ path to the place where the FOTS Zorba manifest can be found :)
1766+declare variable $fotsZorbaManifestPath as xs:string external :=
1767+ "FOTSZorbaManifest.xml";
1768+
1769+(:~ Path to the results from a previous run :)
1770+declare variable $failuresFilePath as xs:string external := "";
1771+
1772+(:~ choose the CLI option you want to run :)
1773+declare variable $mode as xs:string external := "";
1774+
1775+(:~ name/criteria for the test sets :)
1776+declare variable $testSetPrefixes as xs:string external := "";
1777+
1778+(:~ name/criteria for the test cases :)
1779+declare variable $testCasePrefixes as xs:string external := "";
1780+
1781+(:~ name for the test set :)
1782+declare variable $testSetName as xs:string external := "";
1783+
1784+(:~ name for the test case :)
1785+declare variable $testCaseName as xs:string external := "";
1786+
1787+(:~ Enable or disable verbose output :)
1788+declare variable $verbose as xs:string external := "true";
1789+
1790+(:~ assertion type :)
1791+declare variable $assertType as xs:string external := "";
1792+
1793+(:~ dependency: used in 'list-test-cases' and 'run-test-sets' modes:)
1794+declare variable $dependency as xs:string external := "";
1795+
1796+(:~ regex for the tests in the 'list-matching-test-cases' option :)
1797+declare variable $pattern as xs:string external := "";
1798+
1799+(:~ flags for the tests in the 'list-matching-test-cases' option :)
1800+declare variable $flags as xs:string external := "";
1801+
1802+(:~ Path to the ExpectedFailures file :)
1803+declare variable $expectedFailuresPath as xs:string external :="";
1804+
1805+(:~ Tokenize comma or empty string :)
1806+declare %private function local:tokenize(
1807+ $input as xs:string
1808+) as xs:string*
1809+{
1810+ let $tokens := tokenize($input, ",")
1811+ return if (exists($tokens)) then $tokens else ""
1812+};
1813+
1814+declare function local:usage() as xs:string
1815+{
1816+ string-join((
1817+ "Zorba FOTS driver usage examples:",
1818+ "If you run Zorba from a checkout of the trunk and the build/bin folder,",
1819+ "- /path/to/cli.xq can be set to ../../test/fots_driver/cli.xq",
1820+ "",
1821+ "Always try to output the result back to an XML file with nice indentation:",
1822+ "./zorba -f -q ../../test/fots_driver/cli.xq -e SET_CLI_OPTIONS_HERE -o output.xml --indent",
1823+ "",
1824+ " This way you will see trace information in the CLI window and detailed",
1825+ " results of the test cases in the 'output.xml'.",
1826+ "",
1827+ "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e fotsZorbaManifestPath:=/path/to/Zorba_manifest.xml -e mode:=list-test-sets",
1828+ "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-test-sets",
1829+ "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-test-sets -e testSetPrefixes:=prod,app",
1830+ "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-test-cases -e testSetPrefixes:=prod-Literal",
1831+ "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-test-cases -e dependency:=higherOrderFunctions",
1832+ "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-test-cases -e dependency:=higherOrderFunctions -e assertType:=assert-count",
1833+ "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-matching-test-cases -e pattern:=catch",
1834+ "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-sets -e testSetPrefixes:=prod -o result.xml --indent",
1835+ "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-sets -e testSetPrefixes:=prod -e expectedFailuresPath:=ExpectedFailures.xml -o result.xml --indent",
1836+ "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-sets -e testSetPrefixes:=prod -e dependency:=higherOrderFunctions_false -o result.xml --indent",
1837+ "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-sets -e testSetPrefixes:=prod -e assertType:=assert-count -o result.xml --indent",
1838+ "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-sets -e testSetPrefixes:=prod-Literal -e verbose:=false -o result.xml --indent",
1839+ "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-case -e testSetName:=prod-Literal -e testCaseName:=Literals001 -o result.xml --indent",
1840+ "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-and-report -o report.xml --indent",
1841+ "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=report -e failuresFilePath:=failures.xml -e verbose:=false -o report.xml --indent",
1842+ "zorba -f -q /path/to/cli.xq -e mode:=generate-expected-failures -e failuresFilePath:=failures.xml -o ExpectedFailures.xml --indent",
1843+ ""
1844+ ), "&#xA;")
1845+};
1846+
1847+(:~ The test cases in this list have bugs assigned and should not be run :)
1848+variable $exceptedTestCases := (
1849+"cbcl-subsequence-011", "cbcl-subsequence-012", "cbcl-subsequence-013",
1850+"cbcl-subsequence-014" (:see bug lp:1069794 :)
1851+, "re00975", "re00976", "re00976a" (:see bug lp:1070533 :)
1852+, "fn-unparsed-text-lines-052" (:see bug lp:1073175 :)
1853+);
1854+
1855+(:~ The test in this list have bugs assigned already and should not be run :)
1856+variable $exceptedTestSets := ();
1857+
1858+switch ($mode)
1859+case "list-test-sets"
1860+ return
1861+ string-join(
1862+ (d:list-test-sets(
1863+ trace($fotsPath, "Path to FOTS catalog.xml set to: "),
1864+ local:tokenize(trace($testSetPrefixes, "'testSetPrefixes' set to: ")))),
1865+ "&#xA;")
1866+case "list-test-cases"
1867+ return
1868+ string-join(
1869+ (d:list-test-cases( trace($fotsPath,
1870+ "Path to FOTS catalog.xml set to: "),
1871+ local:tokenize(trace($testSetPrefixes,
1872+ "'testSetPrefixes' set to: ")),
1873+ "",
1874+ trace($dependency,
1875+ "'dependency' set to:"),
1876+ trace($assertType,
1877+ "'assertType' set to: "))),
1878+ "&#xA;")
1879+case "list-matching-test-cases"
1880+ return string-join((d:list-matching-test-cases(
1881+ trace($fotsPath,
1882+ "Path to FOTS catalog.xml set to: "),
1883+ trace($pattern,
1884+ "pattern set to: "),
1885+ trace($flags,
1886+ "flags were set to: ")), ""),
1887+ "&#xA;")
1888+case "run-test-sets"
1889+ return d:run-fots($fotsPath,
1890+ $fotsZorbaManifestPath,
1891+ d:list-test-sets($fotsPath,
1892+ local:tokenize(trace($testSetPrefixes,
1893+ "'testSetPrefixes' set to: "))),
1894+ d:list-test-cases($fotsPath,
1895+ local:tokenize($testSetPrefixes),
1896+ local:tokenize(trace($testCasePrefixes,
1897+ "'testCasePrefixes' set to: ")),
1898+ trace($dependency,
1899+ "'dependency' set to:"),
1900+ trace($assertType,
1901+ "'assertType' set to: ")),
1902+ $exceptedTestCases,
1903+ $exceptedTestSets,
1904+ xs:boolean($verbose),
1905+ $expectedFailuresPath)
1906+case "run-test-case"
1907+ return d:run-fots($fotsPath,
1908+ $fotsZorbaManifestPath,
1909+ trace($testSetName, "'testSetName' set to: "),
1910+ trace($testCaseName,"'testCaseName' set to: "),
1911+ $exceptedTestCases,
1912+ $exceptedTestSets,
1913+ xs:boolean($verbose),
1914+ $expectedFailuresPath)
1915+case "run-and-report"
1916+ return r:run-and-report($fotsPath,
1917+ $fotsZorbaManifestPath,
1918+ $exceptedTestCases,
1919+ $exceptedTestSets,
1920+ (: the reports to W3C are always generated with verbose set to false:)
1921+ fn:false())
1922+case "report"
1923+ return r:report($fotsPath,
1924+ $failuresFilePath,
1925+ $exceptedTestCases,
1926+ $exceptedTestSets,
1927+ xs:boolean($verbose))
1928+case "generate-expected-failures"
1929+ return r:generate-expected-failures($failuresFilePath)
1930+default
1931+ return local:usage()
1932
1933=== removed file 'test/fots_driver/cli.xq'
1934--- test/fots_driver/cli.xq 2012-12-18 11:40:08 +0000
1935+++ test/fots_driver/cli.xq 1970-01-01 00:00:00 +0000
1936@@ -1,197 +0,0 @@
1937-(:
1938- : Copyright 2006-2011 The FLWOR Foundation.
1939- :
1940- : Licensed under the Apache License, Version 2.0 (the "License");
1941- : you may not use this file except in compliance with the License.
1942- : You may obtain a copy of the License at
1943- :
1944- : http://www.apache.org/licenses/LICENSE-2.0
1945- :
1946- : Unless required by applicable law or agreed to in writing, software
1947- : distributed under the License is distributed on an "AS IS" BASIS,
1948- : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1949- : See the License for the specific language governing permissions and
1950- : limitations under the License.
1951- :)
1952-
1953-(:~
1954- : Zorba FOTS driver CLI
1955- : @author Ghislain Fourny, Sorin Nasoi
1956- :)
1957-
1958-import module namespace d =
1959- "http://www.zorba-xquery.com/fots-driver" at "fots-driver.xq";
1960-import module namespace r =
1961- "http://www.zorba-xquery.com/fots-driver/reporting" at "reporting.xq";
1962-
1963-(:~ path to the place where FOTS can be found :)
1964-declare variable $fotsPath as xs:string external := "";
1965-
1966-(:~ path to the place where the FOTS Zorba manifest can be found :)
1967-declare variable $fotsZorbaManifestPath as xs:string external :=
1968- "FOTSZorbaManifest.xml";
1969-
1970-(:~ Path to the results from a previous run :)
1971-declare variable $failuresFilePath as xs:string external := "";
1972-
1973-(:~ choose the CLI option you want to run :)
1974-declare variable $mode as xs:string external := "";
1975-
1976-(:~ name/criteria for the test sets :)
1977-declare variable $testSetPrefixes as xs:string external := "";
1978-
1979-(:~ name/criteria for the test cases :)
1980-declare variable $testCasePrefixes as xs:string external := "";
1981-
1982-(:~ name for the test set :)
1983-declare variable $testSetName as xs:string external := "";
1984-
1985-(:~ name for the test case :)
1986-declare variable $testCaseName as xs:string external := "";
1987-
1988-(:~ Enable or disable verbose output :)
1989-declare variable $verbose as xs:string external := "true";
1990-
1991-(:~
1992- Enable or disable showing the actual query result in the output.
1993- True by default.
1994-:)
1995-declare variable $showResult as xs:string external := "true";
1996-
1997-(:~ assertion type :)
1998-declare variable $assertType as xs:string external := "";
1999-
2000-(:~ dependency: used in 'list-test-cases' and 'run-test-sets' modes:)
2001-declare variable $dependency as xs:string external := "";
2002-
2003-(:~ regex for the tests in the 'list-matching-test-cases' option :)
2004-declare variable $pattern as xs:string external := "";
2005-
2006-(:~ flags for the tests in the 'list-matching-test-cases' option :)
2007-declare variable $flags as xs:string external := "";
2008-
2009-(:~ Tokenize comma or empty string :)
2010-declare %private function local:tokenize(
2011- $input as xs:string
2012-) as xs:string*
2013-{
2014- let $tokens := tokenize($input, ",")
2015- return if (exists($tokens)) then $tokens else ""
2016-};
2017-
2018-declare function local:usage() as xs:string
2019-{
2020- string-join((
2021- "Zorba FOTS driver usage examples:",
2022- "If you run Zorba from a checkout of the trunk and the build/bin folder,",
2023- "- /path/to/cli.xq can be set to ../../test/fots_driver/cli.xq",
2024- "",
2025- "Always try to output the result back to an XML file with nice indentation:",
2026- "./zorba -f -q ../../test/fots_driver/cli.xq -e SET_CLI_OPTIONS_HERE -o output.xml --indent",
2027- "",
2028- " This way you will see trace information in the CLI window and detailed",
2029- " results of the test cases in the 'output.xml'.",
2030- "",
2031- "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e fotsZorbaManifestPath:=/path/to/Zorba_manifest.xml -e mode:=list-test-sets",
2032- "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-test-sets",
2033- "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-test-sets -e testSetPrefixes:=prod,app",
2034- "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-test-cases -e testSetPrefixes:=prod-Literal",
2035- "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-test-cases -e dependency:=higherOrderFunctions",
2036- "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=list-matching-test-cases -e pattern:=catch",
2037- "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-sets -e testSetPrefixes:=prod -o result.xml --indent",
2038- "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-sets -e testSetPrefixes:=prod -e dependency:=higherOrderFunctions_false -o result.xml --indent",
2039- "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-sets -e testSetPrefixes:=prod-Literal -e verbose:=false -o result.xml --indent",
2040- "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-case -e testSetName:=prod-Literal -e testCaseName:=Literals001 -o result.xml --indent",
2041- "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-case -e assertType:=assert-count -e testSetName:=fn-innermost -o result.xml --indent",
2042- "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-test-case -e assertType:=assert-count -o result.xml --indent",
2043- "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=run-and-report -o report.xml --indent",
2044- "zorba -f -q /path/to/cli.xq -e fotsPath:=/path/to/QT3-test-suite/catalog.xml -e mode:=report -e failuresFilePath:=failures.xml -e verbose:=false -o report.xml --indent",
2045- ""
2046- ), "&#xA;")
2047-};
2048-
2049-(:~ The test cases in this list have bugs assigned and should not be run :)
2050-variable $exceptedTestCases := (
2051-"cbcl-subsequence-011", "cbcl-subsequence-012", "cbcl-subsequence-013",
2052-"cbcl-subsequence-014" (:see bug lp:1069794 :)
2053-, "re00975", "re00976", "re00976a" (:see bug lp:1070533 :)
2054-, "fn-unparsed-text-lines-052" (:see bug lp:1073175 :)
2055-);
2056-
2057-(:~ The test in this list have bugs assigned already and should not be run :)
2058-variable $exceptedTestSets := ();
2059-
2060-switch ($mode)
2061-case "list-test-sets"
2062- return
2063- string-join(
2064- (d:list-test-sets(
2065- trace($fotsPath, "Path to FOTS catalog.xml set to: "),
2066- local:tokenize(trace($testSetPrefixes, "'testSetPrefixes' set to: ")))),
2067- "&#xA;")
2068-case "list-test-cases"
2069- return
2070- string-join(
2071- (d:list-test-cases( trace($fotsPath,
2072- "Path to FOTS catalog.xml set to: "),
2073- local:tokenize(trace($testSetPrefixes,
2074- "'testSetPrefixes' set to: ")),
2075- "",
2076- trace($dependency,
2077- "'dependency' set to:"))),
2078- "&#xA;")
2079-case "list-matching-test-cases"
2080- return string-join((d:list-matching-test-cases(
2081- trace($fotsPath,
2082- "Path to FOTS catalog.xml set to: "),
2083- trace($pattern,
2084- "pattern set to: "),
2085- trace($flags,
2086- "flags were set to: ")), ""),
2087- "&#xA;")
2088-case "run-test-sets"
2089- return d:run-fots($fotsPath,
2090- $fotsZorbaManifestPath,
2091- d:list-test-sets($fotsPath,
2092- local:tokenize(trace($testSetPrefixes,
2093- "'testSetPrefixes' set to: "))),
2094- d:list-test-cases($fotsPath,
2095- local:tokenize($testSetPrefixes),
2096- local:tokenize(trace($testCasePrefixes,
2097- "'$testCasePrefixes' set to: ")),
2098- trace($dependency,
2099- "'dependency' set to:")),
2100- $exceptedTestCases,
2101- $exceptedTestSets,
2102- $assertType,
2103- xs:boolean($verbose),
2104- xs:boolean($showResult))
2105-case "run-test-case"
2106- return d:run-fots($fotsPath,
2107- $fotsZorbaManifestPath,
2108- trace($testSetName,"'testSetName' set to: "),
2109- trace($testCaseName,"'testCaseName' set to: "),
2110- $exceptedTestCases,
2111- $exceptedTestSets,
2112- trace($assertType,"'assertType' set to: "),
2113- xs:boolean($verbose),
2114- xs:boolean($showResult))
2115-case "run-and-report"
2116- return r:run-and-report($fotsPath,
2117- $fotsZorbaManifestPath,
2118- d:list-test-sets($fotsPath,
2119- local:tokenize($testSetPrefixes)),
2120- '',
2121- $exceptedTestCases,
2122- $exceptedTestSets,
2123- $assertType,
2124- fn:false(), (: the reports to W3C are always generated with verbose set to false:)
2125- xs:boolean($showResult))
2126-case "report"
2127- return r:report($fotsPath,
2128- $failuresFilePath,
2129- $exceptedTestCases,
2130- $exceptedTestSets,
2131- xs:boolean($verbose))
2132-default
2133- return local:usage()
2134
2135=== added file 'test/fots_driver/environment.xq'
2136--- test/fots_driver/environment.xq 1970-01-01 00:00:00 +0000
2137+++ test/fots_driver/environment.xq 2013-01-08 14:37:31 +0000
2138@@ -0,0 +1,562 @@
2139+(:
2140+ : Copyright 2006-2011 The FLWOR Foundation.
2141+ :
2142+ : Licensed under the Apache License, Version 2.0 (the "License");
2143+ : you may not use this file except in compliance with the License.
2144+ : You may obtain a copy of the License at
2145+ :
2146+ : http://www.apache.org/licenses/LICENSE-2.0
2147+ :
2148+ : Unless required by applicable law or agreed to in writing, software
2149+ : distributed under the License is distributed on an "AS IS" BASIS,
2150+ : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2151+ : See the License for the specific language governing permissions and
2152+ : limitations under the License.
2153+ :)
2154+
2155+(:~
2156+ : Zorba FOTS driver environment
2157+ : @author Sorin Nasoi
2158+ :)
2159+
2160+module namespace env =
2161+ "http://www.zorba-xquery.com/fots-driver/environment";
2162+
2163+import module namespace xqxq =
2164+ "http://www.zorba-xquery.com/modules/xqxq";
2165+import module namespace util =
2166+ "http://www.zorba-xquery.com/fots-driver/util" at "util.xq";
2167+
2168+declare namespace fots =
2169+ "http://www.w3.org/2010/09/qt-fots-catalog";
2170+
2171+declare namespace ann =
2172+ "http://www.zorba-xquery.com/annotations";
2173+
2174+
2175+declare variable $env:hof as xs:string :=
2176+ string-join(
2177+ ( "declare namespace op = 'http://www.zorba-xquery.com/options/features';",
2178+ "declare namespace f = 'http://www.zorba-xquery.com/features';",
2179+ "declare option op:enable 'f:hof';"),
2180+ "&#xA;");
2181+
2182+
2183+(:~
2184+ : If there is a dependency on XQuery 3.0 and there is at least one HOF
2185+ : function in the test, return the strings for enabling the HOF feature.
2186+ :
2187+ : @param $deps the dependencies of the test set and test case
2188+ : @param $test the Query test.
2189+ : @return the strings for enabling the HOF feature
2190+ :)
2191+declare function env:enable-HOF-feature(
2192+ $deps as element(fots:dependency)*,
2193+ $test as xs:string
2194+) as xs:string?
2195+{
2196+ let $depSpec := string-join(distinct-values( for $dep in $deps
2197+ where $dep[@type="spec"]
2198+ return data($dep/@value)),""),
2199+ $depFeature := string-join(distinct-values(for $dep in $deps
2200+ where $dep[@type="feature"]
2201+ return data($dep/@value)),"")
2202+ return
2203+ if ((contains($depSpec,"XQ30") or contains($depSpec,"XP30")) and
2204+ contains($depFeature,"higherOrderFunctions"))
2205+ then $env:hof else ()
2206+};
2207+
2208+
2209+(:~
2210+ : Check if an XQuery version declaration needs to be added.
2211+ :
2212+ : @param $deps the dependencies of the test set and test case.
2213+ : @param $test the Query test.
2214+ : @return the XQuery version declaration.
2215+ :)
2216+declare function env:add-xquery-version-decl(
2217+ $deps as element(fots:dependency)*,
2218+ $test as xs:string
2219+) as xs:string?
2220+{
2221+ let $dependencies := string-join(distinct-values(for $dep in $deps
2222+ where $dep[@type="spec"]
2223+ return data($dep/@value)),"")
2224+ return
2225+ if ((contains($dependencies,"XQ30") or contains($dependencies,"XP30")) and
2226+ not(contains($test, "xquery version ")))
2227+ then 'xquery version "3.0";'
2228+ else if(contains($dependencies,"XQ10") and
2229+ not(contains($test, "xquery version ")))
2230+ then 'xquery version "1.0";'
2231+ else ()
2232+};
2233+
2234+
2235+(:~
2236+ : Sets the declared default element namespace.
2237+ :
2238+ : @param $env the environment of the catalog/test-set (given with 'ref').
2239+ : @param $envCase the environment of the test-case.
2240+ : @return the declare default element namespace.
2241+ :)
2242+declare function env:decl-def-elem-namespace(
2243+ $env as element(fots:environment)?,
2244+ $envCase as element(fots:environment)?
2245+) as xs:string?
2246+{
2247+ for $ns in ($env/fots:namespace, $envCase/fots:namespace)
2248+ where $ns[@prefix=""]
2249+ return concat('declare default element namespace "',
2250+ data($ns/@uri),
2251+ '";')
2252+};
2253+
2254+
2255+(:~
2256+ : Adds the declare namespace statements.
2257+ :
2258+ : @param $env the environment of the catalog/test-set (given with 'ref').
2259+ : @param $case the test-case.
2260+ : @param $testSetBaseURI the URI of the test set file.
2261+ : @return the declare namespace statements.
2262+ :)
2263+declare %ann:nondeterministic function env:decl-namespaces(
2264+ $env as element(fots:environment)?,
2265+ $case as element(fots:test-case),
2266+ $testSetBaseURI as xs:anyURI
2267+) as xs:string?
2268+{
2269+ string-join(
2270+ for $ns in ($env/fots:namespace, $case/fots:environment/fots:namespace)
2271+ where not($ns[@prefix=""]) and
2272+ not(env:is-schema-prefix-bound(data($ns/@prefix),
2273+ $case,
2274+ $testSetBaseURI))
2275+ return concat('declare namespace ',
2276+ data($ns/@prefix),
2277+ ' = "',
2278+ data($ns/@uri),
2279+ '";')
2280+ ," ")
2281+};
2282+
2283+
2284+(:~
2285+ : Return true if the prefix will be bound to a schema in the Query
2286+ : It's a bug in the FOTS if this function returns true: TODO report to W3C
2287+ :)
2288+declare %private %ann:nondeterministic function env:is-schema-prefix-bound(
2289+ $prefix as xs:string,
2290+ $case as element(fots:test-case),
2291+ $testSetBaseURI as xs:anyURI
2292+) as xs:boolean
2293+{
2294+ contains(util:get-value($case,
2295+ $testSetBaseURI,
2296+ "test"),
2297+ concat("import schema namespace ",
2298+ $prefix))
2299+};
2300+
2301+
2302+(:~
2303+ : Returns the the declare base-uri prolog statement.
2304+ :
2305+ : @param $env the environment of the catalog/test-set (given with 'ref').
2306+ : @param $envCase the environment of the test-case.
2307+ : @return the declare base-uri prolog statement.
2308+ :)
2309+declare function env:decl-base-uri(
2310+ $env as element(fots:environment)?,
2311+ $envCase as element(fots:environment)?
2312+) as xs:string?
2313+{
2314+ for $baseURI in ($env/fots:static-base-uri, $envCase/fots:static-base-uri)
2315+ return concat("declare base-uri '",
2316+ data($baseURI/@uri),
2317+ "';")
2318+};
2319+
2320+
2321+(:~
2322+ : Add the decimal format declarations.
2323+ :
2324+ : @param $decimal-formats decimal formats.
2325+ : @return the decimal formats declarations.
2326+ :)
2327+declare function env:decl-decimal-formats(
2328+ $decimal-formats as element(fots:decimal-format)*
2329+) as xs:string*
2330+{
2331+ if(empty($decimal-formats))
2332+ then ()
2333+ else
2334+ for $tmp in $decimal-formats
2335+ let $default := if(exists($tmp/@name))
2336+ then ()
2337+ else "default"
2338+ let $name := if(exists($tmp/@name))
2339+ then data($tmp/@name)
2340+ else ()
2341+ return
2342+ string-join(("declare",
2343+ $default,
2344+ "decimal-format",
2345+ $name,
2346+ env:set-properties($tmp),
2347+ ";"),' ')
2348+};
2349+
2350+
2351+declare %private function env:set-properties(
2352+ $decimal-format as element(fots:decimal-format)
2353+) as xs:string*
2354+{
2355+ for $att in $decimal-format/attribute::*
2356+ let $name := node-name($att)
2357+ let $value := data($att)
2358+ return
2359+ if(exists(index-of(("decimal-separator", "grouping-separator", "infinity",
2360+ "minus-sign", "NaN", "percent", "per-mille",
2361+ "zero-digit", "digit", "pattern-separator"),
2362+ xs:string($name))))
2363+ then concat($name, '="' , $value, '"')
2364+ else ()
2365+};
2366+
2367+
2368+(:~
2369+ : Adds the variable declarations.
2370+ : @param $env environment.
2371+ : @param $case test case.
2372+ : @param $envBaseURI the relative URI for the environment.
2373+ : @param $testSetBaseURI the URI of the test set.
2374+ : @return the variable declarations.
2375+ :)
2376+declare %ann:nondeterministic function env:add-var-decl(
2377+ $env as element(fots:environment)?,
2378+ $case as element(fots:test-case),
2379+ $envBaseURI as xs:anyURI,
2380+ $testSetBaseURI as xs:anyURI
2381+) as xs:string?
2382+{
2383+ concat( env:var-decl-with-value($env,
2384+ $envBaseURI),
2385+ env:var-decl-with-value($case/fots:environment,
2386+ $testSetBaseURI),
2387+ env:var-decl-without-value($env,
2388+ $case/fots:environment))
2389+};
2390+
2391+
2392+declare %private function env:var-decl-with-value(
2393+ $env as element(fots:environment)?,
2394+ $baseURI as xs:anyURI
2395+) as xs:string?
2396+{
2397+ string-join(
2398+ for $param in $env/fots:param
2399+ let $select := $param/@select
2400+ let $file := $env/fots:source[@uri = translate($select, "'", "")]/@file
2401+ let $type := $param/@as
2402+ let $varValue := if(starts-with($select, "'") and
2403+ ends-with($select, "'") and
2404+ exists($file))
2405+ then concat('"',
2406+ resolve-uri($file, $baseURI),
2407+ '"')
2408+ else $select
2409+ where (exists($select) and
2410+(: if there is an attribute 'declared' set to true, this means that the variable
2411+ is declared within the 'test' itself so no additional variable declaration
2412+ is needed :)
2413+ empty($param[@declared="true"]))
2414+ return concat("declare variable $",
2415+ $param/@name,
2416+ ((concat(" as ", $type)))[$type],
2417+ " := ",
2418+ $varValue,
2419+ ";")
2420+ ," ")
2421+};
2422+
2423+
2424+declare %private function env:var-decl-without-value(
2425+ $env as element(fots:environment)?,
2426+ $envCase as element(fots:environment)?
2427+) as xs:string?
2428+{
2429+ string-join(
2430+ (for $param in ($env/fots:param, $envCase/fots:param)
2431+ let $select := $param/@select
2432+ let $type := $param/@as
2433+ where (empty($select) and
2434+ empty($param[@declared="true"]))
2435+ return concat("declare variable $",
2436+ $param/@name,
2437+ ((concat(" as ", $type)))[$type],
2438+ " external;"),
2439+ for $source in ($env/fots:source, $envCase/fots:source)
2440+ let $role := $source/@role
2441+ where starts-with($role,"$")
2442+ return concat("declare variable ",
2443+ $role,
2444+ " external;"))
2445+ ," ")
2446+};
2447+
2448+
2449+(:~
2450+ : Returns the string for setting the context item if needed.
2451+ : @param $env environment.
2452+ : @param $envBaseURI test base URI of the environment.
2453+ : @return the string for setting the context item if needed.
2454+ :)
2455+declare function env:set-context-item(
2456+ $env as element(fots:environment)?,
2457+ $envBaseURI as xs:anyURI?
2458+) as xs:string? {
2459+ if (exists($env/fots:source[@role = "."]))
2460+ then string-join((env:declare-context-item($env, $envBaseURI),
2461+ 'xqxq:bind-context-item($queryID, $contextItem);')
2462+ ,"&#xA;")
2463+ else ()
2464+};
2465+
2466+
2467+declare %private function env:declare-context-item(
2468+ $env as element(fots:environment)?,
2469+ $envBaseURI as xs:anyURI?
2470+) as xs:string
2471+{
2472+ let $ciURI := resolve-uri($env/fots:source[@role = "."]/@file, $envBaseURI)
2473+ return
2474+ if(empty($env/fots:source[@validation = "strict"]))
2475+ then concat('variable $contextItem := doc("', $ciURI, '");')
2476+ else string-join(
2477+ ("&#xA;",
2478+ "variable $contextItemQuery := xqxq:prepare-main-module('",
2479+ env:get-schema-import($env),
2480+ concat('validate { doc("', $ciURI, '")', "}',", " "),
2481+ "resolver:url-resolver#2, ());",
2482+ "variable $contextItem := xqxq:evaluate($contextItemQuery);")
2483+ ,"&#xA;")
2484+};
2485+
2486+
2487+(:~
2488+ : Returns the strings for variable binding in XQXQ.
2489+ :
2490+ : @param $env the environment of the catalog/test-set (given with 'ref').
2491+ : @param $envBaseURI the relative URI for the environment.
2492+ : @return the strings for variable binding in XQXQ.
2493+ :)
2494+declare function env:set-variables(
2495+ $env as element(fots:environment)?,
2496+ $envBaseURI as xs:anyURI
2497+) as xs:string?
2498+{
2499+ if(empty($env))
2500+ then ()
2501+ else
2502+ let $srcNames := for $source in $env/fots:source
2503+ where starts-with(data($source/@role),"$")
2504+ return substring-after(data($source/@role),"$"),
2505+ $srcValues := for $srcName in $srcNames
2506+ return concat('doc("',
2507+ resolve-uri($env/fots:source[@role = concat("$",$srcName)]/@file, $envBaseURI),
2508+ '")')
2509+ return
2510+ string-join(
2511+ (for $srcName in $srcNames
2512+ let $index := index-of($srcNames, $srcName)
2513+ return
2514+ concat('xqxq:bind-variable( $queryID, xs:QName("', $srcName, '")', ', ',
2515+ $srcValues[$index], ');'),
2516+
2517+ for $param in $env/fots:param
2518+ let $select:= $param/@select
2519+ let $file := $env/fots:source[@uri = translate($select, "'", "")]/@file
2520+ let $varValue := if(starts-with($select, "'") and
2521+ ends-with($select, "'") and
2522+ exists($file))
2523+ then concat('"',
2524+ resolve-uri($file, $envBaseURI),
2525+ '"')
2526+ else $select
2527+ let $varName := $param/@name
2528+ where (exists($select) and
2529+(: if there is an attribute 'declared' set to true, this means that the variable
2530+ is declared within the 'test' itself :)
2531+ exists($param[@declared="true"]))
2532+ return
2533+ concat('xqxq:bind-variable( $queryID, xs:QName("',
2534+ $param/@name,
2535+ '")', ', ',
2536+ $varValue, ');'))
2537+ , "&#xA;")
2538+};
2539+
2540+
2541+declare %private function env:get-schema-import (
2542+ $env as element(fots:environment)?
2543+) as xs:string
2544+{
2545+ if (empty($env))
2546+ then ""
2547+ else
2548+ let $namespace := $env/fots:namespace[@uri = data($env/fots:schema/@uri)]
2549+ let $prefix as xs:string := if(exists($namespace))
2550+ then xs:string(data($namespace/@prefix))
2551+ else "p"
2552+ return
2553+ if($prefix = "")
2554+ then concat('import schema default element namespace "',
2555+ $env/fots:schema/@uri,
2556+ '";&#xA;')
2557+ else concat('import schema namespace ',
2558+ $prefix,
2559+ ' = "',
2560+ $env/fots:schema/@uri,
2561+ '";&#xA;')
2562+};
2563+
2564+
2565+(:~
2566+ : Returns the XQXQ URL resolver declaration.
2567+ : @param $case the test case.
2568+ : @param $env the environment.
2569+ : @param $envBaseURI URI of the environment.
2570+ : @param $testSetBaseURI URI to the test set that defines the test case.
2571+ : @return the XQXQ URL resolver declaration.
2572+ :)
2573+declare function env:resolver(
2574+ $case as element(fots:test-case),
2575+ $env as element(fots:environment)?,
2576+ $envBaseURI as xs:anyURI?,
2577+ $testSetBaseURI as xs:anyURI
2578+) as xs:string?
2579+{
2580+ let $envSchema := $env/fots:schema,
2581+ $tcSchema := $case/fots:environment/fots:schema,
2582+ $schemas := ($envSchema, $tcSchema),
2583+ $modules := $case/fots:module,
2584+ $resources := ($env/fots:resource, $case/fots:environment/fots:schema)
2585+ return
2586+ if (empty($schemas) and empty($modules) and empty($resources))
2587+ then ()
2588+ else string-join(
2589+ ("declare namespace resolver = 'http://www.zorba-xquery.com/modules/xqxq/url-resolver';",
2590+ $env:hof,
2591+ "declare function resolver:url-resolver($namespace as xs:string, $entity as xs:string) {",
2592+ "switch($entity)",
2593+ if (exists($schemas))
2594+ then string-join(("case 'schema'",
2595+ " return switch($namespace)",
2596+ (for $schema in $envSchema
2597+ return concat(" case '",
2598+ data($schema/@uri),
2599+ "' return doc('",
2600+ resolve-uri($schema/@file, $envBaseURI),
2601+ "')"),
2602+ for $schema in $tcSchema
2603+ return concat(" case '",
2604+ data($schema/@uri),
2605+ "' return doc('",
2606+ resolve-uri($schema/@file, $testSetBaseURI),
2607+ "')")),
2608+ " default return ()"),
2609+ "&#xA;")
2610+ else (),
2611+ if (exists($modules))
2612+ then string-join(("case 'module'",
2613+ " return switch($namespace)",
2614+ for $module in $modules
2615+ return concat(" case '",
2616+ data($module/@uri),
2617+ "' return unparsed-text('",
2618+ resolve-uri($module/@file, $testSetBaseURI),
2619+ "') "),
2620+ " default return ()"),
2621+ "&#xA;")
2622+ else (),
2623+ if (exists($resources)) then
2624+ string-join(("case ''",
2625+ " return switch($namespace)",
2626+ for $resource in $resources
2627+ return concat(" case '",
2628+ data($resource/@uri),
2629+ "' return unparsed-text('",
2630+ resolve-uri($resource/@file, $envBaseURI),
2631+ "'",
2632+ if(exists($resource/@encoding))
2633+ then concat (",'",
2634+ data($resource/@encoding),
2635+ "'")
2636+ else (),
2637+ ") "),
2638+ " default return ()")
2639+ ,"&#xA;")
2640+ else ()
2641+ , "default return ()","};"),
2642+ "&#xA;")
2643+};
2644+
2645+
2646+(:~
2647+ : Checks the dependencies according to the Zorba manifest.
2648+ :
2649+ : @param $deps the dependencies of the test set and test case
2650+ : @param $zorbaManifest Zorba manifest document.
2651+ : @return if true empty string, otherwise returns a string with the
2652+ : dependencies that were not matched.
2653+ :)
2654+declare function env:check-dependencies(
2655+ $deps as element(fots:dependency)*,
2656+ $zorbaManifest
2657+) as xs:string*
2658+{
2659+ if(empty($deps))
2660+ then ()
2661+ else
2662+ for $dep in $deps
2663+ let $satisfied := if(exists($dep/@satisfied))
2664+ then data($dep/@satisfied)
2665+ else "true"
2666+ let $zorbaDep := $zorbaManifest//fots:dependency[ @type = $dep/@type and
2667+ @value = $dep/@value and
2668+ @satisfied = $satisfied]
2669+ return
2670+ if(empty($zorbaDep))
2671+ then concat("Dependency (type=",
2672+ $dep/@type,
2673+ ", value=",
2674+ $dep/@value,
2675+ ", satisfied=",
2676+ $satisfied,
2677+ ") was not met. ")
2678+ else ()
2679+};
2680+
2681+
2682+(:~
2683+ : Retrieves the environment from a test-set/catalog given an environment name.
2684+ : @param $catalog FOTS catalog file.
2685+ : @param $testSet test set.
2686+ : @param $envName name of the environment.
2687+ : @return the environment with the given name.
2688+ :)
2689+declare function env:get-environment (
2690+ $catalog,
2691+ $testSet as element (fots:test-set),
2692+ $envName as xs:string
2693+) as element(fots:environment)?
2694+{
2695+ let $envTestSet := $testSet/test-set//environment[@name = $envName]
2696+ return
2697+ if (empty($envTestSet))
2698+ then $catalog/catalog//environment[@name = $envName]
2699+ else $envTestSet
2700+};
2701
2702=== removed file 'test/fots_driver/environment.xq'
2703--- test/fots_driver/environment.xq 2012-12-18 11:40:08 +0000
2704+++ test/fots_driver/environment.xq 1970-01-01 00:00:00 +0000
2705@@ -1,561 +0,0 @@
2706-(:
2707- : Copyright 2006-2011 The FLWOR Foundation.
2708- :
2709- : Licensed under the Apache License, Version 2.0 (the "License");
2710- : you may not use this file except in compliance with the License.
2711- : You may obtain a copy of the License at
2712- :
2713- : http://www.apache.org/licenses/LICENSE-2.0
2714- :
2715- : Unless required by applicable law or agreed to in writing, software
2716- : distributed under the License is distributed on an "AS IS" BASIS,
2717- : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2718- : See the License for the specific language governing permissions and
2719- : limitations under the License.
2720- :)
2721-
2722-(:~
2723- : Zorba FOTS driver environment
2724- : @author Sorin Nasoi
2725- :)
2726-
2727-module namespace env =
2728- "http://www.zorba-xquery.com/fots-driver/environment";
2729-
2730-import module namespace xqxq =
2731- "http://www.zorba-xquery.com/modules/xqxq";
2732-import module namespace util =
2733- "http://www.zorba-xquery.com/fots-driver/util" at "util.xq";
2734-
2735-declare namespace fots =
2736- "http://www.w3.org/2010/09/qt-fots-catalog";
2737-
2738-declare namespace ann =
2739- "http://www.zorba-xquery.com/annotations";
2740-
2741-
2742-declare variable $env:hof as xs:string :=
2743- string-join(
2744- ( "declare namespace op = 'http://www.zorba-xquery.com/options/features';",
2745- "declare namespace f = 'http://www.zorba-xquery.com/features';",
2746- "declare option op:enable 'f:hof';"),
2747- "&#xA;");
2748-
2749-
2750-(:~
2751- : If there is a dependency on XQuery 3.0 and there is at least one HOF
2752- : function in the test, return the strings for enabling the HOF feature.
2753- :
2754- : @param $deps the dependencies of the test set and test case
2755- : @param $test the Query test.
2756- : @return the strings for enabling the HOF feature
2757- :)
2758-declare function env:enable-HOF-feature(
2759- $deps as element(fots:dependency)*,
2760- $test as xs:string
2761-) as xs:string?
2762-{
2763- let $depSpec := string-join(distinct-values( for $dep in $deps
2764- where $dep[@type="spec"]
2765- return data($dep/@value)),""),
2766- $depFeature := string-join(distinct-values(for $dep in $deps
2767- where $dep[@type="feature"]
2768- return data($dep/@value)),"")
2769- return
2770- if ((contains($depSpec,"XQ30") or contains($depSpec,"XP30")) and
2771- contains($depFeature,"higherOrderFunctions"))
2772- then $env:hof else ()
2773-};
2774-
2775-
2776-(:~
2777- : Check if an XQuery version declaration needs to be added.
2778- :
2779- : @param $deps the dependencies of the test set and test case.
2780- : @param $test the Query test.
2781- : @return the XQuery version declaration.
2782- :)
2783-declare function env:add-xquery-version-decl(
2784- $deps as element(fots:dependency)*,
2785- $test as xs:string
2786-) as xs:string?
2787-{
2788- let $dependencies := string-join(distinct-values(for $dep in $deps
2789- where $dep[@type="spec"]
2790- return data($dep/@value)),"")
2791- return
2792- if ((contains($dependencies,"XQ30") or contains($dependencies,"XP30")) and
2793- not(contains($test, "xquery version ")))
2794- then 'xquery version "3.0";'
2795- else if(contains($dependencies,"XQ10") and
2796- not(contains($test, "xquery version ")))
2797- then 'xquery version "1.0";'
2798- else ()
2799-};
2800-
2801-
2802-(:~
2803- : Sets the declared default element namespace.
2804- :
2805- : @param $env the environment of the catalog/test-set (given with 'ref').
2806- : @param $envCase the environment of the test-case.
2807- : @return the declare default element namespace.
2808- :)
2809-declare function env:decl-def-elem-namespace(
2810- $env as element(fots:environment)?,
2811- $envCase as element(fots:environment)?
2812-) as xs:string?
2813-{
2814- for $ns in ($env/fots:namespace, $envCase/fots:namespace)
2815- where $ns[@prefix=""]
2816- return concat('declare default element namespace "',
2817- data($ns/@uri),
2818- '";')
2819-};
2820-
2821-
2822-(:~
2823- : Adds the declare namespace statements.
2824- :
2825- : @param $env the environment of the catalog/test-set (given with 'ref').
2826- : @param $case the test-case.
2827- : @param $testSetBaseURI the URI of the test set file.
2828- : @return the declare namespace statements.
2829- :)
2830-declare %ann:nondeterministic function env:decl-namespaces(
2831- $env as element(fots:environment)?,
2832- $case as element(fots:test-case),
2833- $testSetBaseURI as xs:anyURI
2834-) as xs:string?
2835-{
2836- string-join(
2837- for $ns in ($env/fots:namespace, $case/fots:environment/fots:namespace)
2838- where not($ns[@prefix=""]) and
2839- not(env:is-schema-prefix-bound(data($ns/@prefix),
2840- $case,
2841- $testSetBaseURI))
2842- return concat('declare namespace ',
2843- data($ns/@prefix),
2844- ' = "',
2845- data($ns/@uri),
2846- '";')
2847- ," ")
2848-};
2849-
2850-
2851-(:~
2852- : Return true if the prefix will be bound to a schema in the Query
2853- : It's a bug in the FOTS if this function returns true: TODO report to W3C
2854- :)
2855-declare %private %ann:nondeterministic function env:is-schema-prefix-bound(
2856- $prefix as xs:string,
2857- $case as element(fots:test-case),
2858- $testSetBaseURI as xs:anyURI
2859-) as xs:boolean
2860-{
2861- contains(util:get-value($case,
2862- $testSetBaseURI,
2863- "test"),
2864- concat("import schema namespace ",
2865- $prefix))
2866-};
2867-
2868-
2869-(:~
2870- : Returns the the declare base-uri prolog statement.
2871- :
2872- : @param $env the environment of the catalog/test-set (given with 'ref').
2873- : @param $envCase the environment of the test-case.
2874- : @return the declare base-uri prolog statement.
2875- :)
2876-declare function env:decl-base-uri(
2877- $env as element(fots:environment)?,
2878- $envCase as element(fots:environment)?
2879-) as xs:string?
2880-{
2881- for $baseURI in ($env/fots:static-base-uri, $envCase/fots:static-base-uri)
2882- return concat("declare base-uri '",
2883- data($baseURI/@uri),
2884- "';")
2885-};
2886-
2887-
2888-(:~
2889- : Add the decimal format declarations.
2890- :
2891- : @param $decimal-formats decimal formats.
2892- : @return the decimal formats declarations.
2893- :)
2894-declare function env:decl-decimal-formats(
2895- $decimal-formats as element(fots:decimal-format)*
2896-) as xs:string*
2897-{
2898- if(empty($decimal-formats))
2899- then ()
2900- else
2901- for $tmp in $decimal-formats
2902- let $default := if(exists($tmp/@name))
2903- then ()
2904- else "default"
2905- let $name := if(exists($tmp/@name))
2906- then data($tmp/@name)
2907- else ()
2908- return
2909- string-join(("declare",
2910- $default,
2911- "decimal-format",
2912- $name,
2913- env:set-properties($tmp),
2914- ";"),' ')
2915-};
2916-
2917-
2918-declare %private function env:set-properties(
2919- $decimal-format as element(fots:decimal-format)
2920-) as xs:string*
2921-{
2922- for $att in $decimal-format/attribute::*
2923- let $name := node-name($att)
2924- let $value := data($att)
2925- return
2926- if(exists(index-of(("decimal-separator", "grouping-separator", "infinity",
2927- "minus-sign", "NaN", "percent", "per-mille",
2928- "zero-digit", "digit", "pattern-separator"),
2929- xs:string($name))))
2930- then concat($name, '="' , $value, '"')
2931- else ()
2932-};
2933-
2934-
2935-(:~
2936- : Adds the variable declarations.
2937- : @param $env environment.
2938- : @param $case test case.
2939- : @param $envBaseURI the relative URI for the environment.
2940- : @param $testSetBaseURI the URI of the test set.
2941- : @return the variable declarations.
2942- :)
2943-declare %ann:nondeterministic function env:add-var-decl(
2944- $env as element(fots:environment)?,
2945- $case as element(fots:test-case),
2946- $envBaseURI as xs:anyURI,
2947- $testSetBaseURI as xs:anyURI
2948-) as xs:string?
2949-{
2950- concat( env:var-decl-with-value($env,
2951- $envBaseURI),
2952- env:var-decl-with-value($case/fots:environment,
2953- $testSetBaseURI),
2954- env:var-decl-without-value($env,
2955- $case/fots:environment))
2956-};
2957-
2958-
2959-declare %private function env:var-decl-with-value(
2960- $env as element(fots:environment)?,
2961- $baseURI as xs:anyURI
2962-) as xs:string?
2963-{
2964- string-join(
2965- for $param in $env/fots:param
2966- let $select := $param/@select
2967- let $file := $env/fots:source[@uri = translate($select, "'", "")]/@file
2968- let $type := $param/@as
2969- let $varValue := if(starts-with($select, "'") and
2970- ends-with($select, "'") and
2971- exists($file))
2972- then concat('"',
2973- resolve-uri($file, $baseURI),
2974- '"')
2975- else $select
2976- where (exists($select) and
2977-(: if there is an attribute 'declared' set to true, this means that the variable
2978- is declared within the 'test' itself so no additional variable declaration
2979- is needed :)
2980- empty($param[@declared="true"]))
2981- return concat("declare variable $",
2982- $param/@name,
2983- ((concat(" as ", $type)))[$type],
2984- " := ",
2985- $varValue,
2986- ";")
2987- ," ")
2988-};
2989-
2990-
2991-declare %private function env:var-decl-without-value(
2992- $env as element(fots:environment)?,
2993- $envCase as element(fots:environment)?
2994-) as xs:string?
2995-{
2996- string-join(
2997- (for $param in ($env/fots:param, $envCase/fots:param)
2998- let $select := $param/@select
2999- let $type := $param/@as
3000- where (empty($select) and
3001- empty($param[@declared="true"]))
3002- return concat("declare variable $",
3003- $param/@name,
3004- ((concat(" as ", $type)))[$type],
3005- " external;"),
3006- for $source in ($env/fots:source, $envCase/fots:source)
3007- let $role := $source/@role
3008- where starts-with($role,"$")
3009- return concat("declare variable ",
3010- $role,
3011- " external;"))
3012- ," ")
3013-};
3014-
3015-
3016-(:~
3017- : Returns the string for setting the context item if needed.
3018- : @param $env environment.
3019- : @param $envBaseURI test base URI of the environment.
3020- : @return the string for setting the context item if needed.
3021- :)
3022-declare function env:set-context-item(
3023- $env as element(fots:environment)?,
3024- $envBaseURI as xs:anyURI?
3025-) as xs:string? {
3026- if (exists($env/fots:source[@role = "."]))
3027- then string-join((env:declare-context-item($env, $envBaseURI),
3028- 'xqxq:bind-context-item($queryID, $contextItem);')
3029- ,"&#xA;")
3030- else ()
3031-};
3032-
3033-
3034-declare %private function env:declare-context-item(
3035- $env as element(fots:environment)?,
3036- $envBaseURI as xs:anyURI?
3037-) as xs:string
3038-{
3039- let $ciURI := resolve-uri($env/fots:source[@role = "."]/@file, $envBaseURI)
3040- return
3041- if(empty($env/fots:source[@validation = "strict"]))
3042- then concat('variable $contextItem := doc("', $ciURI, '");')
3043- else string-join(
3044- ("&#xA;",
3045- "variable $contextItemQuery := xqxq:prepare-main-module('",
3046- env:get-schema-import($env),
3047- concat('validate { doc("', $ciURI, '")', "}',", " "),
3048- "resolver:url-resolver#2, ());",
3049- "variable $contextItem := xqxq:evaluate($contextItemQuery);")
3050- ,"&#xA;")
3051-};
3052-
3053-
3054-(:~
3055- : Returns the strings for variable binding in XQXQ.
3056- :
3057- : @param $env the environment of the catalog/test-set (given with 'ref').
3058- : @param $envBaseURI the relative URI for the environment.
3059- : @return the strings for variable binding in XQXQ.
3060- :)
3061-declare function env:set-variables(
3062- $env as element(fots:environment)?,
3063- $envBaseURI as xs:anyURI
3064-) as xs:string?
3065-{
3066- if(empty($env))
3067- then ()
3068- else
3069- let $srcNames := for $source in $env/fots:source
3070- where starts-with(data($source/@role),"$")
3071- return substring-after(data($source/@role),"$"),
3072- $srcValues := for $srcName in $srcNames
3073- return concat('doc("',
3074- resolve-uri($env/fots:source[@role = concat("$",$srcName)]/@file, $envBaseURI),
3075- '")')
3076- return
3077- string-join(
3078- (for $srcName in $srcNames
3079- let $index := index-of($srcNames, $srcName)
3080- return
3081- concat('xqxq:bind-variable( $queryID, xs:QName("', $srcName, '")', ', ',
3082- $srcValues[$index], ');'),
3083- for $param in $env/fots:param
3084- let $select:= $param/@select
3085- let $file := $env/fots:source[@uri = translate($select, "'", "")]/@file
3086- let $varValue := if(starts-with($select, "'") and
3087- ends-with($select, "'") and
3088- exists($file))
3089- then concat('"',
3090- resolve-uri($file, $envBaseURI),
3091- '"')
3092- else $select
3093- let $varName := $param/@name
3094- where (exists($select) and
3095-(: if there is an attribute 'declared' set to true, this means that the variable
3096- is declared within the 'test' itself :)
3097- exists($param[@declared="true"]))
3098- return
3099- concat('xqxq:bind-variable( $queryID, xs:QName("',
3100- $param/@name,
3101- '")', ', ',
3102- $varValue, ');'))
3103- , "&#xA;")
3104-};
3105-
3106-
3107-declare %private function env:get-schema-import (
3108- $env as element(fots:environment)?
3109-) as xs:string
3110-{
3111- if (empty($env))
3112- then ""
3113- else
3114- let $namespace := $env/fots:namespace[@uri = data($env/fots:schema/@uri)]
3115- let $prefix as xs:string := if(exists($namespace))
3116- then xs:string(data($namespace/@prefix))
3117- else "p"
3118- return
3119- if($prefix = "")
3120- then concat('import schema default element namespace "',
3121- $env/fots:schema/@uri,
3122- '";&#xA;')
3123- else concat('import schema namespace ',
3124- $prefix,
3125- ' = "',
3126- $env/fots:schema/@uri,
3127- '";&#xA;')
3128-};
3129-
3130-
3131-(:~
3132- : Returns the XQXQ URL resolver declaration.
3133- : @param $case the test case.
3134- : @param $env the environment.
3135- : @param $envBaseURI URI of the environment.
3136- : @param $testSetBaseURI URI to the test set that defines the test case.
3137- : @return the XQXQ URL resolver declaration.
3138- :)
3139-declare function env:resolver(
3140- $case as element(fots:test-case),
3141- $env as element(fots:environment)?,
3142- $envBaseURI as xs:anyURI?,
3143- $testSetBaseURI as xs:anyURI
3144-) as xs:string?
3145-{
3146- let $envSchema := $env/fots:schema,
3147- $tcSchema := $case/fots:environment/fots:schema,
3148- $schemas := ($envSchema, $tcSchema),
3149- $modules := $case/fots:module,
3150- $resources := ($env/fots:resource, $case/fots:environment/fots:schema)
3151- return
3152- if (empty($schemas) and empty($modules) and empty($resources))
3153- then ()
3154- else string-join(
3155- ("declare namespace resolver = 'http://www.zorba-xquery.com/modules/xqxq/url-resolver';",
3156- $env:hof,
3157- "declare function resolver:url-resolver($namespace as xs:string, $entity as xs:string) {",
3158- "switch($entity)",
3159- if (exists($schemas))
3160- then string-join(("case 'schema'",
3161- " return switch($namespace)",
3162- (for $schema in $envSchema
3163- return concat(" case '",
3164- data($schema/@uri),
3165- "' return doc('",
3166- resolve-uri($schema/@file, $envBaseURI),
3167- "')"),
3168- for $schema in $tcSchema
3169- return concat(" case '",
3170- data($schema/@uri),
3171- "' return doc('",
3172- resolve-uri($schema/@file, $testSetBaseURI),
3173- "')")),
3174- " default return ()"),
3175- "&#xA;")
3176- else (),
3177- if (exists($modules))
3178- then string-join(("case 'module'",
3179- " return switch($namespace)",
3180- for $module in $modules
3181- return concat(" case '",
3182- data($module/@uri),
3183- "' return unparsed-text('",
3184- resolve-uri($module/@file, $testSetBaseURI),
3185- "') "),
3186- " default return ()"),
3187- "&#xA;")
3188- else (),
3189- if (exists($resources)) then
3190- string-join(("case ''",
3191- " return switch($namespace)",
3192- for $resource in $resources
3193- return concat(" case '",
3194- data($resource/@uri),
3195- "' return unparsed-text('",
3196- resolve-uri($resource/@file, $envBaseURI),
3197- "'",
3198- if(exists($resource/@encoding))
3199- then concat (",'",
3200- data($resource/@encoding),
3201- "'")
3202- else (),
3203- ") "),
3204- " default return ()")
3205- ,"&#xA;")
3206- else ()
3207- , "default return ()","};"),
3208- "&#xA;")
3209-};
3210-
3211-
3212-(:~
3213- : Checks the dependencies according to the Zorba manifest.
3214- :
3215- : @param $deps the dependencies of the test set and test case
3216- : @param $zorbaManifest Zorba manifest document.
3217- : @return if true empty string, otherwise returns a string with the
3218- : dependencies that were not matched.
3219- :)
3220-declare function env:check-dependencies(
3221- $deps as element(fots:dependency)*,
3222- $zorbaManifest
3223-) as xs:string*
3224-{
3225- if(empty($deps))
3226- then ()
3227- else
3228- for $dep in $deps
3229- let $satisfied := if(exists($dep/@satisfied))
3230- then data($dep/@satisfied)
3231- else "true"
3232- let $zorbaDep := $zorbaManifest//fots:dependency[ @type = $dep/@type and
3233- @value = $dep/@value and
3234- @satisfied = $satisfied]
3235- return
3236- if(empty($zorbaDep))
3237- then concat("Dependency (type=",
3238- $dep/@type,
3239- ", value=",
3240- $dep/@value,
3241- ", satisfied=",
3242- $satisfied,
3243- ") was not met. ")
3244- else ()
3245-};
3246-
3247-
3248-(:~
3249- : Retrieves the environment from a test-set/catalog given an environment name.
3250- : @param $catalog FOTS catalog file.
3251- : @param $testSet test set.
3252- : @param $envName name of the environment.
3253- : @return the environment with the given name.
3254- :)
3255-declare function env:get-environment (
3256- $catalog,
3257- $testSet as element (fots:test-set),
3258- $envName as xs:string
3259-) as element(fots:environment)?
3260-{
3261- let $envTestSet := $testSet/test-set//environment[@name = $envName]
3262- return
3263- if (empty($envTestSet))
3264- then $catalog/catalog//environment[@name = $envName]
3265- else $envTestSet
3266-};
3267
3268=== added file 'test/fots_driver/errors.xq'
3269--- test/fots_driver/errors.xq 1970-01-01 00:00:00 +0000
3270+++ test/fots_driver/errors.xq 2013-01-08 14:37:31 +0000
3271@@ -0,0 +1,36 @@
3272+(:
3273+ : Copyright 2006-2011 The FLWOR Foundation.
3274+ :
3275+ : Licensed under the Apache License, Version 2.0 (the "License");
3276+ : you may not use this file except in compliance with the License.
3277+ : You may obtain a copy of the License at
3278+ :
3279+ : http://www.apache.org/licenses/LICENSE-2.0
3280+ :
3281+ : Unless required by applicable law or agreed to in writing, software
3282+ : distributed under the License is distributed on an "AS IS" BASIS,
3283+ : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3284+ : See the License for the specific language governing permissions and
3285+ : limitations under the License.
3286+ :)
3287+
3288+(:~
3289+ : Zorba FOTS driver errors
3290+ : @author Sorin Nasoi
3291+ :)
3292+
3293+module namespace err =
3294+ "http://www.zorba-xquery.com/fots-driver/errors";
3295+
3296+(:~
3297+ : Errors namespace URI.
3298+:)
3299+declare variable $err:errNS as xs:string :=
3300+ "http://www.zorba-xquery.com/fots-driver/errors";
3301+
3302+(:~
3303+ : xs:QName with
3304+ : namespace URI = "http://www.w3.org/2010/09/qt-fots-catalog/errors"
3305+ : and local name "err:errNA"
3306+:)
3307+declare variable $err:errNA as xs:QName := fn:QName($err:errNS, "check:errNA");
3308
3309=== removed file 'test/fots_driver/errors.xq'
3310--- test/fots_driver/errors.xq 2012-12-18 11:40:08 +0000
3311+++ test/fots_driver/errors.xq 1970-01-01 00:00:00 +0000
3312@@ -1,36 +0,0 @@
3313-(:
3314- : Copyright 2006-2011 The FLWOR Foundation.
3315- :
3316- : Licensed under the Apache License, Version 2.0 (the "License");
3317- : you may not use this file except in compliance with the License.
3318- : You may obtain a copy of the License at
3319- :
3320- : http://www.apache.org/licenses/LICENSE-2.0
3321- :
3322- : Unless required by applicable law or agreed to in writing, software
3323- : distributed under the License is distributed on an "AS IS" BASIS,
3324- : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3325- : See the License for the specific language governing permissions and
3326- : limitations under the License.
3327- :)
3328-
3329-(:~
3330- : Zorba FOTS driver errors
3331- : @author Sorin Nasoi
3332- :)
3333-
3334-module namespace err =
3335- "http://www.zorba-xquery.com/fots-driver/errors";
3336-
3337-(:~
3338- : Errors namespace URI.
3339-:)
3340-declare variable $err:errNS as xs:string :=
3341- "http://www.zorba-xquery.com/fots-driver/errors";
3342-
3343-(:~
3344- : xs:QName with
3345- : namespace URI = "http://www.w3.org/2010/09/qt-fots-catalog/errors"
3346- : and local name "err:errNA"
3347-:)
3348-declare variable $err:errNA as xs:QName := fn:QName($err:errNS, "check:errNA");
3349
3350=== added file 'test/fots_driver/evaluate.xq'
3351--- test/fots_driver/evaluate.xq 1970-01-01 00:00:00 +0000
3352+++ test/fots_driver/evaluate.xq 2013-01-08 14:37:31 +0000
3353@@ -0,0 +1,517 @@
3354+(:
3355+ : Copyright 2006-2011 The FLWOR Foundation.
3356+ :
3357+ : Licensed under the Apache License, Version 2.0 (the "License");
3358+ : you may not use this file except in compliance with the License.
3359+ : You may obtain a copy of the License at
3360+ :
3361+ : http://www.apache.org/licenses/LICENSE-2.0
3362+ :
3363+ : Unless required by applicable law or agreed to in writing, software
3364+ : distributed under the License is distributed on an "AS IS" BASIS,
3365+ : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3366+ : See the License for the specific language governing permissions and
3367+ : limitations under the License.
3368+ :)
3369+
3370+(:~
3371+ : Zorba FOTS driver evaluate
3372+ : @author Sorin Nasoi
3373+ :)
3374+
3375+module namespace eval =
3376+ "http://www.zorba-xquery.com/fots-driver/evaluate";
3377+
3378+import schema namespace output =
3379+ "http://www.w3.org/2010/xslt-xquery-serialization";
3380+
3381+import module namespace xqxq =
3382+ "http://www.zorba-xquery.com/modules/xqxq";
3383+import module namespace schema =
3384+ "http://www.zorba-xquery.com/modules/schema";
3385+
3386+import module namespace fots-err =
3387+ "http://www.zorba-xquery.com/fots-driver/errors" at "errors.xq";
3388+import module namespace util =
3389+ "http://www.zorba-xquery.com/fots-driver/util" at "util.xq";
3390+
3391+declare namespace err =
3392+ "http://www.w3.org/2005/xqt-errors";
3393+declare namespace fots =
3394+ "http://www.w3.org/2010/09/qt-fots-catalog";
3395+
3396+declare namespace ann =
3397+ "http://www.zorba-xquery.com/annotations";
3398+
3399+
3400+(:~
3401+ : Checks if the result matches the assertions.
3402+ : @param $result actual result.
3403+ : @param $expResult expected result.
3404+ : @return the results of assertion evaluations.
3405+ :)
3406+declare %ann:sequential function eval:result(
3407+ $result as item()*,
3408+ $expResult as element()
3409+) as element()* {
3410+ let $err := eval:check-assertion($result,
3411+ $expResult,
3412+ (),
3413+ "")
3414+ return if(empty($err))
3415+ then ()
3416+ else
3417+ <fots:info>
3418+ <fots:expected-result>{$expResult}</fots:expected-result>
3419+ <fots:result>{$result}</fots:result>
3420+ <fots:errors>{$err}</fots:errors>
3421+ </fots:info>
3422+};
3423+
3424+(:~
3425+ : Checks if the error found matches the expected error (if any).
3426+ : @param $result actual result.
3427+ : @param $expResult expected result.
3428+ : @param $code err:code.
3429+ : @param $errorDescription err:description.
3430+ : @return the results of error evaluation.
3431+ :)
3432+declare %ann:sequential function eval:error(
3433+ $result as item()*,
3434+ $expResult as element(),
3435+ $code as xs:QName?,
3436+ $errorDescription as xs:string?
3437+) as element()* {
3438+ if(empty($result)) then
3439+ let $err := eval:error-code($code,
3440+ $errorDescription,
3441+ $expResult)
3442+ return
3443+ if(empty($err))
3444+ then ()
3445+ else
3446+ <fots:info>
3447+ <fots:expected-result>{$expResult}</fots:expected-result>
3448+ <fots:result>{$result}</fots:result>
3449+ <fots:errors>{$err}</fots:errors>
3450+ </fots:info>
3451+ else
3452+ <fots:info>
3453+ <fots:expected-result>{$expResult}</fots:expected-result>
3454+ <fots:result>{$result}</fots:result>
3455+ <fots:errors>{concat("Expected error [",
3456+ data($expResult/@code),
3457+ "], found result.")}</fots:errors>
3458+ </fots:info>
3459+};
3460+
3461+declare %private %ann:sequential function eval:error-code(
3462+ $code as xs:QName?,
3463+ $errorDescription as xs:string?,
3464+ $expResult as element()
3465+) as xs:string* {
3466+ let $assertName := local-name($expResult)
3467+ return
3468+ if( $assertName = "error")
3469+ then
3470+ if (exists($expResult[@code = "*"]) or
3471+ exists($expResult[@code = local-name-from-QName($code)]))
3472+ then ()
3473+ else if(exists($code))
3474+ then concat("Expected error: ",
3475+ data($expResult/@code),
3476+ ". Found error: ",
3477+ local-name-from-QName($code))
3478+ else concat("Expected error: ",
3479+ data($expResult/@code),
3480+ ". Found empty result.")
3481+ else if (($assertName = "any-of") or ($assertName = "all-of"))
3482+ then eval:check-assertion((),
3483+ $expResult,
3484+ $code,
3485+ $errorDescription)
3486+ else concat("Expected result, found error ",
3487+ local-name-from-QName($code),
3488+ " - ",
3489+ $errorDescription)
3490+};
3491+
3492+declare %private %ann:sequential function eval:check-assertion(
3493+ $result as item()*,
3494+ $expResult as element(),
3495+ $code as xs:QName?,
3496+ $errorDescription as xs:string?
3497+) as xs:string* {
3498+ let $test := local-name($expResult)
3499+ return switch($test)
3500+ case 'all-of'
3501+ return eval:assert-all-of($result,
3502+ $expResult,
3503+ $code,
3504+ $errorDescription)
3505+ case 'any-of'
3506+ return eval:assert-any-of($result,
3507+ $expResult,
3508+ $code,
3509+ $errorDescription)
3510+ case 'assert'
3511+ return eval:assert($result,
3512+ $expResult)
3513+ case 'assert-count'
3514+ return eval:assert-count($result,
3515+ $expResult)
3516+ case 'assert-deep-eq'
3517+ return eval:assert-deep-eq($result,
3518+ $expResult)
3519+ case 'assert-empty'
3520+ return eval:assert-empty($result)
3521+ case 'assert-eq'
3522+ return eval:assert-eq($result,
3523+ $expResult)
3524+ case 'assert-false'
3525+ return eval:assert-false($result)
3526+ case 'assert-permutation'
3527+ return eval:assert-permutation($result,
3528+ $expResult)
3529+ case 'assert-xml'
3530+ return eval:assert-xml($result,
3531+ $expResult)
3532+ case 'assert-serialization-error'
3533+ return eval:assert-serialization-error($result,
3534+ $expResult)
3535+ case 'assert-string-value'
3536+ return eval:assert-string-value($result,
3537+ $expResult)
3538+ case 'assert-true'
3539+ return eval:assert-true($result)
3540+ case 'assert-type'
3541+ return eval:assert-type($result,
3542+ $expResult)
3543+ case 'serialization-matches'
3544+ return eval:serialization-matches($result,
3545+ $expResult)
3546+ case 'error'
3547+ return eval:error($result,
3548+ $expResult,
3549+ $code,
3550+ $errorDescription)
3551+ default
3552+ return error($fots-err:errNA,
3553+ "&#xA;The requested assertion type is not implemented.")
3554+};
3555+
3556+(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_any-of :)
3557+declare %private %ann:sequential function eval:assert-any-of(
3558+ $result as item()*,
3559+ $expResult as element(),
3560+ $code as xs:QName?,
3561+ $errorDescription as xs:string?
3562+) as xs:string? {
3563+ let $results :=
3564+ for $tmp in $expResult/*
3565+ return <result>{
3566+ for $r in eval:check-assertion($result,
3567+ $tmp,
3568+ $code,
3569+ $errorDescription)
3570+ return <item>{$r}</item>
3571+ } </result>
3572+ where every $result in $results satisfies $result/item
3573+ return concat("'Assert-any-of' returned: ",
3574+ string-join(util:serialize-result($results/data(item)), ' '))
3575+};
3576+
3577+(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_all-of :)
3578+declare %private %ann:sequential function eval:assert-all-of(
3579+ $result as item()*,
3580+ $expResult as element(),
3581+ $code as xs:QName?,
3582+ $errorDescription as xs:string?
3583+) as xs:string* {
3584+ for $tmp in $expResult/*
3585+ return eval:check-assertion($result,
3586+ $tmp,
3587+ $code,
3588+ $errorDescription)
3589+};
3590+
3591+(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert :)
3592+declare %private %ann:sequential function eval:assert(
3593+ $result as item()*,
3594+ $expResult as element()
3595+) as xs:string? {
3596+ try {
3597+ {
3598+ variable $queryText := concat(
3599+ "xquery version '3.0';",
3600+ "declare namespace o = 'http://www.zorba-xquery.com/options/features';",
3601+ "declare option o:enable 'hof';",
3602+ "declare variable $result external; ",
3603+ xs:string($expResult));
3604+ variable $queryKey := xqxq:prepare-main-module($queryText),
3605+ $queryKeyResult := xqxq:bind-variable($queryKey,
3606+ xs:QName('result'),
3607+ $result),
3608+ $queryResult := xqxq:evaluate($queryKey);
3609+
3610+ if($queryResult)
3611+ then ()
3612+ else concat("Assertion ", $expResult, " failed.")
3613+ }
3614+ } catch * {
3615+ concat("'assert' returned: fail with error ",
3616+ $err:code, " : ", $err:description)
3617+ }
3618+};
3619+
3620+(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-count :)
3621+declare %private function eval:assert-count(
3622+ $result as item()*,
3623+ $expResult as element()
3624+) as xs:string? {
3625+ if(count($result) eq xs:integer($expResult))
3626+ then ()
3627+ else "'assert-count' returned: actual number of items is different than the expected number of items."
3628+};
3629+
3630+(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-deep-eq :)
3631+declare %private %ann:sequential function eval:assert-deep-eq(
3632+ $result as item()*,
3633+ $expResult as element()
3634+) as xs:string? {
3635+ try {
3636+ {
3637+ variable $queryText := concat(
3638+ "xquery version '3.0';",
3639+ "declare namespace o = 'http://www.zorba-xquery.com/options/features';",
3640+ "declare option o:enable 'hof';",
3641+ "declare variable $x external;",
3642+ "let $y := (",string(data($expResult)),") return ",
3643+ "every $i in 1 to max((count($x),count($y))) satisfies deep-equal($x[$i],$y[$i])");
3644+ variable $queryKey := xqxq:prepare-main-module($queryText),
3645+ $queryKeyResult := xqxq:bind-variable($queryKey,
3646+ xs:QName('x'),
3647+ $result),
3648+ $queryResult := xqxq:evaluate($queryKey);
3649+ if($queryResult)
3650+ then ()
3651+ else "'assert-deep-eq' returned: actual result is not deep-equal to expected result."
3652+ }
3653+ } catch * {
3654+ concat("'assert-deep-eq' returned: fail with error ",
3655+ $err:code, " : ", $err:description)
3656+ }
3657+};
3658+
3659+(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-empty :)
3660+declare %private function eval:assert-empty(
3661+ $result as item()*
3662+) as xs:string? {
3663+ if(empty($result))
3664+ then ()
3665+ else "'assert-empty' returned: result is not empty as expected."
3666+};
3667+
3668+(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-eq :)
3669+declare %private %ann:sequential function eval:assert-eq(
3670+ $result as item()*,
3671+ $expResult as element()
3672+) as xs:string? {
3673+ try {
3674+ {
3675+ variable $type := if (empty($result[1]) or (count($result) gt 1))
3676+ then ()
3677+ else
3678+ let $tmp := xs:string(schema:schema-type($result[1]))
3679+(: add exception for the types defined in schemas available in the environment of the tests :)
3680+ return
3681+ if (starts-with($tmp, 'xs:'))
3682+ then $tmp
3683+ else ();
3684+ variable $queryText := concat(
3685+ "declare variable $x external;",
3686+ "$x eq ",
3687+ if (starts-with(data($expResult), $type))
3688+ then data($expResult)
3689+ else concat($type,"(", data($expResult), ")"));
3690+ variable $queryKey := xqxq:prepare-main-module($queryText);
3691+
3692+ xqxq:bind-variable($queryKey,
3693+ xs:QName('x'),
3694+ $result);
3695+ variable $queryResult := xqxq:evaluate($queryKey);
3696+ if($queryResult)
3697+ then ()
3698+ else "'assert-eq' returned: result doesn't match expected result."
3699+ }
3700+ } catch * {
3701+ concat("'assert-eq' returned: comparison failed with error ",
3702+ $err:code, " : ", $err:description)
3703+ }
3704+};
3705+
3706+(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-true :)
3707+declare %private function eval:assert-true(
3708+ $result as item()*
3709+) as xs:string? {
3710+ if($result eq fn:true())
3711+ then ()
3712+ else "'assert-true' returned: query doesn't evaluate to true."
3713+};
3714+
3715+(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-false :)
3716+declare %private function eval:assert-false(
3717+ $result as item()*
3718+) as xs:string? {
3719+ if($result eq fn:false())
3720+ then ()
3721+ else "'assert-false' returned: query doesn't evaluate to false."
3722+};
3723+
3724+(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-permutation :)
3725+declare %private %ann:sequential function eval:assert-permutation(
3726+ $result as item()*,
3727+ $expResult as element()
3728+) as xs:string? {
3729+ try {
3730+ {
3731+ variable $queryText := concat(
3732+ "xquery version '3.0';",
3733+ "declare namespace o = 'http://www.zorba-xquery.com/options/features';",
3734+ "declare option o:enable 'hof';",
3735+ "declare variable $x external;",
3736+ "let $y := (",string(data($expResult)),") return ",
3737+ (: if count(intersection(M1,M2)) = count(union(M1,M2)) = count(M1) then the sequences are identical :)
3738+ "(count(distinct-values($x[ . = $y])) = count(distinct-values(($x, $y)))) = count(distinct-values($x))");
3739+ variable $queryKey := xqxq:prepare-main-module($queryText),
3740+ $queryKeyResult := xqxq:bind-variable($queryKey,
3741+ xs:QName('x'),
3742+ $result),
3743+ $queryResult := xqxq:evaluate($queryKey);
3744+ if($queryResult)
3745+ then ()
3746+ else "'assert-permutation' returned: result isn't a permutation of expected result."
3747+ }
3748+ } catch * {
3749+ concat("'assert-permutation' returned: fail with error ",
3750+ $err:code, " : ", $err:description)
3751+ }
3752+};
3753+
3754+(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-xml :)
3755+declare %private function eval:assert-xml(
3756+ $result as item()*,
3757+ $expResult as element()
3758+) {
3759+(:TODO call xml-canonicalization after bug #1076919 is implemented.:)
3760+ try {
3761+ let $serRes := util:serialize-result($result),
3762+ $result1 as xs:string := string-join($serRes,''),
3763+ $result2 as xs:string := string-join($serRes,' ')
3764+ return
3765+ if((normalize-space($result1) eq normalize-space(string($expResult))) or
3766+ (normalize-space($result2) eq normalize-space(string($expResult))))
3767+ then ()
3768+ else "'assert-xml' returned: result is different from the expected result."
3769+ } catch * {
3770+ concat("'assert-xml' returned: fail with error ",
3771+ $err:code, " : ", $err:description)
3772+ }
3773+};
3774+
3775+(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-serialization-error :)
3776+declare %private %ann:sequential function eval:assert-serialization-error(
3777+ $result as item()*,
3778+ $expResult as element()
3779+) as xs:string? {
3780+ try {
3781+ let $serializedResult as xs:string := string-join(
3782+ util:serialize-result($result), '')
3783+ return
3784+ "'assert-serialization-error' returned: expected serialization error but got result."
3785+ } catch * {
3786+ eval:error((),
3787+ $expResult,
3788+ $err:code,
3789+ $err:description)
3790+ }
3791+};
3792+
3793+(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_serialization-matches :)
3794+declare %private function eval:serialization-matches(
3795+ $result as item()*,
3796+ $expResult as element()
3797+) as xs:string? {
3798+ try {
3799+ let $serResult := string-join(util:serialize-result($result,
3800+ $util:serParamXml),
3801+ ''),
3802+ $serExpResult := string-join(util:serialize-result(data($expResult),
3803+ $util:serParamXml),
3804+ '')
3805+ let $matchesFlags := data($expResult/@flags)
3806+ return
3807+ if(exists($matchesFlags))
3808+ then
3809+ if(matches($serResult, $serExpResult, $matchesFlags))
3810+ then ()
3811+ else concat("'serialization-matches' returned: result does not match expected result with flags '",
3812+ $matchesFlags,
3813+ "'.")
3814+ else
3815+ if(matches($serResult, $serExpResult))
3816+ then ()
3817+ else "'serialization-matches' returned: result does not match expected result."
3818+ } catch * {
3819+ concat("'serialization-matches' returned: fail with error ",
3820+ $err:code, " : ", $err:description)
3821+ }
3822+};
3823+
3824+(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-string-value :)
3825+declare %private function eval:assert-string-value(
3826+ $result as item()*,
3827+ $expResult as element()
3828+) as xs:string? {
3829+ try {
3830+ let $serRes := string-join(util:serialize-result($result), ' '),
3831+ $res := if (empty($expResult[@normalize-space="true"]))
3832+ then $serRes
3833+ else normalize-space($serRes),
3834+ $expRes := if (empty($expResult[@normalize-space="true"]))
3835+ then xs:string($expResult)
3836+ else normalize-space(xs:string($expResult))
3837+ return
3838+ if($res eq $expRes)
3839+ then ()
3840+ else "'assert-string-value' returned: result different from expected result."
3841+ } catch * {
3842+ concat("'assert-string-value' returned: failed with error ",
3843+ $err:code, " : ", $err:description)
3844+ }
3845+};
3846+
3847+(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-type :)
3848+declare %private %ann:sequential function eval:assert-type(
3849+ $result as item()*,
3850+ $expResult as element()
3851+) as xs:string? {
3852+ try {
3853+ {
3854+ variable $queryText := concat( "declare variable $x external; $x instance of ",
3855+ data($expResult));
3856+ variable $queryKey := xqxq:prepare-main-module($queryText),
3857+ $queryKeyResult := xqxq:bind-variable($queryKey,
3858+ xs:QName('x'),
3859+ $result),
3860+ $queryResult := xqxq:evaluate($queryKey);
3861+ if($queryResult)
3862+ then ()
3863+ else concat("'assert-type' returned: result doesn't have type '",
3864+ data($expResult), "'")
3865+ }
3866+ } catch * {
3867+ concat("'assert-type' returned: failed with error ",
3868+ $err:code, " : ", $err:description)
3869+ }
3870+};
3871
3872=== removed file 'test/fots_driver/evaluate.xq'
3873--- test/fots_driver/evaluate.xq 2012-12-18 11:40:08 +0000
3874+++ test/fots_driver/evaluate.xq 1970-01-01 00:00:00 +0000
3875@@ -1,565 +0,0 @@
3876-(:
3877- : Copyright 2006-2011 The FLWOR Foundation.
3878- :
3879- : Licensed under the Apache License, Version 2.0 (the "License");
3880- : you may not use this file except in compliance with the License.
3881- : You may obtain a copy of the License at
3882- :
3883- : http://www.apache.org/licenses/LICENSE-2.0
3884- :
3885- : Unless required by applicable law or agreed to in writing, software
3886- : distributed under the License is distributed on an "AS IS" BASIS,
3887- : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3888- : See the License for the specific language governing permissions and
3889- : limitations under the License.
3890- :)
3891-
3892-(:~
3893- : Zorba FOTS driver evaluate
3894- : @author Sorin Nasoi
3895- :)
3896-
3897-module namespace eval =
3898- "http://www.zorba-xquery.com/fots-driver/evaluate";
3899-
3900-import schema namespace output =
3901- "http://www.w3.org/2010/xslt-xquery-serialization";
3902-
3903-import module namespace xqxq =
3904- "http://www.zorba-xquery.com/modules/xqxq";
3905-import module namespace schema =
3906- "http://www.zorba-xquery.com/modules/schema";
3907-
3908-import module namespace fots-err =
3909- "http://www.zorba-xquery.com/fots-driver/errors" at "errors.xq";
3910-import module namespace util =
3911- "http://www.zorba-xquery.com/fots-driver/util" at "util.xq";
3912-
3913-declare namespace err =
3914- "http://www.w3.org/2005/xqt-errors";
3915-declare namespace fots =
3916- "http://www.w3.org/2010/09/qt-fots-catalog";
3917-
3918-declare namespace ann =
3919- "http://www.zorba-xquery.com/annotations";
3920-
3921-declare namespace features =
3922- "http://www.zorba-xquery.com/options/features";
3923-declare option features:enable "hof";
3924-
3925-(:~
3926- : Checks if the result matches the assertions.
3927- : @param $result actual result.
3928- : @param $expResult expected result.
3929- : @param $showResult is true the verbose mode is assumed.
3930- : @return the results of assertion evaluations.
3931- :)
3932-declare %ann:sequential function eval:result(
3933- $result as item()*,
3934- $expResult as element(),
3935- $showResult as xs:boolean?
3936-) as element()? {
3937- let $err := eval:check-assertion($result,
3938- $expResult,
3939- (),
3940- "",
3941- $showResult)
3942- return if(empty($err))
3943- then ()
3944- else
3945- <out>
3946- <expected-result>{$expResult}</expected-result>
3947- {
3948- if($showResult)
3949- then (<result>{$result}</result>,
3950- <errors>{$err}</errors>)
3951- else ()
3952- }
3953- </out>
3954-};
3955-
3956-(:~
3957- : Checks if the error found matches the expected error (if any).
3958- : @param $result actual result.
3959- : @param $expResult expected result.
3960- : @param $code err:code.
3961- : @param $errorDescription err:description.
3962- : @param $showResult is true the verbose mode is assumed.
3963- : @return the results of error evaluation.
3964- :)
3965-declare %ann:sequential function eval:error(
3966- $result as item()*,
3967- $expResult as element(),
3968- $code as xs:QName?,
3969- $errorDescription as xs:string?,
3970- $showResult as xs:boolean?
3971-) as xs:string* {
3972- if(empty($result)) then
3973- let $err := eval:error-code($code,
3974- $errorDescription,
3975- $expResult)
3976- return $err
3977- else
3978- concat("Expected error &#xA;",
3979- data($expResult/@code),
3980- ",&#xA; found result ",
3981- if ($showResult)
3982- then string-join(util:serialize-result($result),' ')
3983- else ())
3984-};
3985-
3986-declare %private %ann:sequential function eval:error-code(
3987- $code as xs:QName?,
3988- $errorDescription as xs:string?,
3989- $expResult as element()
3990-) as xs:string* {
3991- let $assertName := local-name($expResult)
3992- return
3993- if( $assertName = "error")
3994- then
3995- if (exists($expResult[@code = "*"]) or
3996- exists($expResult[@code = local-name-from-QName($code)]))
3997- then ()
3998- else concat("Expected error: ",
3999- data($expResult/@code),
4000- ". Found error: ",
4001- local-name-from-QName($code))
4002- else if (($assertName = "any-of") or ($assertName = "all-of"))
4003- then eval:check-assertion((),
4004- $expResult,
4005- $code,
4006- $errorDescription,
4007- fn:true())
4008- else concat("Expected result: &#xA;",
4009- data($expResult),
4010- ".&#xA; Found error ",
4011- local-name-from-QName($code),
4012- " - ",
4013- $errorDescription)
4014-};
4015-
4016-declare %private %ann:sequential function eval:check-assertion(
4017- $result as item()*,
4018- $expResult as element(),
4019- $code as xs:QName?,
4020- $errorDescription as xs:string?,
4021- $showResult as xs:boolean?
4022-) as xs:string* {
4023- let $test := local-name($expResult)
4024- return switch($test)
4025- case 'all-of'
4026- return eval:assert-all-of($result,
4027- $expResult,
4028- $code,
4029- $errorDescription,
4030- $showResult)
4031- case 'any-of'
4032- return eval:assert-any-of($result,
4033- $expResult,
4034- $code,
4035- $errorDescription,
4036- $showResult)
4037- case 'assert'
4038- return eval:assert($result,
4039- $expResult)
4040- case 'assert-count'
4041- return eval:assert-count($result,
4042- $expResult)
4043- case 'assert-deep-eq'
4044- return eval:assert-deep-eq($result,
4045- $expResult)
4046- case 'assert-empty'
4047- return eval:assert-empty($result)
4048- case 'assert-eq'
4049- return eval:assert-eq($result,
4050- $expResult)
4051- case 'assert-false'
4052- return eval:assert-false($result)
4053- case 'assert-permutation'
4054- return eval:assert-permutation($result,
4055- $expResult)
4056- case 'assert-xml'
4057- return eval:assert-xml($result,
4058- $expResult)
4059- case 'assert-serialization-error'
4060- return eval:assert-serialization-error($result,
4061- $expResult)
4062- case 'assert-string-value'
4063- return eval:assert-string-value($result,
4064- $expResult)
4065- case 'assert-true'
4066- return eval:assert-true($result)
4067- case 'assert-type'
4068- return eval:assert-type($result,
4069- $expResult)
4070- case 'serialization-matches'
4071- return eval:serialization-matches($result,
4072- $expResult)
4073- case 'error'
4074- return eval:error($result,
4075- $expResult,
4076- $code,
4077- $errorDescription,
4078- $showResult)
4079- default
4080- return error($fots-err:errNA,
4081- "&#xA;The requested assertion type is not implemented.")
4082-};
4083-
4084-(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_any-of :)
4085-declare %private %ann:sequential function eval:assert-any-of(
4086- $result as item()*,
4087- $expResult as element(),
4088- $code as xs:QName?,
4089- $errorDescription as xs:string?,
4090- $showResult as xs:boolean
4091-) as xs:string? {
4092- let $results :=
4093- for $tmp in $expResult/*
4094- return <result>{
4095- for $r in eval:check-assertion($result,
4096- $tmp,
4097- $code,
4098- $errorDescription,
4099- $showResult)
4100- return <item>{$r}</item>
4101- } </result>
4102- where every $result in $results satisfies $result/item
4103- return concat("&#xA;Assert-any-of returned: ",
4104- string-join(util:serialize-result($results/data(item)), ' '))
4105-};
4106-
4107-(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_all-of :)
4108-declare %private %ann:sequential function eval:assert-all-of(
4109- $result as item()*,
4110- $expResult as element(),
4111- $code as xs:QName?,
4112- $errorDescription as xs:string?,
4113- $showResult as xs:boolean
4114-) as xs:string* {
4115- for $tmp in $expResult/*
4116- return eval:check-assertion($result,
4117- $tmp,
4118- $code,
4119- $errorDescription,
4120- $showResult)
4121-};
4122-
4123-(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert :)
4124-declare %private %ann:sequential function eval:assert(
4125- $result as item()*,
4126- $expResult as element()
4127-) as xs:string? {
4128- try {
4129- {
4130- variable $queryText := concat(
4131- "xquery version '3.0';",
4132- "declare namespace o = 'http://www.zorba-xquery.com/options/features';",
4133- "declare option o:enable 'hof';",
4134- "declare variable $result external; ",
4135- xs:string($expResult));
4136- variable $queryKey := xqxq:prepare-main-module($queryText),
4137- $queryKeyResult := xqxq:bind-variable($queryKey,
4138- xs:QName('result'),
4139- $result),
4140- $queryResult := xqxq:evaluate($queryKey);
4141-
4142- if($queryResult)
4143- then ()
4144- else concat("Assertion ", $expResult, " failed")
4145- }
4146- } catch * {
4147- concat("&#xA;Assertion '",
4148- $expResult,
4149- "'&#xA; failed with error ",
4150- $err:code, " : ", $err:description)
4151- }
4152-};
4153-
4154-(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-count :)
4155-declare %private function eval:assert-count(
4156- $result as item()*,
4157- $expResult as element()
4158-) as xs:string? {
4159- if(count($result) eq xs:integer($expResult))
4160- then ()
4161- else "Actual number of items is different than the expected number of items."
4162-};
4163-
4164-(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-deep-eq :)
4165-declare %private %ann:sequential function eval:assert-deep-eq(
4166- $result as item()*,
4167- $expResult as element()
4168-) as xs:string? {
4169- try {
4170- {
4171- variable $queryText := concat(
4172- "xquery version '3.0';",
4173- "declare namespace o = 'http://www.zorba-xquery.com/options/features';",
4174- "declare option o:enable 'hof';",
4175- "declare variable $x external;",
4176- "let $y := (",string(data($expResult)),") return ",
4177- "every $i in 1 to max((count($x),count($y))) satisfies deep-equal($x[$i],$y[$i])");
4178- variable $queryKey := xqxq:prepare-main-module($queryText),
4179- $queryKeyResult := xqxq:bind-variable($queryKey,
4180- xs:QName('x'),
4181- $result),
4182- $queryResult := xqxq:evaluate($queryKey);
4183- if($queryResult)
4184- then ()
4185- else concat("&#xA;Result is not deep-equal to '", $expResult, "'&#xA;")
4186- }
4187- } catch * {
4188- concat("&#xA;Assert-deep-eq '",
4189- $expResult,
4190- "'&#xA; failed with error ",
4191- $err:code,
4192- " : ",
4193- $err:description)
4194- }
4195-};
4196-
4197-(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-empty :)
4198-declare %private function eval:assert-empty(
4199- $result as item()*
4200-) as xs:string? {
4201- if(empty($result))
4202- then ()
4203- else "&#xA;Result is not empty as expected"
4204-};
4205-
4206-(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-eq :)
4207-declare %private %ann:sequential function eval:assert-eq(
4208- $result as item()*,
4209- $expResult as element()
4210-) as xs:string? {
4211- try {
4212- {
4213- variable $type := if (empty($result[1]) or (count($result) gt 1))
4214- then ()
4215- else
4216- let $tmp := xs:string(schema:schema-type($result[1]))
4217-(: add exception for the types defined in schemas available in the environment of the tests :)
4218- return
4219- if (starts-with($tmp, 'xs:'))
4220- then $tmp
4221- else ();
4222- variable $queryText := concat(
4223- "declare variable $x external;",
4224- "$x eq ",
4225- if (starts-with(data($expResult), $type))
4226- then data($expResult)
4227- else concat($type,"(", data($expResult), ")"));
4228- variable $queryKey := xqxq:prepare-main-module($queryText);
4229-
4230- xqxq:bind-variable($queryKey,
4231- xs:QName('x'),
4232- $result);
4233- variable $queryResult := xqxq:evaluate($queryKey);
4234- if($queryResult)
4235- then ()
4236- else concat("&#xA;Assert-eq: Result '",
4237- string-join(util:serialize-result($result),' '),
4238- "' &#xA;doesn't match expected item '",
4239- xs:string($expResult),
4240- "'.")
4241- }
4242- } catch * {
4243- concat("&#xA;Comparison to '",
4244- $expResult/text(),
4245- "' failed with error: ",
4246- $err:code,
4247- " : ",
4248- $err:description)
4249- }
4250-};
4251-
4252-(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-true :)
4253-declare %private function eval:assert-true(
4254- $result as item()*
4255-) as xs:string? {
4256- if($result eq fn:true())
4257- then ()
4258- else "&#xA;Query doesn't evaluate to true."
4259-};
4260-
4261-(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-false :)
4262-declare %private function eval:assert-false(
4263- $result as item()*
4264-) as xs:string? {
4265- if($result eq fn:false())
4266- then ()
4267- else "&#xA;Query doesn't evaluate to false."
4268-};
4269-
4270-(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-permutation :)
4271-declare %private %ann:sequential function eval:assert-permutation(
4272- $result as item()*,
4273- $expResult as element()
4274-) as xs:string? {
4275- try {
4276- {
4277- variable $queryText := concat(
4278- "xquery version '3.0';",
4279- "declare namespace o = 'http://www.zorba-xquery.com/options/features';",
4280- "declare option o:enable 'hof';",
4281- "declare variable $x external;",
4282- "let $y := (",string(data($expResult)),") return ",
4283- (: if count(intersection(M1,M2)) = count(union(M1,M2)) = count(M1) then the sequences are identical :)
4284- "(count(distinct-values($x[ . = $y])) = count(distinct-values(($x, $y)))) = count(distinct-values($x))");
4285- variable $queryKey := xqxq:prepare-main-module($queryText),
4286- $queryKeyResult := xqxq:bind-variable($queryKey,
4287- xs:QName('x'),
4288- $result),
4289- $queryResult := xqxq:evaluate($queryKey);
4290- if($queryResult)
4291- then ()
4292- else concat("&#xA;Result isn't a permutation of '",
4293- $expResult,
4294- "'&#xA;")
4295- }
4296- } catch * {
4297- concat("&#xA;Assert-permutation failed with error: ",
4298- $err:code,
4299- " : ",
4300- $err:description)
4301- }
4302-};
4303-
4304-(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-xml :)
4305-declare %private function eval:assert-xml(
4306- $result as item()*,
4307- $expResult as element()
4308-) {
4309-(:TODO call xml-canonicalization after bug #1076919 is implemented.:)
4310- try {
4311- let $serRes := util:serialize-result($result),
4312- $result1 as xs:string := string-join($serRes,''),
4313- $result2 as xs:string := string-join($serRes,' ')
4314- return
4315- if((normalize-space($result1) eq normalize-space(string($expResult))) or
4316- (normalize-space($result2) eq normalize-space(string($expResult))))
4317- then ()
4318- else concat("&#xA;Result '",
4319- $result1,
4320- "'&#xA; is different from the expected result &#xA;'",
4321- string($expResult),
4322- "'.")
4323- } catch * {
4324- concat("&#xA;Assert-xml failed with error:",
4325- $err:code,
4326- " : ",
4327- $err:description)
4328- }
4329-};
4330-
4331-(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-serialization-error :)
4332-declare %private %ann:sequential function eval:assert-serialization-error(
4333- $result as item()*,
4334- $expResult as element()
4335-) as xs:string? {
4336- try {
4337- let $serializedResult as xs:string := string-join(
4338- util:serialize-result($result), '')
4339- return
4340- concat("&#xA;Expected serialization error but got result: ",
4341- $serializedResult)
4342- } catch * {
4343- eval:error((),
4344- $expResult,
4345- $err:code,
4346- $err:description,
4347- fn:true())
4348- }
4349-};
4350-
4351-(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_serialization-matches :)
4352-declare %private function eval:serialization-matches(
4353- $result as item()*,
4354- $expResult as element()
4355-) as xs:string? {
4356- let $serResult := string-join(util:serialize-result($result,
4357- $util:serParamXml),
4358- ''),
4359- $serExpResult := string-join(util:serialize-result(data($expResult),
4360- $util:serParamXml),
4361- '')
4362- let $matchesFlags := data($expResult/@flags)
4363- return
4364- if(exists($matchesFlags))
4365- then
4366- if(matches($serResult, $serExpResult, $matchesFlags))
4367- then ()
4368- else concat("&#xA;Expected '",
4369- $serResult,
4370- "'&#xA; does not match &#xA;'",
4371- $serExpResult,
4372- "' with flags '",
4373- $matchesFlags,
4374- "'")
4375- else
4376- if(matches($serResult, $serExpResult))
4377- then ()
4378- else concat("&#xA;Expected ",
4379- $serResult,
4380- "'&#xA; does not match &#xA;'",
4381- $serExpResult,
4382- "'")
4383-};
4384-
4385-(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-string-value :)
4386-declare %private function eval:assert-string-value(
4387- $result as item()*,
4388- $expResult as element()
4389-) as xs:string? {
4390- try {
4391- let $serRes := string-join(util:serialize-result($result), ' '),
4392- $res := if (empty($expResult[@normalize-space="true"]))
4393- then $serRes
4394- else normalize-space($serRes),
4395- $expRes := if (empty($expResult[@normalize-space="true"]))
4396- then xs:string($expResult)
4397- else normalize-space(xs:string($expResult))
4398- return
4399- if($res eq $expRes)
4400- then ()
4401- else concat("&#xA;Expected '",
4402- $expRes,
4403- "'&#xA; found &#xA;'",
4404- $res,
4405- "'")
4406- } catch * {
4407- concat("&#xA;String-value failed with error: ",
4408- $err:code,
4409- " : ",
4410- $err:description)
4411- }
4412-};
4413-
4414-(: http://dev.w3.org/2011/QT3-test-suite/catalog-schema.html#elem_assert-type :)
4415-declare %private %ann:sequential function eval:assert-type(
4416- $result as item()*,
4417- $expResult as element()
4418-) as xs:string? {
4419- try {
4420- {
4421- variable $queryText := concat( "declare variable $x external; $x instance of ",
4422- data($expResult));
4423- variable $queryKey := xqxq:prepare-main-module($queryText),
4424- $queryKeyResult := xqxq:bind-variable($queryKey,
4425- xs:QName('x'),
4426- $result),
4427- $queryResult := xqxq:evaluate($queryKey);
4428- if($queryResult)
4429- then ()
4430- else concat("&#xA;Result doesn't have type '",
4431- data($expResult),
4432- "'")
4433- }
4434- } catch * {
4435- concat("&#xA;Assert-type failed with error: ",
4436- $err:code,
4437- " : ",
4438- $err:description)
4439- }
4440-};
4441
4442=== added file 'test/fots_driver/feedback.xq'
4443--- test/fots_driver/feedback.xq 1970-01-01 00:00:00 +0000
4444+++ test/fots_driver/feedback.xq 2013-01-08 14:37:31 +0000
4445@@ -0,0 +1,331 @@
4446+(:
4447+ : Copyright 2006-2011 The FLWOR Foundation.
4448+ :
4449+ : Licensed under the Apache License, Version 2.0 (the "License");
4450+ : you may not use this file except in compliance with the License.
4451+ : You may obtain a copy of the License at
4452+ :
4453+ : http://www.apache.org/licenses/LICENSE-2.0
4454+ :
4455+ : Unless required by applicable law or agreed to in writing, software
4456+ : distributed under the License is distributed on an "AS IS" BASIS,
4457+ : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4458+ : See the License for the specific language governing permissions and
4459+ : limitations under the License.
4460+ :)
4461+
4462+(:~
4463+ : Zorba FOTS driver feedback
4464+ : @author Sorin Nasoi
4465+ :)
4466+
4467+module namespace feedback =
4468+ "http://www.zorba-xquery.com/fots-driver/feedback";
4469+
4470+declare namespace ann =
4471+ "http://www.zorba-xquery.com/annotations";
4472+
4473+declare namespace fots =
4474+ "http://www.w3.org/2010/09/qt-fots-catalog";
4475+
4476+declare namespace err =
4477+ "http://www.w3.org/2005/xqt-errors";
4478+
4479+declare function feedback:check-pass(
4480+ $result as item()*,
4481+ $testCaseName as xs:string?,
4482+ $testSetName as xs:string?,
4483+ $expectedFailure as element(Test)?
4484+) as xs:boolean {
4485+(: if the exact error code was not found, report the test as 'Pass'
4486+ with an attribute correctError=false :)
4487+ let $resultTestRun as xs:boolean :=
4488+ (empty($result) or
4489+ (exists($result) and
4490+ contains(string-join($result/fots:errors,''), "Expected error:") and
4491+ contains(string-join($result/fots:errors,''), "Found error:")))
4492+
4493+ let $expectedFailure as xs:boolean :=
4494+ if (exists($expectedFailure))
4495+ then fn:true()
4496+ else fn:false()
4497+
4498+(:if test PASSED and was expected to FAIL OR test FAILED and wasn't expected to
4499+ FAIL => report as FAIL, a.k.a. regression;
4500+ otherwise report as PASS:)
4501+ return ($resultTestRun eq not($expectedFailure))
4502+};
4503+
4504+declare %ann:sequential function feedback:pass(
4505+ $case as element(fots:test-case),
4506+ $result as item()*,
4507+ $zorbaQuery as xs:string,
4508+ $env as element(fots:environment)?,
4509+ $duration as xs:dayTimeDuration,
4510+ $verbose as xs:boolean,
4511+ $expectedFailure as xs:boolean
4512+) as element(fots:test-case)? {
4513+ if ($expectedFailure)
4514+ then feedback:pass-expected-FOTS-failure( $case,
4515+ $result,
4516+ $zorbaQuery,
4517+ $env,
4518+ $verbose)
4519+ else feedback:pass( $case,
4520+ $result,
4521+ $zorbaQuery,
4522+ $env,
4523+ $duration,
4524+ $verbose)
4525+};
4526+
4527+(:~
4528+ : Feedback on a test case that failed but is marked as EXPECTED_FOTS_FAILURE.
4529+ :
4530+ : @param $case test case.
4531+ : @return the test case after certain information was added.
4532+ :)
4533+declare %private %ann:sequential function feedback:pass-expected-FOTS-failure(
4534+ $case as element(fots:test-case),
4535+ $result as item()*,
4536+ $zorbaQuery as xs:string,
4537+ $env as element(fots:environment)?,
4538+ $verbose as xs:boolean
4539+) as element(fots:test-case)? {
4540+ variable $info := "Test case failed but it is marked with EXPECTED_FOTS_FAILURE in test/fots/CMakeLists.txt";
4541+
4542+ if($verbose)
4543+ then {
4544+ let $tmp := $case
4545+ return {
4546+ insert node
4547+ attribute result{'pass'}
4548+ as last into $tmp;
4549+
4550+ insert node
4551+ attribute comment{$info}
4552+ as last into $tmp;
4553+
4554+ insert node
4555+ <fots:info>
4556+ {$env}
4557+ <fots:query>{$zorbaQuery}</fots:query>
4558+ {($result/fots:expected-result,
4559+ $result/fots:result,
4560+ $result/fots:errors)}
4561+ </fots:info>
4562+ as last into $tmp;
4563+
4564+ delete node $tmp/fots:description;
4565+ delete node $tmp/fots:created;
4566+ delete node $tmp/fots:result;
4567+
4568+ $tmp
4569+ }
4570+ }
4571+ else <fots:test-case name="{data($case/@name)}"
4572+ result="pass"
4573+ comment="{$info}" />
4574+};
4575+(:~
4576+ : Gives feedback on a test case run with success.
4577+ :
4578+ : @param $case test case.
4579+ : @return the test case after certain information was added.
4580+ :)
4581+declare %private %ann:sequential function feedback:pass(
4582+ $case as element(fots:test-case),
4583+ $result as item()*,
4584+ $zorbaQuery as xs:string,
4585+ $env as element(fots:environment)?,
4586+ $duration as xs:dayTimeDuration,
4587+ $verbose as xs:boolean
4588+) as element(fots:test-case)? {
4589+ if($verbose)
4590+ then {
4591+ let $tmp := $case
4592+ return {
4593+ insert node
4594+ attribute result{'pass'}
4595+ as last into $tmp;
4596+
4597+ if(exists($result/fots:errors)) then
4598+ insert node
4599+ attribute correctError{'false'}
4600+ as last into $tmp;
4601+ else ();
4602+
4603+ if(exists($result/fots:errors)) then
4604+ insert node
4605+ attribute comment{$result/fots:errors}
4606+ as last into $tmp;
4607+ else ();
4608+
4609+ insert node
4610+ attribute executionTime{$duration}
4611+ as last into $tmp;
4612+
4613+ insert node
4614+ <fots:info>
4615+ {$env}
4616+ <fots:query>{$zorbaQuery}</fots:query>
4617+ {$result/descendant::*}
4618+ </fots:info>
4619+ as last into $tmp;
4620+
4621+ delete node $tmp/description;
4622+ delete node $tmp/created;
4623+ delete node $tmp/fots:result;
4624+
4625+ $tmp
4626+ }
4627+ }
4628+ else if(empty($result/fots:errors))
4629+ then <fots:test-case name="{data($case/@name)}"
4630+ result="pass"
4631+ executionTime="{$duration}" />
4632+ else <fots:test-case name="{data($case/@name)}"
4633+ result="pass"
4634+ correctError="{empty($result/fots:errors)}"
4635+ executionTime="{$duration}" />
4636+};
4637+
4638+(:~
4639+ : Gives feedback on a test case run without success.
4640+ :
4641+ : @param $case test case.
4642+ : @return the test case after certain information was added.
4643+ :)
4644+declare %ann:sequential function feedback:fail(
4645+ $case as element(fots:test-case),
4646+ $result as item()*,
4647+ $zorbaQuery as xs:string,
4648+ $testSetName as xs:string?,
4649+ $env as element(fots:environment)?,
4650+ $duration as xs:dayTimeDuration,
4651+ $verbose as xs:boolean,
4652+ $expectedFailure as xs:boolean
4653+) as element(fots:test-case)? {
4654+ trace($testSetName, "test set name");
4655+ trace("above test case failed", "result");
4656+
4657+ variable $info := "Test case passed but it is marked with EXPECTED_FOTS_FAILURE in test/fots/CMakeLists.txt";
4658+
4659+ if ($verbose)
4660+ then {
4661+ let $tmp := $case
4662+ return {
4663+ insert node
4664+ attribute result{'fail'}
4665+ as last into $tmp;
4666+
4667+ if ($expectedFailure)
4668+ then
4669+ insert node
4670+ attribute comment{$info}
4671+ as last into $tmp;
4672+ else ();
4673+
4674+ insert node
4675+ <fots:info>
4676+ {$env}
4677+ <fots:query>{$zorbaQuery}</fots:query>
4678+ {($result/fots:expected-result,
4679+ $result/fots:result,
4680+ $result/fots:errors)}
4681+ </fots:info>
4682+ as last into $tmp;
4683+
4684+ delete node $tmp/fots:description;
4685+ delete node $tmp/fots:created;
4686+ delete node $tmp/fots:result;
4687+
4688+ $tmp
4689+ }
4690+ }
4691+ else if ($expectedFailure)
4692+ then <fots:test-case name="{data($case/@name)}"
4693+ result="fail"
4694+ comment="{$info}"
4695+ executionTime="{$duration}"/>
4696+
4697+ else <fots:test-case name="{data($case/@name)}"
4698+ result="fail"
4699+ executionTime="{$duration}"/>
4700+};
4701+
4702+(:~
4703+ : Gives feedback on a test case that is not run (because it Seg Faults, hangs).
4704+ :
4705+ : @param $case test case.
4706+ : @return the test case.
4707+ :)
4708+declare %ann:sequential function feedback:not-run(
4709+ $case as element(fots:test-case),
4710+ $verbose as xs:boolean
4711+) as element(fots:test-case)? {
4712+ trace(data($case/@name), "processing test case :");
4713+ trace("Above test case was not run.","");
4714+
4715+ if($verbose)
4716+ then {
4717+ let $tmp := $case
4718+ return {
4719+ insert node
4720+ attribute result{'notRun'}
4721+ as last into $tmp;
4722+
4723+ delete node $tmp/fots:description;
4724+ delete node $tmp/fots:created;
4725+
4726+ $tmp
4727+ }
4728+ }
4729+ else
4730+ <fots:test-case name="{data($case/@name)}"
4731+ result="notRun" />
4732+};
4733+
4734+(:~
4735+ : Gives feedback on a test case that is not run when dependencies are not met.
4736+ :
4737+ : @param $case test case.
4738+ : @param $dependencyError test error returned by the dependency checking.
4739+ : @return the test case.
4740+ :)
4741+declare %ann:sequential function feedback:not-applicable(
4742+ $case as element(fots:test-case),
4743+ $env as element(fots:environment)?,
4744+ $dependencyError as xs:string,
4745+ $verbose as xs:boolean
4746+) as element(fots:test-case)? {
4747+ trace(data($case/@name), "processing test case :");
4748+ trace($dependencyError, "Dependency error :");
4749+
4750+ if($verbose)
4751+ then {
4752+ let $tmp := $case
4753+ return {
4754+ insert node
4755+ attribute result{'not applicable'}
4756+ as last into $tmp;
4757+
4758+ insert node
4759+ attribute comment{$dependencyError}
4760+ as last into $tmp;
4761+
4762+ insert node
4763+ <fots:info>{$env}</fots:info>
4764+ as last into $tmp;
4765+
4766+ delete node $tmp/fots:description;
4767+ delete node $tmp/fots:created;
4768+
4769+ $tmp
4770+ }
4771+ }
4772+ else
4773+ <fots:test-case name="{data($case/@name)}"
4774+ result="not applicable"
4775+ comment="{$dependencyError}" />
4776+};
4777
4778=== added file 'test/fots_driver/fots-driver.xq'
4779--- test/fots_driver/fots-driver.xq 1970-01-01 00:00:00 +0000
4780+++ test/fots_driver/fots-driver.xq 2013-01-08 14:37:31 +0000
4781@@ -0,0 +1,601 @@
4782+(:
4783+ : Copyright 2006-2011 The FLWOR Foundation.
4784+ :
4785+ : Licensed under the Apache License, Version 2.0 (the "License");
4786+ : you may not use this file except in compliance with the License.
4787+ : You may obtain a copy of the License at
4788+ :
4789+ : http://www.apache.org/licenses/LICENSE-2.0
4790+ :
4791+ : Unless required by applicable law or agreed to in writing, software
4792+ : distributed under the License is distributed on an "AS IS" BASIS,
4793+ : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4794+ : See the License for the specific language governing permissions and
4795+ : limitations under the License.
4796+ :)
4797+
4798+(:~
4799+ : Zorba FOTS driver
4800+ : @author Sorin Nasoi
4801+ :)
4802+
4803+module namespace driver =
4804+ "http://www.zorba-xquery.com/fots-driver";
4805+
4806+import module namespace functx =
4807+ "http://www.functx.com/";
4808+
4809+import module namespace xqxq =
4810+ "http://www.zorba-xquery.com/modules/xqxq";
4811+import module namespace datetime =
4812+ "http://www.zorba-xquery.com/modules/datetime";
4813+
4814+import module namespace eval =
4815+ "http://www.zorba-xquery.com/fots-driver/evaluate" at "evaluate.xq";
4816+import module namespace feedback =
4817+ "http://www.zorba-xquery.com/fots-driver/feedback" at "feedback.xq";
4818+import module namespace env =
4819+ "http://www.zorba-xquery.com/fots-driver/environment" at "environment.xq";
4820+import module namespace util =
4821+ "http://www.zorba-xquery.com/fots-driver/util" at "util.xq";
4822+import module namespace fots-err =
4823+ "http://www.zorba-xquery.com/fots-driver/errors" at "errors.xq";
4824+
4825+
4826+declare namespace err =
4827+ "http://www.w3.org/2005/xqt-errors";
4828+declare namespace fots =
4829+ "http://www.w3.org/2010/09/qt-fots-catalog";
4830+
4831+declare namespace ann =
4832+ "http://www.zorba-xquery.com/annotations";
4833+
4834+(:~
4835+ : Loops through the FOTS catalog and returns all available test set names.
4836+ : @param $fotsPath path to the FOTS catalog file.
4837+ : @param $testSetPrefixes name/criteria for the test sets
4838+ : (empty string means all).
4839+ : @return available FOTS test sets.
4840+ :)
4841+declare %ann:nondeterministic function driver:list-test-sets(
4842+ $fotsPath as xs:string,
4843+ $testSetPrefixes as xs:string*
4844+) as xs:string* {
4845+ let $doc := doc(resolve-uri($fotsPath))
4846+ return
4847+ if(string-join($testSetPrefixes,'') = '')
4848+ then
4849+ for $testSet in $doc/fots:catalog/fots:test-set
4850+ return data($testSet/@name)
4851+ else
4852+ for $prefix in $testSetPrefixes
4853+ for $testSet in $doc/fots:catalog/fots:test-set[starts-with(@name, $prefix)]
4854+ return data($testSet/@name)
4855+};
4856+
4857+declare %private function driver:matches-dependency(
4858+ $dependencies as element(fots:dependency)*,
4859+ $filter as xs:string
4860+) as xs:boolean {
4861+ let $filter := tokenize($filter, '_')
4862+ let $depValue := $filter[1]
4863+ let $depSatisfied as xs:string := if(exists($filter[2]) and
4864+ ($filter[2] = 'true' or $filter[2]='false'))
4865+ then $filter[2]
4866+ else 'true'
4867+ return
4868+ if(xs:boolean($depSatisfied))
4869+
4870+ (: $depSatisfied = 'true' :)
4871+ then (exists($dependencies[@value = $depValue and
4872+ @satisfied = $depSatisfied]) or
4873+ exists($dependencies[@value = $depValue and empty(@satisfied)]))
4874+
4875+ (: $depSatisfied = 'false' :)
4876+ else exists($dependencies[@value = $depValue and
4877+ @satisfied = $depSatisfied])
4878+};
4879+
4880+declare %private function driver:list-assertions(
4881+ $case as element(fots:test-case)
4882+) as xs:string* {
4883+ distinct-values(for $assert in $case/fots:result/descendant-or-self::*
4884+ return local-name-from-QName(node-name($assert)))
4885+};
4886+
4887+(:~
4888+ : Loops through the given test set and returns the test cases that have the
4889+ : given dependencies defined.
4890+ : @param $testSet test set document.
4891+ : @param $dependency defined dependency
4892+ : (empty string means all test cases).
4893+ : @param $assert lists of tests that contain a certain assert-type(empty
4894+ : string means all tests).
4895+ : @return matching test case names.
4896+ :)
4897+declare %private function driver:list-test-cases(
4898+ $testSetDoc as document-node(),
4899+ $dependency as xs:string*,
4900+ $assert as xs:string*
4901+) as xs:string* {
4902+ if(string-join($dependency,'') = '')
4903+ then $testSetDoc//fots:test-case/@name
4904+ else for $testCase in $testSetDoc//fots:test-case
4905+ let $matchDep := driver:matches-dependency(($testSetDoc/fots:test-set/fots:dependency,
4906+ $testCase/fots:dependency),
4907+ $dependency)
4908+ let $matchAssert := (($assert = '') or
4909+ exists(functx:value-intersect(
4910+ driver:list-assertions($testCase),
4911+ $assert)))
4912+ where ($matchDep and $matchAssert)
4913+ return $testCase/@name
4914+
4915+};
4916+
4917+(:~
4918+ : Loops through the given test sets and returns the corresponding test cases.
4919+ : @param $fotsPath path to the FOTS catalog file.
4920+ : @param $testSetPrefixes name/criteria for the test sets
4921+ : (empty string means all test cases).
4922+ : @param $dependency type of dependency that has to be met
4923+ : (empty string means all test cases).
4924+ : @param $assert lists of tests that contain a certain assert-type(empty
4925+ : string means all tests).
4926+ : @return available FOTS test cases.
4927+ :)
4928+declare %ann:nondeterministic function driver:list-test-cases(
4929+ $fotsPath as xs:string,
4930+ $testSetPrefixes as xs:string*,
4931+ $dependency as xs:string*,
4932+ $assert as xs:string*
4933+) as xs:string* {
4934+ let $doc := doc(resolve-uri($fotsPath)),
4935+ $baseUri:= resolve-uri(util:parent-folder($fotsPath))
4936+ return
4937+ if(string-join($testSetPrefixes,'') = '')
4938+ then
4939+ for $testSet in $doc/fots:catalog/fots:test-set
4940+ let $testSetDoc := doc(resolve-uri($testSet/@file, $baseUri))
4941+ return driver:list-test-cases($testSetDoc, $dependency, $assert)
4942+ else
4943+ for $prefix in $testSetPrefixes
4944+ for $testSet in $doc/fots:catalog/fots:test-set[starts-with(@name, $prefix)]
4945+ let $testSetDoc := doc(resolve-uri($testSet/@file, $baseUri))
4946+ return driver:list-test-cases($testSetDoc, $dependency, $assert)
4947+};
4948+
4949+(:~
4950+ : Loops through the given test sets and returns the corresponding test cases.
4951+ : @param $fotsPath path to the FOTS catalog file.
4952+ : @param $testSetPrefixes name/criteria for the test sets
4953+ : (empty string means all test cases).
4954+ : @param $testCasePrefixes name/criteria for the test cases
4955+ : (empty string means all test cases).
4956+ : @param $dependency type of dependency that has to be met
4957+ : (empty string means all test cases).
4958+ : @param $assert lists of tests that contain a certain assert-type(empty
4959+ : string means all tests).
4960+ : @return available FOTS test cases.
4961+ :)
4962+declare %ann:nondeterministic function driver:list-test-cases(
4963+ $fotsPath as xs:string,
4964+ $testSetPrefixes as xs:string*,
4965+ $testCasePrefixes as xs:string*,
4966+ $dependency as xs:string*,
4967+ $assert as xs:string*
4968+) as xs:string* {
4969+ let $doc := doc(resolve-uri($fotsPath)),
4970+ $baseUri:= resolve-uri(util:parent-folder($fotsPath)),
4971+ $testCaseNames := driver:list-test-cases($fotsPath,
4972+ $testSetPrefixes,
4973+ $dependency,
4974+ $assert)
4975+ return
4976+ for $prefix in $testCasePrefixes
4977+ return
4978+ for $name in $testCaseNames
4979+ where starts-with($name,
4980+ $prefix)
4981+ return $name
4982+};
4983+
4984+(:~
4985+ : Loops through all the test cases and returns those that have a 'test' node
4986+ : that matches given pattern using given flags.
4987+ : @param $fotsPath path to the FOTS catalog file.
4988+ : @param $pattern pattern.
4989+ : @param $flags flags.
4990+ : @return available FOTS test cases matching given pattern and flags.
4991+ :)
4992+declare %ann:nondeterministic function driver:list-matching-test-cases(
4993+ $fotsPath as xs:string,
4994+ $pattern as xs:string,
4995+ $flags as xs:string?
4996+) as xs:string* {
4997+ let $doc := doc(resolve-uri($fotsPath)),
4998+ $baseUri:= resolve-uri(util:parent-folder($fotsPath))
4999+ return
5000+ for $testSet in $doc/fots:catalog/fots:test-set
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches