Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pyxform/validators/odk_validate/.last_check
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2024-10-09T16:57:49Z
2026-01-08T20:56:39Z
Binary file modified pyxform/validators/odk_validate/bin/ODK_Validate.jar
Binary file not shown.
125 changes: 65 additions & 60 deletions pyxform/validators/odk_validate/bin/installed.json
Original file line number Diff line number Diff line change
@@ -1,75 +1,80 @@
{
"url": "https://api.github.com/repos/getodk/validate/releases/179158403",
"assets_url": "https://api.github.com/repos/getodk/validate/releases/179158403/assets",
"upload_url": "https://uploads.github.com/repos/getodk/validate/releases/179158403/assets{?name,label}",
"html_url": "https://github.com/getodk/validate/releases/tag/v1.19.2",
"id": 179158403,
"author": {
"login": "lognaturel",
"id": 967540,
"node_id": "MDQ6VXNlcjk2NzU0MA==",
"avatar_url": "https://avatars.githubusercontent.com/u/967540?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/lognaturel",
"html_url": "https://github.com/lognaturel",
"followers_url": "https://api.github.com/users/lognaturel/followers",
"following_url": "https://api.github.com/users/lognaturel/following{/other_user}",
"gists_url": "https://api.github.com/users/lognaturel/gists{/gist_id}",
"starred_url": "https://api.github.com/users/lognaturel/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/lognaturel/subscriptions",
"organizations_url": "https://api.github.com/users/lognaturel/orgs",
"repos_url": "https://api.github.com/users/lognaturel/repos",
"events_url": "https://api.github.com/users/lognaturel/events{/privacy}",
"received_events_url": "https://api.github.com/users/lognaturel/received_events",
"type": "User",
"site_admin": false
},
"node_id": "RE_kwDOAmc2ms4Krb2D",
"tag_name": "v1.19.2",
"target_commitish": "master",
"name": "v1.19.2",
"draft": false,
"prerelease": false,
"created_at": "2024-10-09T16:54:24Z",
"published_at": "2024-10-09T16:56:20Z",
"assets": [
{
"url": "https://api.github.com/repos/getodk/validate/releases/assets/197958252",
"id": 197958252,
"node_id": "RA_kwDOAmc2ms4LzJps",
"name": "ODK-Validate-v1.19.2.jar",
"browser_download_url": "https://github.com/getodk/validate/releases/download/v1.20.0/ODK-Validate-v1.20.0.jar",
"content_type": "application/java-archive",
"created_at": "2026-01-08T20:48:03Z",
"digest": "sha256:92756ea4aed195355a07e5572f025f0921a31282387a870ae63e1f5cdf37e0c3",
"download_count": 0,
"id": 338040656,
"label": null,
"name": "ODK-Validate-v1.20.0.jar",
"node_id": "RA_kwDOAmc2ms4UJhdQ",
"size": 5885216,
"state": "uploaded",
"updated_at": "2026-01-08T20:48:04Z",
"uploader": {
"login": "lognaturel",
"id": 967540,
"node_id": "MDQ6VXNlcjk2NzU0MA==",
"avatar_url": "https://avatars.githubusercontent.com/u/967540?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/lognaturel",
"html_url": "https://github.com/lognaturel",
"events_url": "https://api.github.com/users/lognaturel/events{/privacy}",
"followers_url": "https://api.github.com/users/lognaturel/followers",
"following_url": "https://api.github.com/users/lognaturel/following{/other_user}",
"gists_url": "https://api.github.com/users/lognaturel/gists{/gist_id}",
"starred_url": "https://api.github.com/users/lognaturel/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/lognaturel/subscriptions",
"gravatar_id": "",
"html_url": "https://github.com/lognaturel",
"id": 967540,
"login": "lognaturel",
"node_id": "MDQ6VXNlcjk2NzU0MA==",
"organizations_url": "https://api.github.com/users/lognaturel/orgs",
"repos_url": "https://api.github.com/users/lognaturel/repos",
"events_url": "https://api.github.com/users/lognaturel/events{/privacy}",
"received_events_url": "https://api.github.com/users/lognaturel/received_events",
"repos_url": "https://api.github.com/users/lognaturel/repos",
"site_admin": false,
"starred_url": "https://api.github.com/users/lognaturel/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/lognaturel/subscriptions",
"type": "User",
"site_admin": false
"url": "https://api.github.com/users/lognaturel",
"user_view_type": "public"
},
"content_type": "application/java-archive",
"state": "uploaded",
"size": 5862216,
"download_count": 0,
"created_at": "2024-10-09T17:03:19Z",
"updated_at": "2024-10-09T17:03:21Z",
"browser_download_url": "https://github.com/getodk/validate/releases/download/v1.19.2/ODK-Validate-v1.19.2.jar"
"url": "https://api.github.com/repos/getodk/validate/releases/assets/338040656"
}
],
"tarball_url": "https://api.github.com/repos/getodk/validate/tarball/v1.19.2",
"zipball_url": "https://api.github.com/repos/getodk/validate/zipball/v1.19.2",
"body": "## What's Changed\r\n* Add back jackson dependency by @lognaturel in https://github.com/getodk/validate/pull/95\r\n\r\n\r\n**Full Changelog**: https://github.com/getodk/validate/compare/v1.19.1...v1.19.2",
"mentions_count": 1
}
"assets_url": "https://api.github.com/repos/getodk/validate/releases/275305335/assets",
"author": {
"avatar_url": "https://avatars.githubusercontent.com/u/967540?v=4",
"events_url": "https://api.github.com/users/lognaturel/events{/privacy}",
"followers_url": "https://api.github.com/users/lognaturel/followers",
"following_url": "https://api.github.com/users/lognaturel/following{/other_user}",
"gists_url": "https://api.github.com/users/lognaturel/gists{/gist_id}",
"gravatar_id": "",
"html_url": "https://github.com/lognaturel",
"id": 967540,
"login": "lognaturel",
"node_id": "MDQ6VXNlcjk2NzU0MA==",
"organizations_url": "https://api.github.com/users/lognaturel/orgs",
"received_events_url": "https://api.github.com/users/lognaturel/received_events",
"repos_url": "https://api.github.com/users/lognaturel/repos",
"site_admin": false,
"starred_url": "https://api.github.com/users/lognaturel/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/lognaturel/subscriptions",
"type": "User",
"url": "https://api.github.com/users/lognaturel",
"user_view_type": "public"
},
"body": "## What's Changed\r\n* Update JavaRosa and CircleCI image by @lognaturel in https://github.com/getodk/validate/pull/101\r\n* Use Github Actions for CI by @lognaturel in https://github.com/getodk/validate/pull/103\r\n* Add `intersects` function handler by @lognaturel in https://github.com/getodk/validate/pull/102\r\n\r\n\r\n**Full Changelog**: https://github.com/getodk/validate/compare/v1.19.2...v1.20.0",
"created_at": "2026-01-08T12:03:32Z",
"draft": false,
"html_url": "https://github.com/getodk/validate/releases/tag/v1.20.0",
"id": 275305335,
"immutable": false,
"mentions_count": 1,
"name": "v1.20.0",
"node_id": "RE_kwDOAmc2ms4QaNN3",
"prerelease": false,
"published_at": "2026-01-08T20:44:05Z",
"tag_name": "v1.20.0",
"tarball_url": "https://api.github.com/repos/getodk/validate/tarball/v1.20.0",
"target_commitish": "master",
"updated_at": "2026-01-08T20:48:04Z",
"upload_url": "https://uploads.github.com/repos/getodk/validate/releases/275305335/assets{?name,label}",
"url": "https://api.github.com/repos/getodk/validate/releases/275305335",
"zipball_url": "https://api.github.com/repos/getodk/validate/zipball/v1.20.0"
}
17 changes: 11 additions & 6 deletions tests/test_choices_sheet.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@ def test_numeric_choice_names__for_dynamic_selects__allowed(self):
],
)

def test_choices_without_labels__for_static_selects__allowed(self):
def test_choices_without_labels__for_static_selects__forbidden(self):
"""
Test choices without labels for static selects. Validate will NOT fail.
Test choices without labels for static selects. Validate will fail.
"""
self.assertPyxformXform(
md="""
Expand All @@ -75,13 +75,15 @@ def test_choices_without_labels__for_static_selects__allowed(self):
]
""",
],
odk_validate_error__contains=[
"<label> node for itemset doesn't exist! [instance(choices)/root/item/label]"
],
)

def test_choices_without_labels__for_dynamic_selects__allowed_by_pyxform(self):
def test_choices_without_labels__for_dynamic_selects__forbidden(self):
"""
Test choices without labels for dynamic selects. Validate will fail.
"""
# TODO: validate doesn't fail
self.assertPyxformXform(
md="""
| survey | | | | |
Expand All @@ -106,6 +108,9 @@ def test_choices_without_labels__for_dynamic_selects__allowed_by_pyxform(self):
]
""",
],
odk_validate_error__contains=[
"<label> node for itemset doesn't exist! [instance(choices)/root/item/label]"
],
)

def test_choices_extra_columns_output_order_matches_xlsform(self):
Expand All @@ -116,8 +121,8 @@ def test_choices_extra_columns_output_order_matches_xlsform(self):
| | select_one choices | a | A |
| choices | | | |
| | list_name | name | label | geometry |
| | choices | 1 | | 46.5841618 7.0801379 0 0 |
| | choices | 2 | | 35.8805082 76.515057 0 0 |
| | choices | 1 | one | 46.5841618 7.0801379 0 0 |
| | choices | 2 | two | 35.8805082 76.515057 0 0 |
"""
self.assertPyxformXform(
md=md,
Expand Down