SNOW-UD: Add inline UD test workflow and tox connector-swap support#4117
SNOW-UD: Add inline UD test workflow and tox connector-swap support#4117sfc-gh-fpawlowski wants to merge 10 commits intomainfrom
Conversation
85594b2 to
178ab95
Compare
| python-version: | ||
| description: 'Python version' | ||
| required: false | ||
| default: '3.10' |
There was a problem hiding this comment.
is it only running one version at a time? should we consider default to the latest available python version in snowflake (3.13/3.14)?
There was a problem hiding this comment.
Yes, for now we need it mostly to detect the API drift between both products. When we have solved all the missing contract elements, we can consider a full testing matrix.
And nice catch - changed to 3.13 : )
- Add ud-inline-tests.yml (workflow_dispatch only) to run Snowpark tests against the universal-driver Python connector installed from git+https. - Add scripts/ud_tox_install_cmd.sh — wrapper that delegates to the standard tox_install_cmd.sh, then swaps snowflake-connector-python for the UD connector. Original install script is untouched. - Add [testenv:ud] and [testenv:ud-datasource] to tox.ini with their own install_command, passenv, and setenv. No changes to [testenv]. No behavior change for regular Snowpark CI — UD install logic is fully isolated in the new wrapper script and testenv sections. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
TODO: remove pull_request trigger once all tests are passing. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move the Universal Driver connector swap logic into the shared
tox_install_cmd.sh (conditional on ud_connector_path) so the UD
workflow runs the same tox environments as normal CI instead of
dedicated ud/ud-datasource envs.
- Add UD swap block to scripts/tox_install_cmd.sh (no-op when unset)
- Add ud_connector_path to [testenv] passenv
- Remove [testenv:ud] and [testenv:ud-datasource] from tox.ini
- Delete scripts/ud_tox_install_cmd.sh
- Workflow now invokes py${VER}-notdoctest-ci and datasource directly
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace the appended swap block with a proper 3-way conditional: ud_connector_path → snowflake_path → PyPI (in priority order). The appended approach ran the full PyPI install then the swap as a separate pass on every tox install_command invocation. The integrated approach mirrors the original design: UD takes explicit priority, snowflake_path is only used when UD is not set, and a single logical path runs per invocation. Also removes the decorative comment banners added by the previous edit, which were inconsistent with the surrounding code style. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add 'Run doctest' step using py${PYTHON_VERSION}-doctest-notudf-ci,
matching the pattern from daily_precommit.yml.
- Change default python-version input from 3.10 to 3.13 (latest
Snowflake-supported Python).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
cb7b143 to
44cf53e
Compare
| curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - | ||
| curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list \ |
There was a problem hiding this comment.
Is there a safer way to install these than curling from an external URL?
|
I have read the CLA Document and I hereby sign the CLA You can retrigger this bot by commenting recheck in this Pull Request. Posted by the CLA Assistant Lite bot. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #4117 +/- ##
=======================================
Coverage 95.41% 95.41%
=======================================
Files 171 171
Lines 43786 43786
Branches 7502 7502
=======================================
Hits 41778 41778
Misses 1227 1227
Partials 781 781 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
| PYTHON_VERSION: ${{ inputs.python-version || '3.13' }} | ||
| CLOUD_PROVIDER: ${{ inputs.cloud-provider || 'aws' }} | ||
| UD_BRANCH: ${{ inputs.ud-branch || 'snowpark-compatibility' }} | ||
| EXTRA_PYTEST_ADDOPTS: ${{ inputs.pytest-addopts || '-v --tb=long' }} |
There was a problem hiding this comment.
The default value for EXTRA_PYTEST_ADDOPTS is '-v --tb=long', not an empty string. This causes the conditionals at lines 99 and 109 (if: ${{ env.EXTRA_PYTEST_ADDOPTS == '' }}) to always evaluate to false when using default inputs, skipping the doctest and datasource tests unexpectedly.
Impact: When the workflow is triggered without specifying pytest-addopts, only integration tests run. Doctest and datasource tests are always skipped.
Fix: Change the default to empty string:
EXTRA_PYTEST_ADDOPTS: ${{ inputs.pytest-addopts || '' }}Or update the conditionals to check for the specific default value, though an empty default is cleaner.
| EXTRA_PYTEST_ADDOPTS: ${{ inputs.pytest-addopts || '-v --tb=long' }} | |
| EXTRA_PYTEST_ADDOPTS: ${{ inputs.pytest-addopts || '' }} |
Spotted by Graphite
Is this helpful? React 👍 or 👎 to let us know.
No behavior change for regular Snowpark CI (ud_connector_path unset falls through to existing snowflake_path / PyPI logic).
Which Jira issue is this PR addressing? Make sure that there is an accompanying issue to your PR.
Fixes SNOW-NNNNNNN
Fill out the following pre-review checklist:
Please describe how your code solves the related issue.
Please write a short description of how your code change solves the related issue.