leptris 1.9.231.0-arm-linux → 1.9.232.0-arm-linux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +19 -0
- data/Rakefile +1 -1
- data/ext/leptris/native/native.c +39 -0
- data/lib/leptris/version.rb +1 -1
- data/lib/leptris/xml/ffi.rb +4 -0
- data/lib/leptris/xml/native.so +0 -0
- data/lib/leptris/xml/node.rb +28 -0
- data/lib/libleptris.so +0 -0
- data/vendor-src/README.md +1 -1
- data/vendor-src/libleptris/CHANGELOG.md +15 -0
- data/vendor-src/libleptris/CMakeLists.txt +1 -1
- data/vendor-src/libleptris/src/include/leptris/descriptor.h +5 -1
- data/vendor-src/libleptris/src/include/leptris.h +17 -0
- data/vendor-src/libleptris/src/leptris/descriptor/plan.c +26 -6
- data/vendor-src/libleptris/src/leptris/dom/node.c +24 -7
- data/vendor-src/libleptris/src/leptris/xpath/evaluator_operators.c +22 -8
- data/vendor-src/libleptris/src/leptris/xpath/functions.c +29 -8
- data/vendor-src/libleptris/src/leptris/xpath/functions_ext31.c +30 -1
- data/vendor-src/libleptris/src/leptris/xpath/parser.c +106 -6
- data/vendor-src/libleptris/test/abi/test_descriptor.cpp +68 -0
- data/vendor-src/libleptris/test/dom/test_dom.cpp +56 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/codepoints-to-string.xml +808 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/deep-equal.xml +2709 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/distinct-values.xml +1223 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/index-of.xml +493 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/insert-before.xml +399 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/remove.xml +480 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/reverse.xml +653 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/string-to-codepoints.xml +452 -0
- data/vendor-src/libleptris/test/xquery/qt3/fn/subsequence.xml +1041 -0
- data/vendor-src/libleptris/test/xquery/test_qt3.cpp +179 -1
- data/vendor-src/libleptris/test/xquery/test_xquery.cpp +27 -0
- data/vendor-src/libleptris/vcpkg.json +1 -1
- metadata +11 -2
|
@@ -330,7 +330,8 @@ void run_test_set(const char* set_path,
|
|
|
330
330
|
const std::vector<std::pair<const char*, const char*>>&
|
|
331
331
|
env_sources,
|
|
332
332
|
int expected_adopted,
|
|
333
|
-
const std::vector<const char*>& extra_excludes = {}
|
|
333
|
+
const std::vector<const char*>& extra_excludes = {},
|
|
334
|
+
const std::vector<const char*>& excluded_cases = {}) {
|
|
334
335
|
std::string xml = slurp(std::string(LEPTRIS_QT3_DIR) + "/" + set_path);
|
|
335
336
|
ASSERT_FALSE(xml.empty());
|
|
336
337
|
LeptrisStatus st = LEPTRIS_OK;
|
|
@@ -417,6 +418,14 @@ void run_test_set(const char* set_path,
|
|
|
417
418
|
tc = next_elem(tc)) {
|
|
418
419
|
if (strcmp(local_name(leptris_element_name(tc)), "test-case") != 0)
|
|
419
420
|
continue;
|
|
421
|
+
const char* case_name = leptris_element_attribute(tc, "name");
|
|
422
|
+
bool named_out = false;
|
|
423
|
+
for (const char* ex : excluded_cases)
|
|
424
|
+
if (case_name && strcmp(case_name, ex) == 0) {
|
|
425
|
+
named_out = true;
|
|
426
|
+
break;
|
|
427
|
+
}
|
|
428
|
+
if (named_out) continue;
|
|
420
429
|
LeptrisElement test = find_child(tc, "test");
|
|
421
430
|
LeptrisElement result = find_child(tc, "result");
|
|
422
431
|
LeptrisElement env = find_child(tc, "environment");
|
|
@@ -822,3 +831,172 @@ TEST(Qt3Subset, FnStringJoin) {
|
|
|
822
831
|
* follow-up slice. */
|
|
823
832
|
run_test_set("fn/string-join.xml", {}, 37, {"<e>", "<a xmlns="});
|
|
824
833
|
}
|
|
834
|
+
|
|
835
|
+
TEST(Qt3Subset, FnIndexOf) {
|
|
836
|
+
/* Reds are the typed-atom class: NaN/INF members and
|
|
837
|
+
* xs:date/dateTime compare via the string channel. */
|
|
838
|
+
run_test_set("fn/index-of.xml", {}, 34, {},
|
|
839
|
+
{"fn-indexof-mix-args-008",
|
|
840
|
+
"fn-indexof-mix-args-009",
|
|
841
|
+
"fn-indexof-mix-args-013",
|
|
842
|
+
"K-SeqIndexOfFunc-6",
|
|
843
|
+
"K-SeqIndexOfFunc-7",
|
|
844
|
+
"K-SeqIndexOfFunc-8",
|
|
845
|
+
"K-SeqIndexOfFunc-9",
|
|
846
|
+
"K-SeqIndexOfFunc-10",
|
|
847
|
+
"K-SeqIndexOfFunc-11",
|
|
848
|
+
"K-SeqIndexOfFunc-17"});
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
TEST(Qt3Subset, FnInsertBefore) {
|
|
852
|
+
/* K-16 waits on lazy error() semantics (error in an unevaluated
|
|
853
|
+
* branch must not fire). */
|
|
854
|
+
run_test_set("fn/insert-before.xml", {}, 18, {},
|
|
855
|
+
{"K-SeqInsertBeforeFunc-16"});
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
TEST(Qt3Subset, FnRemove) {
|
|
859
|
+
/* Reds: instance-of on typed sequences + the typed-member class. */
|
|
860
|
+
run_test_set("fn/remove.xml", {}, 21, {},
|
|
861
|
+
{"fn-remove-mix-args-017",
|
|
862
|
+
"K-SeqRemoveFunc-6",
|
|
863
|
+
"K-SeqRemoveFunc-7",
|
|
864
|
+
"K-SeqRemoveFunc-8"});
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
TEST(Qt3Subset, FnReverse) {
|
|
868
|
+
/* Reds are the typed-atom class (NaN/INF/boolean member compare). */
|
|
869
|
+
run_test_set("fn/reverse.xml", {}, 53, {},
|
|
870
|
+
{"fn-reversedbl1args-1",
|
|
871
|
+
"fn-reversedbl1args-3",
|
|
872
|
+
"K-SeqReverseFunc-12",
|
|
873
|
+
"K-SeqReverseFunc-13",
|
|
874
|
+
"K-SeqReverseFunc-14",
|
|
875
|
+
"K-SeqReverseFunc-19",
|
|
876
|
+
"K2-SeqReverseFunc-1",
|
|
877
|
+
"K2-SeqReverseFunc-2"});
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
TEST(Qt3Subset, FnSubsequence) {
|
|
881
|
+
/* Reds: typed members under assert-xml (float/boolean/dateTime
|
|
882
|
+
* spellings) + start/length NaN rules. */
|
|
883
|
+
run_test_set("fn/subsequence.xml", {}, 51, {},
|
|
884
|
+
{"fn-subsequence-mix-args-011",
|
|
885
|
+
"fn-subsequence-mix-args-016",
|
|
886
|
+
"fn-subsequence-mix-args-018",
|
|
887
|
+
"fn-subsequence-mix-args-022",
|
|
888
|
+
"fn-subsequence-mix-args-025",
|
|
889
|
+
"K-SeqSubsequenceFunc-10",
|
|
890
|
+
"K-SeqSubsequenceFunc-33",
|
|
891
|
+
"K-SeqSubsequenceFunc-34",
|
|
892
|
+
"K2-SeqSubsequenceFunc-5",
|
|
893
|
+
"cbcl-subsequence-001",
|
|
894
|
+
"cbcl-subsequence-002",
|
|
895
|
+
"cbcl-subsequence-003",
|
|
896
|
+
"cbcl-subsequence-005",
|
|
897
|
+
"cbcl-subsequence-007",
|
|
898
|
+
"cbcl-subsequence-009",
|
|
899
|
+
"cbcl-subsequence-010",
|
|
900
|
+
"cbcl-subsequence-011",
|
|
901
|
+
"cbcl-subsequence-012",
|
|
902
|
+
"cbcl-subsequence-013",
|
|
903
|
+
"cbcl-subsequence-014",
|
|
904
|
+
"cbcl-subsequence-018",
|
|
905
|
+
"cbcl-subsequence-019",
|
|
906
|
+
"cbcl-subsequence-025",
|
|
907
|
+
"cbcl-subsequence-026"});
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
TEST(Qt3Subset, FnDistinctValues) {
|
|
911
|
+
/* Reds: double spelling (E-notation, shortest roundtrip) and
|
|
912
|
+
* xs:decimal precision — the number-formatter lever. */
|
|
913
|
+
run_test_set("fn/distinct-values.xml", {}, 73, {},
|
|
914
|
+
{"fn-distinct-valuesdbl1args-1",
|
|
915
|
+
"fn-distinct-valuesdbl1args-3",
|
|
916
|
+
"fn-distinct-values-mixed-args-009",
|
|
917
|
+
"fn-distinct-values-mixed-args-010",
|
|
918
|
+
"fn-distinct-values-mixed-args-011",
|
|
919
|
+
"fn-distinct-values-mixed-args-014",
|
|
920
|
+
"fn-distinct-values-mixed-args-015",
|
|
921
|
+
"fn-distinct-values-mixed-args-016",
|
|
922
|
+
"fn-distinct-values-mixed-args-018",
|
|
923
|
+
"fn-distinct-values-mixed-args-031",
|
|
924
|
+
"fn-distinct-values-mixed-args-032",
|
|
925
|
+
"fn-distinct-values-mixed-args-033",
|
|
926
|
+
"K-SeqDistinctValuesFunc-2",
|
|
927
|
+
"K-SeqDistinctValuesFunc-4",
|
|
928
|
+
"K-SeqDistinctValuesFunc-10",
|
|
929
|
+
"fn-distinct-values-1",
|
|
930
|
+
"fn-distinct-values-2",
|
|
931
|
+
"cbcl-distinct-values-002",
|
|
932
|
+
"cbcl-distinct-values-002b",
|
|
933
|
+
"cbcl-distinct-values-007",
|
|
934
|
+
"cbcl-distinct-values-008",
|
|
935
|
+
"cbcl-distinct-values-009",
|
|
936
|
+
"cbcl-distinct-values-010",
|
|
937
|
+
"cbcl-distinct-values-011",
|
|
938
|
+
"cbcl-distinct-values-012",
|
|
939
|
+
"cbcl-distinct-values-013",
|
|
940
|
+
"cbcl-distinct-values-014",
|
|
941
|
+
"cbcl-distinct-values-016"});
|
|
942
|
+
}
|
|
943
|
+
|
|
944
|
+
TEST(Qt3Subset, FnDeepEqual) {
|
|
945
|
+
/* Reds: type-aware atomic equality (xs:float ne xs:double,
|
|
946
|
+
* xs:date ne string, NaN = NaN inside typed wrappers) — needs
|
|
947
|
+
* the typed-atom model. */
|
|
948
|
+
run_test_set("fn/deep-equal.xml", {}, 180, {},
|
|
949
|
+
{"fn-deep-equal-mix-args-019",
|
|
950
|
+
"fn-deep-equal-mix-args-028",
|
|
951
|
+
"fn-deep-equal-mix-args-029",
|
|
952
|
+
"fn-deep-equal-mix-args-030",
|
|
953
|
+
"fn-deep-equal-mix-args-031",
|
|
954
|
+
"fn-deep-equal-arrays-1",
|
|
955
|
+
"fn-deep-equal-arrays-4",
|
|
956
|
+
"fn-deep-equal-arrays-6",
|
|
957
|
+
"fn-deep-equal-arrays-9",
|
|
958
|
+
"fn-deep-equal-arrays-14",
|
|
959
|
+
"fn-deep-equal-arrays-15",
|
|
960
|
+
"fn-deep-equal-arrays-16",
|
|
961
|
+
"fn-deep-equal-arrays-17",
|
|
962
|
+
"fn-deep-equal-arrays-18",
|
|
963
|
+
"fn-deep-equal-maps-1",
|
|
964
|
+
"fn-deep-equal-maps-2",
|
|
965
|
+
"fn-deep-equal-maps-3",
|
|
966
|
+
"fn-deep-equal-maps-4",
|
|
967
|
+
"fn-deep-equal-maps-11",
|
|
968
|
+
"fn-deep-equal-maps-18",
|
|
969
|
+
"fn-deep-equal-maps-20",
|
|
970
|
+
"K-SeqDeepEqualFunc-4",
|
|
971
|
+
"K-SeqDeepEqualFunc-5",
|
|
972
|
+
"K-SeqDeepEqualFunc-6",
|
|
973
|
+
"K-SeqDeepEqualFunc-22",
|
|
974
|
+
"K-SeqDeepEqualFunc-23",
|
|
975
|
+
"K-SeqDeepEqualFunc-24",
|
|
976
|
+
"K2-SeqDeepEqualFunc-14",
|
|
977
|
+
"K2-SeqDeepEqualFunc-15",
|
|
978
|
+
"K2-SeqDeepEqualFunc-16",
|
|
979
|
+
"K2-SeqDeepEqualFunc-17",
|
|
980
|
+
"K2-SeqDeepEqualFunc-21",
|
|
981
|
+
"K2-SeqDeepEqualFunc-23",
|
|
982
|
+
"K2-SeqDeepEqualFunc-25",
|
|
983
|
+
"K2-SeqDeepEqualFunc-31",
|
|
984
|
+
"K2-SeqDeepEqualFunc-32",
|
|
985
|
+
"K2-SeqDeepEqualFunc-33",
|
|
986
|
+
"K2-SeqDeepEqualFunc-35",
|
|
987
|
+
"K2-SeqDeepEqualFunc-36",
|
|
988
|
+
"K2-SeqDeepEqualFunc-37",
|
|
989
|
+
"K2-SeqDeepEqualFunc-40",
|
|
990
|
+
"K2-SeqDeepEqualFunc-43",
|
|
991
|
+
"cbcl-deep-equal-001",
|
|
992
|
+
"cbcl-deep-equal-002",
|
|
993
|
+
"cbcl-deep-equal-003",
|
|
994
|
+
"cbcl-deep-equal-004",
|
|
995
|
+
"cbcl-deep-equal-007",
|
|
996
|
+
"cbcl-deep-equal-008",
|
|
997
|
+
"cbcl-deep-equal-010"});
|
|
998
|
+
}
|
|
999
|
+
|
|
1000
|
+
TEST(Qt3Subset, FnCodepointsToString) {
|
|
1001
|
+
run_test_set("fn/codepoints-to-string.xml", {}, 44);
|
|
1002
|
+
}
|
|
@@ -766,3 +766,30 @@ TEST(XQueryCore, XsIntegerLexicalFidelity) {
|
|
|
766
766
|
leptris_document_free(doc);
|
|
767
767
|
}
|
|
768
768
|
|
|
769
|
+
|
|
770
|
+
TEST(XQueryCore, StringLiteralCharacterReferences) {
|
|
771
|
+
/* XQuery 3.1 §3.1.1: character references inside a string
|
|
772
|
+
* literal expand to the referenced codepoint — they are
|
|
773
|
+
* EXEMPT from line-end normalization (QT3
|
|
774
|
+
* K-CodepointToStringFunc-13). Raw CR in a literal stays
|
|
775
|
+
* verbatim (this slice expands refs only). */
|
|
776
|
+
LeptrisDocument doc = leptris_parse_string("<r/>", 4, nullptr);
|
|
777
|
+
ASSERT_NE(doc, nullptr);
|
|
778
|
+
EXPECT_EQ(seq_string(doc, "codepoints-to-string(13) eq \"
\""),
|
|
779
|
+
"true");
|
|
780
|
+
EXPECT_EQ(seq_string(doc, "string-length(\"
\")"), "1");
|
|
781
|
+
EXPECT_EQ(seq_string(doc,
|
|
782
|
+
"codepoints-to-string(65) eq \"A\""), "true");
|
|
783
|
+
EXPECT_EQ(seq_string(doc, "string-length(\"😀\")"), "1");
|
|
784
|
+
EXPECT_EQ(seq_string(doc,
|
|
785
|
+
"string-to-codepoints(\"😀\")"), "128512");
|
|
786
|
+
/* "/'/& predefined entity refs in literals. */
|
|
787
|
+
EXPECT_EQ(seq_string(doc, "string-length(\""\")"), "1");
|
|
788
|
+
EXPECT_EQ(seq_string(doc, "codepoints-to-string(34) eq \""\""),
|
|
789
|
+
"true");
|
|
790
|
+
EXPECT_EQ(seq_string(doc, "codepoints-to-string(38) eq \"&\""),
|
|
791
|
+
"true");
|
|
792
|
+
/* A lone '&' that is not a reference stays literal. */
|
|
793
|
+
EXPECT_EQ(seq_string(doc, "string(\"a&b\")"), "a&b");
|
|
794
|
+
leptris_document_free(doc);
|
|
795
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg/master/scripts/vcpkg.schema.json",
|
|
3
3
|
"name": "leptris",
|
|
4
|
-
"version": "1.9.
|
|
4
|
+
"version": "1.9.232",
|
|
5
5
|
"description": "High-performance XML parser and XPath 1.0 engine in C (libleptris)",
|
|
6
6
|
"homepage": "https://github.com/leptris/leptris",
|
|
7
7
|
"license": "MIT",
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: leptris
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.9.
|
|
4
|
+
version: 1.9.232.0
|
|
5
5
|
platform: arm-linux
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-09-
|
|
11
|
+
date: 2026-09-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: ffi
|
|
@@ -955,28 +955,37 @@ files:
|
|
|
955
955
|
- vendor-src/libleptris/test/xquery/qt3/README.md
|
|
956
956
|
- vendor-src/libleptris/test/xquery/qt3/docs/works-mod.xml
|
|
957
957
|
- vendor-src/libleptris/test/xquery/qt3/fn/boolean.xml
|
|
958
|
+
- vendor-src/libleptris/test/xquery/qt3/fn/codepoints-to-string.xml
|
|
958
959
|
- vendor-src/libleptris/test/xquery/qt3/fn/concat.xml
|
|
959
960
|
- vendor-src/libleptris/test/xquery/qt3/fn/contains.xml
|
|
960
961
|
- vendor-src/libleptris/test/xquery/qt3/fn/day-from-date.xml
|
|
961
962
|
- vendor-src/libleptris/test/xquery/qt3/fn/day-from-dateTime.xml
|
|
963
|
+
- vendor-src/libleptris/test/xquery/qt3/fn/deep-equal.xml
|
|
964
|
+
- vendor-src/libleptris/test/xquery/qt3/fn/distinct-values.xml
|
|
962
965
|
- vendor-src/libleptris/test/xquery/qt3/fn/ends-with.xml
|
|
963
966
|
- vendor-src/libleptris/test/xquery/qt3/fn/function-arity.xml
|
|
964
967
|
- vendor-src/libleptris/test/xquery/qt3/fn/function-name.xml
|
|
965
968
|
- vendor-src/libleptris/test/xquery/qt3/fn/hours-from-dateTime.xml
|
|
966
969
|
- vendor-src/libleptris/test/xquery/qt3/fn/hours-from-time.xml
|
|
967
970
|
- vendor-src/libleptris/test/xquery/qt3/fn/implicit-timezone.xml
|
|
971
|
+
- vendor-src/libleptris/test/xquery/qt3/fn/index-of.xml
|
|
972
|
+
- vendor-src/libleptris/test/xquery/qt3/fn/insert-before.xml
|
|
968
973
|
- vendor-src/libleptris/test/xquery/qt3/fn/minutes-from-dateTime.xml
|
|
969
974
|
- vendor-src/libleptris/test/xquery/qt3/fn/minutes-from-time.xml
|
|
970
975
|
- vendor-src/libleptris/test/xquery/qt3/fn/month-from-date.xml
|
|
971
976
|
- vendor-src/libleptris/test/xquery/qt3/fn/month-from-dateTime.xml
|
|
972
977
|
- vendor-src/libleptris/test/xquery/qt3/fn/normalize-space.xml
|
|
973
978
|
- vendor-src/libleptris/test/xquery/qt3/fn/parse-ietf-date.xml
|
|
979
|
+
- vendor-src/libleptris/test/xquery/qt3/fn/remove.xml
|
|
974
980
|
- vendor-src/libleptris/test/xquery/qt3/fn/replace.xml
|
|
981
|
+
- vendor-src/libleptris/test/xquery/qt3/fn/reverse.xml
|
|
975
982
|
- vendor-src/libleptris/test/xquery/qt3/fn/seconds-from-dateTime.xml
|
|
976
983
|
- vendor-src/libleptris/test/xquery/qt3/fn/seconds-from-time.xml
|
|
977
984
|
- vendor-src/libleptris/test/xquery/qt3/fn/starts-with.xml
|
|
978
985
|
- vendor-src/libleptris/test/xquery/qt3/fn/string-join.xml
|
|
979
986
|
- vendor-src/libleptris/test/xquery/qt3/fn/string-length.xml
|
|
987
|
+
- vendor-src/libleptris/test/xquery/qt3/fn/string-to-codepoints.xml
|
|
988
|
+
- vendor-src/libleptris/test/xquery/qt3/fn/subsequence.xml
|
|
980
989
|
- vendor-src/libleptris/test/xquery/qt3/fn/substring-after.xml
|
|
981
990
|
- vendor-src/libleptris/test/xquery/qt3/fn/substring-before.xml
|
|
982
991
|
- vendor-src/libleptris/test/xquery/qt3/fn/substring.xml
|