-
Notifications
You must be signed in to change notification settings - Fork 1.5k
130 lines (111 loc) · 3.73 KB
/
pytest.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: Unittests
on:
workflow_dispatch:
pull_request:
branches:
- master
# Do not trigger tests for documentation or markdown docs.
paths-ignore:
- 'docs/**'
- '*.md'
push:
branches:
- master
# Do not trigger tests for documentation or markdown docs.
paths-ignore:
- 'docs/**'
- '*.md'
schedule:
# Trigger tests every day at 02:00 UTC to refresh cache.
- cron: '0 2 * * *'
# Cancel in-progress runs for the current workflow if not on the main branch
# (as it marks the unittests as failed).
# Conditionals to concurrent are based on the solution proposed in this link:
# https://github.community/t/concurrency-cancel-in-progress-but-not-when-ref-is-master/194707
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.ref != 'refs/heads/master' || github.run_number }}
# Cancel only PR intermediate builds.
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}
jobs:
activate-tests:
name: Check whether we should run tests or not
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- id: check
uses: ./.github/actions/activate-tests
outputs:
status: ${{ steps.check.outputs.status }}
pytest-job:
needs: activate-tests
if: ${{ needs.activate-tests.outputs.status }}
name: 'Core TFDS tests'
uses: ./.github/workflows/pytest-template.yml
with:
tf-version: tensorflow
os-version: ubuntu-latest
huggingface-pytest-job:
needs: activate-tests
if: ${{ needs.activate-tests.outputs.status }}
# HuggingFace tests need to be run separately because they're disabled without installed
# `datasets` library.
name: 'HuggingFace Python 3.10 tests'
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup
with:
tf-version: tensorflow
python-version: '3.10'
extras: huggingface
- name: Run HuggingFace tests
run: |
pytest -vv -n auto \
tensorflow_datasets/core/dataset_builders/huggingface_dataset_builder_test.py \
tensorflow_datasets/core/utils/huggingface_utils_test.py
githubapi-pytest-job:
needs: activate-tests
if: ${{ needs.activate-tests.outputs.status }}
name: 'Github API tests'
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup
with:
tf-version: tensorflow
- name: Run Github API tests
run: pytest --durations=100 -vv -n auto tensorflow_datasets/core/github_api/github_path_test.py
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
notebook-test-job:
needs: activate-tests
if: ${{ needs.activate-tests.outputs.status }}
name: 'Notebook tests'
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup
with:
tf-version: tensorflow
use-cache: false
# Test each notebook sequentially.
- name: Run notebooks sequentially
run: |
ipython kernel install --user --name tfds-notebook
for notebook in docs/*ipynb
do
# These notebooks time out because they rely on loading huge datasets.
if [[ "$notebook" != "docs/determinism.ipynb" ]] && \
[[ "$notebook" != "docs/dataset_collections.ipynb" ]]
then
jupyter nbconvert \
--ExecutePreprocessor.timeout=600 \
--ExecutePreprocessor.kernel_name=tfds-notebook \
--to notebook \
--execute $notebook && \
pip install tensorflow # reinstall tensorflow if it was uninstalled
fi
done