11name : common | common
22
33on :
4- pull_request :
5- branches :
6- - master
7- - devel
8- workflow_dispatch :
4+ workflow_call :
95
10- concurrency :
11- group : ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
12- cancel-in-progress : true
136
147env :
158 RUNTIME__LOG_LEVEL : ERROR
16- RUNTIME__DLTHUB_TELEMETRY_ENDPOINT : ${{ secrets.RUNTIME__DLTHUB_TELEMETRY_ENDPOINT }}
179
1810 # we need the secrets only for the rest_api_pipeline tests which are in tests/sources
1911 # so we inject them only at the end
2214 SOURCES__GITHUB_API_PIPELINE__ACCESS_TOKEN : ${{ secrets.GITHUB_TOKEN }}
2315
2416jobs :
25- get_docs_changes :
26- name : docs changes
27- uses : ./.github/workflows/get_docs_changes.yml
28-
2917 run_common :
3018 name : test
31- needs : get_docs_changes
32- if : needs.get_docs_changes.outputs.changes_outside_docs == 'true'
3319 strategy :
3420 fail-fast : false
3521 matrix :
36- os : ["ubuntu-latest", "macos-latest", "windows-latest"]
37- python-version : ["3.11.x"]
38- # Test all python versions on ubuntu only
3922 include :
40- - python-version : " 3.9.x"
41- os : " ubuntu-latest"
42- - python-version : " 3.10.x"
43- os : " ubuntu-latest"
44- - python-version : " 3.12.x"
45- os : " ubuntu-latest"
46- - python-version : " 3.13.x"
47- os : " ubuntu-latest"
48- - python-version : " 3.13.x"
49- os : " windows-latest"
23+
24+ # macos tests
25+ - os : macos-latest
26+ python-version : " 3.11.x"
27+ shell : bash
28+
29+ # linux tests
30+ - os : ubuntu-latest
31+ python-version : " 3.9.x"
32+ shell : bash
33+ - os : ubuntu-latest
34+ python-version : " 3.10.x"
35+ shell : bash
36+ - os : ubuntu-latest
37+ python-version : " 3.11.x"
38+ shell : bash
39+ - os : ubuntu-latest
40+ python-version : " 3.12.x"
41+ shell : bash
42+ - os : ubuntu-latest
43+ python-version : " 3.13.x"
44+ shell : bash
45+
46+ # windows tests
47+ - os : windows-latest
48+ python-version : " 3.11.x"
49+ shell : cmd
50+ pytest_args : ' -m "not forked"'
51+ - os : windows-latest
52+ python-version : " 3.13.x"
53+ shell : cmd
54+ pytest_args : ' -m "not forked"'
5055
5156 defaults :
5257 run :
53- shell : bash
58+ shell : ${{ matrix.shell }}
5459 runs-on : ${{ matrix.os }}
5560
5661 steps :
7277 copy tzdata %USERPROFILE%\Downloads\tzdata
7378 curl https://raw.githubusercontent.com/unicode-org/cldr/master/common/supplemental/windowsZones.xml --output %USERPROFILE%\Downloads\tzdata\windowsZones.xml
7479 if : runner.os == 'Windows'
75- shell : cmd
7680
7781 - name : Install Poetry
7882 # https://github.com/snok/install-poetry#running-on-windows
@@ -83,93 +87,67 @@ jobs:
8387 installer-parallel : true
8488 version : 1.8.5
8589
86- # NOTE: do not cache. we want to have a clean state each run and we upgrade depdendencies later
87- # - name: Load cached venv
88- # id: cached-poetry-dependencies
89- # uses: actions/cache@v3
90- # with:
91- # # path: ${{ steps.pip-cache.outputs.dir }}
92- # path: .venv
93- # key: venv-${{ matrix.os }}-${{ matrix.python-version }}-${{ hashFiles('**/poetry.lock') }}
94-
9590 - name : Install dependencies
9691 run : poetry install --no-interaction --with sentry-sdk
97-
98- - run : |
99- poetry run pytest tests/common tests/normalize tests/reflection tests/plugins tests/load/test_dummy_client.py tests/extract/test_extract.py tests/extract/test_sources.py tests/pipeline/test_pipeline_state.py
100- if: runner.os != 'Windows'
101- name: Run common tests with minimum dependencies Linux/MAC
102- - run : |
103- poetry run pytest tests/common tests/normalize tests/reflection tests/plugins tests/load/test_dummy_client.py tests/extract/test_extract.py tests/extract/test_sources.py tests/pipeline/test_pipeline_state.py -m "not forked"
104- if: runner.os == 'Windows'
105- name: Run common tests with minimum dependencies Windows
106- shell: cmd
92+
93+ - name : Run common tests with minimum dependencies
94+ run : |
95+ poetry run pytest tests/common tests/normalize tests/reflection tests/plugins tests/load/test_dummy_client.py tests/extract/test_extract.py tests/extract/test_sources.py tests/pipeline/test_pipeline_state.py ${{ matrix.pytest_args }}
96+
10797
10898 - name : Install duckdb dependencies
10999 run : poetry install --no-interaction -E duckdb --with sentry-sdk
110100
111- - run : |
112- poetry run pytest tests/pipeline/test_pipeline.py tests/pipeline/test_import_export_schema.py
113- if: runner.os != 'Windows'
114- name: Run pipeline smoke tests with minimum deps Linux/MAC
115- - run : |
116- poetry run pytest tests/pipeline/test_pipeline.py tests/pipeline/test_import_export_schema.py -m "not forked"
117- if: runner.os == 'Windows'
118- name: Run smoke tests with minimum deps Windows
119- shell: cmd
101+ - name : Run pipeline smoke tests with minimum deps
102+ run : |
103+ poetry run pytest tests/pipeline/test_pipeline.py tests/pipeline/test_import_export_schema.py ${{ matrix.pytest_args }}
120104
121105 - name : Install pyarrow
122106 run : poetry install --no-interaction -E duckdb -E cli -E parquet --with sentry-sdk
123107
124- - run : |
125- poetry run pytest tests/pipeline/test_pipeline_extra.py -k arrow
126- if: runner.os != 'Windows'
127- name: Run pipeline tests with pyarrow but no pandas installed
128- - run : |
129- poetry run pytest tests/pipeline/test_pipeline_extra.py -k arrow -m "not forked"
130- if: runner.os == 'Windows'
131- name: Run pipeline tests with pyarrow but no pandas installed Windows
132- shell: cmd
108+ - name : Run pipeline tests with pyarrow but no pandas installed
109+ run : |
110+ poetry run pytest tests/pipeline/test_pipeline_extra.py -k arrow ${{ matrix.pytest_args }}
133111
134112 - name : Install pipeline and sources dependencies
135113 run : poetry install --no-interaction -E duckdb -E cli -E parquet -E deltalake -E sql_database --with sentry-sdk,pipeline,sources
136114
137- - run : |
138- poetry run pytest tests/extract tests/pipeline tests/libs tests/cli/common tests/destinations tests/sources
139- if: runner.os != 'Windows'
140- name: Run extract and pipeline tests Linux/MAC
141- - run : |
142- poetry run pytest tests/extract tests/pipeline tests/libs tests/cli/common tests/destinations tests/sources -m "not forked"
143- if: runner.os == 'Windows'
144- name: Run extract tests Windows
145- shell: cmd
115+ - name : Run extract and pipeline tests
116+ run : |
117+ poetry run pytest tests/extract tests/pipeline tests/libs tests/cli/common tests/destinations tests/sources tests/transformations ${{ matrix.pytest_args }}
146118
147119 # here we upgrade sql alchemy to 2 an run the sql_database tests again
148120 - name : Upgrade sql alchemy
149121 run : poetry run pip install sqlalchemy==2.0.32
150122
151- - run : |
152- poetry run pytest tests/sources/sql_database
153- if: runner.os != 'Windows'
154- name: Run extract and pipeline tests Linux/MAC
155- - run : |
123+ - name : Run extract and pipeline tests
124+ run : |
156125 poetry run pytest tests/sources/sql_database
157- if: runner.os == 'Windows'
158- name: Run extract tests Windows
159- shell: cmd
160-
161- # - name: Install Pydantic 1.0
162- # run: pip install "pydantic<2"
163-
164- # - run: |
165- # poetry run pytest tests/libs
166- # if: runner.os != 'Windows'
167- # name: Run extract and pipeline tests Linux/MAC
168- # - run: |
169- # poetry run pytest tests/libs
170- # if: runner.os == 'Windows'
171- # name: Run extract tests Windows
172- # shell: cmd
126+
127+
128+
129+ # test marimo app, does not work with python 3.13
130+ - name : Install dlt with duckdb and studio
131+ run : poetry install --no-interaction -E duckdb --with sentry-sdk,pipeline,sources,ibis,marimo
132+ if : matrix.python-version != '3.13.x'
133+
134+ - name : Install playwright
135+ run : poetry run playwright install
136+ if : matrix.python-version != '3.13.x'
137+
138+ # Run marimo studio unit tests
139+ - name : Run marimo studio unit tests
140+ run : |
141+ poetry run pytest tests/helpers/studio
142+ if : matrix.python-version != '3.13.x'
143+
144+ # Run marimo e2e tests (does not pass with python 3.9, does not pass on windows (playwright does not work somehow), does not pass on python 3.13 (ibis not available))
145+ - name : Run marimo e2e
146+ run : |
147+ poetry run marimo run --headless dlt/helpers/studio/app.py -- -- --pipelines_dir _storage/.dlt/pipelines/ --with_test_identifiers true & poetry run pytest --browser chromium tests/e2e
148+ if : matrix.python-version != '3.13.x' && matrix.python-version != '3.9.x' && matrix.os != 'windows-latest'
149+
150+
173151
174152 matrix_job_required_check :
175153 name : common | common tests
0 commit comments