-
-
Notifications
You must be signed in to change notification settings - Fork 29
137 lines (133 loc) · 4.06 KB
/
test.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
131
132
133
134
135
136
137
---
name: test
on:
push:
branches-ignore:
- "coverage"
- "renovate/**"
pull_request:
workflow_dispatch:
inputs:
main_branch:
description: "Main branch for coverage/tmate."
type: string
required: false
default: "main"
main_os:
description: "Main os for coverage/tmate."
type: choice
default: "macos-latest"
options:
- "macos-latest"
- "ubuntu-latest"
main_py_ver:
description: "Main python version for coverage/tmate."
type: choice
default: "3.9"
options:
- "3.12"
- "3.11"
- "3.10"
- "3.9"
tmate:
type: boolean
description: "Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate). This is only for main strategy and others will be stopped."
required: false
default: false
env:
MAIN_BRANCH: ${{ inputs.main_branch || 'main' }}
MAIN_OS: ${{ inputs.main_os || 'macos-latest' }}
MAIN_PY_VER: ${{ inputs.main_py_ver || '3.10' }}
TMATE: ${{ inputs.tmate || 'false' }}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
install:
strategy:
matrix:
os: [macos-latest, ubuntu-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Exit workflow
if: ${{ github.event_name == 'workflow_dispatch' && env.tmate == 'true' }}
run: exit 1
- name: Install test
run: |
curl -o install.sh -fsSL https://raw.github.com/rcmdnk/homebrew-file/install/install.sh
chmod 755 ./install.sh
./install.sh
rm -f install.sh
formula:
strategy:
matrix:
os: [macos-latest, ubuntu-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Exit workflow
if: ${{ github.event_name == 'workflow_dispatch' && env.tmate == 'true' }}
run: exit 1
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
with:
test-bot: false
- name: Install homebrew-file
run: brew install rcmdnk/file/brew-file
test:
strategy:
fail-fast: false
matrix:
os: [macos-latest, ubuntu-latest]
python-version: ['3.12', '3.11', '3.10', '3.9']
permissions:
contents: write
runs-on: ${{ matrix.os }}
steps:
- name: Check is main
id: is_main
run: |
if [ "${{ github.ref }}" = "refs/heads/${{ env.MAIN_BRANCH }}" ] && [ "${{ matrix.os }}" = "${{ env.MAIN_OS }}" ] && [ "${{ matrix.python-version }}" = "${{ env.MAIN_PY_VER }}" ];then
echo "IS_MAIN=1" >> $GITHUB_ENV
is_main=1
else
echo "IS_MAIN=0" >> $GITHUB_ENV
is_main=0
fi
if [ "${{ env.TMATE }}" = "true" ];then
if [ "$is_main" = 0 ];then
echo "Tmate is enabled and this is not main, skip tests"
exit 1
fi
echo "DEBUG=1" >> $GITHUB_ENV
else
echo "DEBUG=0" >> $GITHUB_ENV
fi
- name: Set up Homebrew
id: set-up-homebrew
uses: Homebrew/actions/setup-homebrew@master
with:
test-bot: false
- name: Install wget
run: brew install wget
- uses: rcmdnk/python-action@v2
with:
checkout: 1
setup-python: 1
python-version: "${{ matrix.python-version }}"
pip: 'pip'
setup-cmd: 'poetry install'
pip-packages: ''
poetry: 1
cache: 'poetry'
pytest: 1
pytest-tests-path: 'tests/'
pytest-ignore: ''
pytest-separate-benchmark: 0
coverage: 1
pytest-cov-path: "bin"
coverage-push: "${{ env.IS_MAIN }}"
coverage-push-condition: "branch=${{ env.MAIN_BRANCH }}, os=${{ env.MAIN_OS }}, python_version=${{ env.MAIN_PY_VER }}"
github_token: "${{github.token}}"
pre-commit: "${{ env.IS_MAIN }}"
tmate: "${{ env.DEBUG }}"