Skip to content
Open
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
9 changes: 6 additions & 3 deletions .github/workflows/refresh-build-dependencies.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ jobs:
enable-cache: false
- name: Compile Linux dependency locks
run: |
uv pip compile ${{ github.event_name != 'pull_request' && '--upgrade' || '' }} --generate-hashes --no-emit-index-url --no-header --strip-extras --python-version 3.10 --default-index https://pypi.org/simple --output-file eng/requirements-build-linux.txt eng/requirements-build-linux.in
uv pip compile ${{ github.event_name != 'pull_request' && '--upgrade' || '' }} --generate-hashes --no-emit-index-url --no-header --strip-extras --python-version 3.10 --default-index https://pypi.org/simple --output-file eng/requirements-test-linux.txt eng/requirements-test-linux.in
uv pip compile ${{ github.event_name != 'pull_request' && '--upgrade' || '' }} --universal --generate-hashes --no-emit-index-url --no-header --strip-extras --python-version 3.10 --default-index https://pypi.org/simple --output-file eng/requirements-build-linux.txt eng/requirements-build-linux.in
uv pip compile ${{ github.event_name != 'pull_request' && '--upgrade' || '' }} --universal --generate-hashes --no-emit-index-url --no-header --strip-extras --python-version 3.10 --default-index https://pypi.org/simple --output-file eng/requirements-test-linux.txt eng/requirements-test-linux.in
- name: Verify committed Linux locks are current
if: github.event_name == 'pull_request'
run: |
Expand All @@ -80,14 +80,17 @@ jobs:
os: macos-latest
input: eng/requirements-build-macos.in
output: eng/requirements-build-macos.txt
universal: --universal
- name: windows
os: windows-latest
input: eng/requirements-build-windows.in
output: eng/requirements-build-windows.txt
universal: --universal
- name: odbc
os: windows-latest
input: eng/requirements-build-odbc.in
output: eng/requirements-build-odbc.txt
universal: ""
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
Expand All @@ -100,7 +103,7 @@ jobs:
- name: Compile ${{ matrix.name }} dependency lock
# Python 3.10 is the oldest supported release, so every lock remains
# installable throughout the release pipeline's Python 3.10-3.14 matrix.
run: uv pip compile ${{ github.event_name != 'pull_request' && '--upgrade' || '' }} --generate-hashes --no-emit-index-url --no-header --strip-extras --python-version 3.10 --default-index https://pypi.org/simple --output-file "${{ matrix.output }}" "${{ matrix.input }}"
run: uv pip compile ${{ github.event_name != 'pull_request' && '--upgrade' || '' }} ${{ matrix.universal }} --generate-hashes --no-emit-index-url --no-header --strip-extras --python-version 3.10 --default-index https://pypi.org/simple --output-file "${{ matrix.output }}" "${{ matrix.input }}"
- name: Verify committed ${{ matrix.name }} lock is current
if: github.event_name == 'pull_request'
shell: bash
Expand Down
26 changes: 24 additions & 2 deletions OneBranchPipelines/stages/build-linux-single-stage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -324,13 +324,24 @@ stages:
cp -r /workspace/tests $TEST_DIR/ || echo "WARNING: No tests directory";
# Some tests read repo-side helper scripts/workflows (e.g. .github/scripts/prepare_fork_coverage_comment.py).
cp -r /workspace/.github $TEST_DIR/ || echo "WARNING: No .github directory";
# Keep the isolated wheel test fixture narrow, but include the files
# required by the mssql-odbc runner contract tests.
mkdir -p $TEST_DIR/eng/scripts $TEST_DIR/eng/pipelines $TEST_DIR/eng/versions;
mkdir -p $TEST_DIR/OneBranchPipelines/stages;
cp /workspace/eng/scripts/run-mssql-odbc-tests.sh /workspace/eng/scripts/verify_mssql_odbc_provider.py $TEST_DIR/eng/scripts/;
cp /workspace/eng/pipelines/mssql-odbc-daily-validation-pipeline.yml $TEST_DIR/eng/pipelines/;
cp /workspace/eng/versions/mssql-python-rs-nuget.version $TEST_DIR/eng/versions/;
cp /workspace/OneBranchPipelines/stages/build-linux-single-stage.yml $TEST_DIR/OneBranchPipelines/stages/;
Comment thread
gargsaumya marked this conversation as resolved.
cp /workspace/pytest.ini $TEST_DIR/ || echo "WARNING: No pytest.ini";

# Step 8: Run pytest (stops on first failure)
if [ -d $TEST_DIR/tests ]; then
echo "Running pytest for ${PYBIN}...";
# Release-lock tests validate repository workflows and lock files,
# not the installed wheel; run them in source-checkout validation.
DB_CONNECTION_STRING="Server=$SQL_IP;Database=master;Uid=SA;Pwd=$DB_PASSWORD;TrustServerCertificate=yes" \
$PY -m pytest $TEST_DIR/tests -v --maxfail=1 || {
$PY -m pytest $TEST_DIR/tests -v --maxfail=1 \
--ignore=tests/test_release_build_dependencies.py || {
echo "ERROR: Tests failed for ${PYBIN}";
exit 1;
};
Expand Down Expand Up @@ -394,13 +405,24 @@ stages:
cp -r /workspace/tests $TEST_DIR/ || echo "WARNING: No tests directory";
# Some tests read repo-side helper scripts/workflows (e.g. .github/scripts/prepare_fork_coverage_comment.py).
cp -r /workspace/.github $TEST_DIR/ || echo "WARNING: No .github directory";
# Keep the isolated wheel test fixture narrow, but include the files
# required by the mssql-odbc runner contract tests.
mkdir -p $TEST_DIR/eng/scripts $TEST_DIR/eng/pipelines $TEST_DIR/eng/versions;
mkdir -p $TEST_DIR/OneBranchPipelines/stages;
cp /workspace/eng/scripts/run-mssql-odbc-tests.sh /workspace/eng/scripts/verify_mssql_odbc_provider.py $TEST_DIR/eng/scripts/;
cp /workspace/eng/pipelines/mssql-odbc-daily-validation-pipeline.yml $TEST_DIR/eng/pipelines/;
cp /workspace/eng/versions/mssql-python-rs-nuget.version $TEST_DIR/eng/versions/;
cp /workspace/OneBranchPipelines/stages/build-linux-single-stage.yml $TEST_DIR/OneBranchPipelines/stages/;
cp /workspace/pytest.ini $TEST_DIR/ || echo "WARNING: No pytest.ini";

# Step 8: Run pytest (stops on first failure)
if [ -d $TEST_DIR/tests ]; then
echo "Running pytest for ${PYBIN}...";
# Release-lock tests validate repository workflows and lock files,
# not the installed wheel; run them in source-checkout validation.
DB_CONNECTION_STRING="Server=$SQL_IP;Database=master;Uid=SA;Pwd=$DB_PASSWORD;TrustServerCertificate=yes" \
$PY -m pytest $TEST_DIR/tests -v --maxfail=1 || {
$PY -m pytest $TEST_DIR/tests -v --maxfail=1 \
--ignore=tests/test_release_build_dependencies.py || {
echo "ERROR: Tests failed for ${PYBIN}";
exit 1;
};
Expand Down
10 changes: 7 additions & 3 deletions eng/requirements-build-linux.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
exceptiongroup==1.3.1 \
colorama==0.4.6 ; sys_platform == 'win32' \
--hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
--hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
# via pytest
exceptiongroup==1.3.1 ; python_full_version < '3.11' \
--hash=sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219 \
--hash=sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598
# via pytest
Expand Down Expand Up @@ -36,7 +40,7 @@ setuptools==84.0.0 \
--hash=sha256:51a52592b3b99e102b609654876bd65f19f999935166d1352678931132b0c670 \
--hash=sha256:f4695c21257f0d9b537ec2692c941d02ee143b7cc1276941349a546573b2ef73
# via -r eng/requirements-build-linux.in
tomli==2.4.1 \
tomli==2.4.1 ; python_full_version < '3.11' \
--hash=sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853 \
--hash=sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe \
--hash=sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5 \
Expand Down Expand Up @@ -85,7 +89,7 @@ tomli==2.4.1 \
--hash=sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9 \
--hash=sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049
# via pytest
typing-extensions==4.16.0 \
typing-extensions==4.16.0 ; python_full_version < '3.11' \
--hash=sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8 \
--hash=sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5
# via exceptiongroup
Expand Down
18 changes: 12 additions & 6 deletions eng/requirements-build-macos.txt
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ azure-identity==1.25.3 \
--hash=sha256:ab23c0d63015f50b630ef6c6cf395e7262f439ce06e5d07a64e874c724f8d9e6 \
--hash=sha256:f4d0b956a8146f30333e071374171f3cfa7bdb8073adb8c3814b65567aa7447c
# via -r eng/../requirements.txt
backports-asyncio-runner==1.2.0 \
backports-asyncio-runner==1.2.0 ; python_full_version < '3.11' \
--hash=sha256:0da0a936a8aeb554eccb426dc55af3ba63bcdc69fa1a600b5bb305413a4477b5 \
--hash=sha256:a5aa7b2b7d8f8bfcaa2b57313f70792df84e32a2a746f585213373f900b42162
# via pytest-asyncio
Expand Down Expand Up @@ -110,7 +110,7 @@ certifi==2026.7.22 \
--hash=sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775 \
--hash=sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55
# via requests
cffi==2.1.1 \
cffi==2.1.1 ; platform_python_implementation != 'PyPy' \
--hash=sha256:046bfc24911b37851ee1b51aab8bffe713d89c68c6a057b09484ce9fd5f69b4e \
--hash=sha256:06c72bb76605a4b0cd0aad6930b69d4baf7dd5d806cfc409b824191099700e66 \
--hash=sha256:0beceaabe56af686895136a2de78db54ecd8e4046b236b8fd6d6cb61389e9bf2 \
Expand Down Expand Up @@ -411,6 +411,12 @@ cmake==4.4.3 \
--hash=sha256:d36c9bb471a67970b031d45b29c3b852f14bc8b64ac46b39ccc046fdf652f36d \
--hash=sha256:f5aead3c09bfa662da5d1d65f6c526a449966314913039ce6de3c0ff82ea9266
# via -r eng/requirements-build-macos.in
colorama==0.4.6 ; sys_platform == 'win32' \
--hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
--hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
# via
# pylint
# pytest
coverage==7.16.0 \
--hash=sha256:01b18b8a6c9cec8d5f45550e2501426ed982cf2c35016b0acd2ba9b5d8b2fb06 \
--hash=sha256:0466f4a5c0370461b7d8c7eb259d7d1db0b5756f13d66230b04d22a1d380ee11 \
Expand Down Expand Up @@ -599,7 +605,7 @@ dill==0.4.1 \
--hash=sha256:1e1ce33e978ae97fcfcff5638477032b801c46c7c65cf717f95fbc2248f79a9d \
--hash=sha256:423092df4182177d4d8ba8290c8a5b640c66ab35ec7da59ccfa00f6fa3eea5fa
# via pylint
exceptiongroup==1.3.1 \
exceptiongroup==1.3.1 ; python_full_version < '3.11' \
--hash=sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219 \
--hash=sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598
# via pytest
Expand Down Expand Up @@ -654,7 +660,7 @@ isort==9.0.1 \
--hash=sha256:fb7d55156a1f766a2b097165524f07be61ececa41a71ca33d24a00777f79a829 \
--hash=sha256:fd326823ddbe338357ba1823b7f96481d4421d54c83ebd43c92f1b51314a24ae
# via pylint
librt==0.15.0 \
librt==0.15.0 ; platform_python_implementation != 'PyPy' \
--hash=sha256:04d5387b908676c0b8d5d2f5fb58373b4ea382d81f7a6f0fab8ea2a462bb4738 \
--hash=sha256:077471b3182db4e17c36ae91555f36a4d2c00080b267f749bcad34a478a9a302 \
--hash=sha256:0a15cb554761247d84a3ec0cbdf4078d70725384f0e4662c0fa3b26266eb60ad \
Expand Down Expand Up @@ -1170,7 +1176,7 @@ pycodestyle==2.14.0 \
# via
# autopep8
# flake8
pycparser==3.0 \
pycparser==3.0 ; implementation_name != 'PyPy' and platform_python_implementation != 'PyPy' \
--hash=sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29 \
--hash=sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992
# via cffi
Expand Down Expand Up @@ -1259,7 +1265,7 @@ setuptools==84.0.0 \
--hash=sha256:51a52592b3b99e102b609654876bd65f19f999935166d1352678931132b0c670 \
--hash=sha256:f4695c21257f0d9b537ec2692c941d02ee143b7cc1276941349a546573b2ef73
# via -r eng/../requirements.txt
tomli==2.4.1 \
tomli==2.4.1 ; python_full_version <= '3.11' \
--hash=sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853 \
--hash=sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe \
--hash=sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5 \
Expand Down
10 changes: 5 additions & 5 deletions eng/requirements-build-windows.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
backports-asyncio-runner==1.2.0 \
backports-asyncio-runner==1.2.0 ; python_full_version < '3.11' \
--hash=sha256:0da0a936a8aeb554eccb426dc55af3ba63bcdc69fa1a600b5bb305413a4477b5 \
--hash=sha256:a5aa7b2b7d8f8bfcaa2b57313f70792df84e32a2a746f585213373f900b42162
# via pytest-asyncio
colorama==0.4.6 \
colorama==0.4.6 ; sys_platform == 'win32' \
--hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
--hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
# via pytest
exceptiongroup==1.3.1 \
exceptiongroup==1.3.1 ; python_full_version < '3.11' \
--hash=sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219 \
--hash=sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598
# via pytest
Expand Down Expand Up @@ -139,7 +139,7 @@ setuptools==84.0.0 \
--hash=sha256:51a52592b3b99e102b609654876bd65f19f999935166d1352678931132b0c670 \
--hash=sha256:f4695c21257f0d9b537ec2692c941d02ee143b7cc1276941349a546573b2ef73
# via -r eng/requirements-build-windows.in
tomli==2.4.1 \
tomli==2.4.1 ; python_full_version < '3.11' \
--hash=sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853 \
--hash=sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe \
--hash=sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5 \
Expand Down Expand Up @@ -188,7 +188,7 @@ tomli==2.4.1 \
--hash=sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9 \
--hash=sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049
# via pytest
typing-extensions==4.16.0 \
typing-extensions==4.16.0 ; python_full_version < '3.13' \
--hash=sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8 \
--hash=sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5
# via
Expand Down
19 changes: 13 additions & 6 deletions eng/requirements-test-linux.txt
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ azure-identity==1.25.3 \
--hash=sha256:ab23c0d63015f50b630ef6c6cf395e7262f439ce06e5d07a64e874c724f8d9e6 \
--hash=sha256:f4d0b956a8146f30333e071374171f3cfa7bdb8073adb8c3814b65567aa7447c
# via -r eng/../requirements.txt
backports-asyncio-runner==1.2.0 \
backports-asyncio-runner==1.2.0 ; python_full_version < '3.11' \
--hash=sha256:0da0a936a8aeb554eccb426dc55af3ba63bcdc69fa1a600b5bb305413a4477b5 \
--hash=sha256:a5aa7b2b7d8f8bfcaa2b57313f70792df84e32a2a746f585213373f900b42162
# via pytest-asyncio
Expand Down Expand Up @@ -110,7 +110,7 @@ certifi==2026.7.22 \
--hash=sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775 \
--hash=sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55
# via requests
cffi==2.1.1 \
cffi==2.1.1 ; platform_python_implementation != 'PyPy' \
--hash=sha256:046bfc24911b37851ee1b51aab8bffe713d89c68c6a057b09484ce9fd5f69b4e \
--hash=sha256:06c72bb76605a4b0cd0aad6930b69d4baf7dd5d806cfc409b824191099700e66 \
--hash=sha256:0beceaabe56af686895136a2de78db54ecd8e4046b236b8fd6d6cb61389e9bf2 \
Expand Down Expand Up @@ -390,6 +390,13 @@ click==8.5.0 \
--hash=sha256:255bc9599cf7748b4b1a446ccc735421bd08a2ae529a8b88597d3de5664ee360 \
--hash=sha256:ba0d2089de75ea0310e2dde03160e6ca10009947fb95a182f9b54021bb272e34
# via black
colorama==0.4.6 ; sys_platform == 'win32' \
--hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
--hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
# via
# -c eng/requirements-build-linux.txt
# pylint
# pytest
coverage==7.16.0 \
--hash=sha256:01b18b8a6c9cec8d5f45550e2501426ed982cf2c35016b0acd2ba9b5d8b2fb06 \
--hash=sha256:0466f4a5c0370461b7d8c7eb259d7d1db0b5756f13d66230b04d22a1d380ee11 \
Expand Down Expand Up @@ -574,7 +581,7 @@ dill==0.4.1 \
--hash=sha256:1e1ce33e978ae97fcfcff5638477032b801c46c7c65cf717f95fbc2248f79a9d \
--hash=sha256:423092df4182177d4d8ba8290c8a5b640c66ab35ec7da59ccfa00f6fa3eea5fa
# via pylint
exceptiongroup==1.3.1 \
exceptiongroup==1.3.1 ; python_full_version < '3.11' \
--hash=sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219 \
--hash=sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598
# via
Expand Down Expand Up @@ -633,7 +640,7 @@ isort==9.0.1 \
--hash=sha256:fb7d55156a1f766a2b097165524f07be61ececa41a71ca33d24a00777f79a829 \
--hash=sha256:fd326823ddbe338357ba1823b7f96481d4421d54c83ebd43c92f1b51314a24ae
# via pylint
librt==0.15.0 \
librt==0.15.0 ; platform_python_implementation != 'PyPy' \
--hash=sha256:04d5387b908676c0b8d5d2f5fb58373b4ea382d81f7a6f0fab8ea2a462bb4738 \
--hash=sha256:077471b3182db4e17c36ae91555f36a4d2c00080b267f749bcad34a478a9a302 \
--hash=sha256:0a15cb554761247d84a3ec0cbdf4078d70725384f0e4662c0fa3b26266eb60ad \
Expand Down Expand Up @@ -1156,7 +1163,7 @@ pycodestyle==2.14.0 \
# via
# autopep8
# flake8
pycparser==3.0 \
pycparser==3.0 ; implementation_name != 'PyPy' and platform_python_implementation != 'PyPy' \
--hash=sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29 \
--hash=sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992
# via cffi
Expand Down Expand Up @@ -1252,7 +1259,7 @@ setuptools==84.0.0 \
# -c eng/requirements-build-linux.txt
# -r eng/../requirements.txt
# -r eng/requirements-build-linux.in
tomli==2.4.1 \
tomli==2.4.1 ; python_full_version <= '3.11' \
--hash=sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853 \
--hash=sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe \
--hash=sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5 \
Expand Down
5 changes: 4 additions & 1 deletion tests/test_036_profiler_ci.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,10 @@
import pytest

ROOT = Path(__file__).resolve().parents[1]
if not (ROOT / ".github/scripts/post_profiler_comment.py").is_file():
if (
not (ROOT / "eng/profiler_benchmarks").is_dir()
or not (ROOT / ".github/scripts/post_profiler_comment.py").is_file()
):
pytest.skip("CI reporting tools are not installed in driver wheels", allow_module_level=True)

from eng.profiler_benchmarks import controller
Expand Down
Loading
Loading