{"id":37803986,"url":"https://github.com/adbc-drivers/validation","last_synced_at":"2026-01-16T15:28:17.739Z","repository":{"id":321403476,"uuid":"1008868722","full_name":"adbc-drivers/validation","owner":"adbc-drivers","description":"A framework for validation testing of ADBC drivers.","archived":false,"fork":false,"pushed_at":"2025-12-30T04:24:03.000Z","size":278,"stargazers_count":2,"open_issues_count":30,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-02T14:33:12.310Z","etag":null,"topics":["adbc","arrow","database","testing"],"latest_commit_sha":null,"homepage":"https://adbc-drivers.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adbc-drivers.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE.txt","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-26T08:07:28.000Z","updated_at":"2025-12-30T04:24:07.000Z","dependencies_parsed_at":"2025-10-29T14:13:22.464Z","dependency_job_id":"309ce7e8-4f67-4dcf-b64e-cf3f1c129338","html_url":"https://github.com/adbc-drivers/validation","commit_stats":null,"previous_names":["adbc-drivers/validation"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/adbc-drivers/validation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adbc-drivers%2Fvalidation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adbc-drivers%2Fvalidation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adbc-drivers%2Fvalidation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adbc-drivers%2Fvalidation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adbc-drivers","download_url":"https://codeload.github.com/adbc-drivers/validation/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adbc-drivers%2Fvalidation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28479409,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["adbc","arrow","database","testing"],"created_at":"2026-01-16T15:28:16.939Z","updated_at":"2026-01-16T15:28:17.728Z","avatar_url":"https://github.com/adbc-drivers.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\n  Copyright (c) 2025 ADBC Drivers Contributors\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n          http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n--\u003e\n\n# Driver Validation Suite\n\nA reusable, pluggable test suite for ADBC drivers written with Python and\n[pytest](https://docs.pytest.org/en/stable/).  The test suite exercises\nvarious ADBC features and different data types, generating a table of\nsupported (and unsupported) features.  It can accommodate database-specific\nsyntax and quirks.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## Installation \u0026 Usage\n\nThere are no real docs yet.  It is recommended to look at an existing driver\nto see how to set it up.\n\n### Adding New Tests\n\nThe validation suite essentially runs a bunch of SQL queries against each\ndriver.  The queries are tagged with various bits of metadata that are used to\ngenerate documentation.\n\nThe queries live under `queries/base`.  They are somewhat subcategorized, but\nthis is arbitrary and not important to the test runner.  A single query is all\nthe files in the same directory with the same filename (less extensions).  The\ntype of query, and hence what kind of test results, depends on which files are\npresent.\n\nAll queries have an optional `query.toml` file defining various metadata:\n\n- `hide` (`bool`) - if `true`, don't run this query (for this driver)\n- `skip` (`str`) - if present, skip the query with the given reason (for this\n  driver).  `hide` will effectively remove an entry from the generated\n  documentation, while `skip` will instead show that the entry is unsupported.\n- `sort-keys` (`list[tuple[str, 'ascending' | 'descending']]`) - if present,\n  sort the result set by these columns before comparison\n- `tags` table:\n  - `caveats` (`list[str]`) - if present, a list of footnotes to add to the\n    user documentation (e.g. to explain why something is only partially\n    supported)\n  - `partial-support` (`bool`) - if present, indicate in the user\n    documentation that something is only partially supported\n  - `sql-type-name` (`str`) - the name of the SQL type being tested (to\n    display in the user documentation)\n\nA `SELECT` query just tests running a query and checking the result.  It\nconsists of:\n\n- `query.sql` - the query to run\n- `query.schema.json` - the schema of the result set\n- `query.json` - the data of the result set (in JSON Lines)\n- `query.setup.sql` (optional) - a query to run before the main query (e.g. to\n  create any tables required)\n- `query.bind.json` (optional) - data to insert via executing a query with\n  bind parameters (in JSON Lines)\n- `query.bind.schema.json` (optional) - the schema of the bind data\n- `query.bind.sql` (optional) - the query that is executed for bind data.  It\n  should always use `$1` style placeholders, which will be replaced at runtime\n  with database-specific placeholders\n\nA schema query tests getting the schema of the result set of a query without\nactually running it.  It consists of:\n\n- `query.sql`\n- `query.schema.json`\n\nAn ingest query tests using bulk ingestion to load Arrow data, then querying\nthe result table.  It consists of:\n\n- `query.input.schema.json` - the schema of the data to insert\n- `query.input.json` - the data to insert\n- `query.schema.json` (optional) - the schema of the result set (by default it\n  is assumed to be the same as the input)\n- `query.json` (optional) - the data of the result set (in JSON Lines) (by\n  default it is assumed to be the same as the input)\n\n#### Overriding Tests with Driver-Specific Tests\n\nOften a driver needs specific changes to a test case, e.g. because it picks a\ndifferent return type.  Also, drivers may support extra features that need\nspecific test cases, or may not support a feature and need to skip a test\ncase.  These can be added under a directory specified by the driver quirks.\nInstead of duplicating the full test case, as long as a file is present at the\nsame relative path, it will be used to override that specific part of that\ntest case for that driver.\n\n#### `.txtcase` Test Format\n\nInstead of creating separate files, a single file with the extension\n`.txtcase` can be created instead.  This file uses `//` as comment syntax.\nEach file above can be placed in the `.txtcase` file with a `// part: query`\ncomment indicating which file it is meant to represent.  The comment should\nuse the following text based on the original file extension:\n\n| file | `// part: ` |\n|-|-|\n| `.toml` | `metadata` |\n| `.setup.sql` | `setup_query` |\n| `.bind.sql` | `bind_query` |\n| `.bind.schema.json` | `bind_schema` |\n| `.bind.json` | `bind` |\n| `.sql` | `query` |\n| `.schema.json` | `expected_schema` |\n| `.json` | `expected` |\n\nOverriding files works normally.  You cannot mix `.txtcase` with other files\nfor the same query inside the same directory, however, as the framework will\nerror during test discovery (it would potentially be ambiguous which overload\nto use).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadbc-drivers%2Fvalidation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadbc-drivers%2Fvalidation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadbc-drivers%2Fvalidation/lists"}