-
Notifications
You must be signed in to change notification settings - Fork 232
148 lines (127 loc) · 6.13 KB
/
Copy pathtests_build.yml
File metadata and controls
148 lines (127 loc) · 6.13 KB
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
138
139
140
141
142
143
144
145
146
147
148
name: Test Suite Evaluation
on:
pull_request:
branches: [develop]
# TODO: run this task only on PR in production; use push event for testing
#push:
#branches:
# - '**'
# globals
env:
# general settings
MAIN_REPO_OWNER: rism-digital # Main repo owner (default: rism-digital; should not be changed)
# build artifacts
TOOLKIT_BUILD: toolkit-build
# gh-pages
GH_PAGES_REPO: ${{ github.repository_owner }}/verovio.org # works from rism-digital and from forks
GH_PAGES_BRANCH: gh-pages
# directories
GH_PAGES_DIR: gh-pages-dir
PR_DIR: pr-${{ github.event.pull_request.head.sha }}
DEV_DIR: dev-dir
TEMP_DIR: temp-dir
jobs:
###################################################
# Build the Python toolkit and run the test suite #
###################################################
build_python:
name: Build the test suite
runs-on: ubuntu-24.04
steps:
- uses: FranzDiebold/github-env-vars-action@v2.9.0
- name: Get Short SHA
run: |
echo "SHORT_SHA=`echo ${{ github.event.pull_request.head.sha }} | cut -c1-7`" >> $GITHUB_ENV
- name: Add additional environment variables for creating URL slugs
run: |
echo "OUTPUT_DIR=${{ github.event.pull_request.number }}/${{ env.SHORT_SHA }}" >> $GITHUB_ENV
- uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Checkout GH_PAGES_BRANCH into GH_PAGES_DIR
uses: actions/checkout@v7.0.0
with:
repository: ${{ env.GH_PAGES_REPO }}
ref: ${{ env.GH_PAGES_BRANCH }}
path: ${{ env.GH_PAGES_DIR }}
submodules: recursive
- name: Create directories and install packages
working-directory: ${{ github.workspace }}
run: |
mkdir -p ${{ env.DEV_DIR }}
mkdir -p ${{ env.PR_DIR }}
mkdir -p ${{ env.TEMP_DIR }}/${{ env.DEV_DIR }}
mkdir -p ${{ env.TEMP_DIR }}/${{ env.PR_DIR }}
mkdir -p ${{ env.OUTPUT_DIR }}
ls -alh
ls -alh ${{ env.OUTPUT_DIR }}
sudo apt-get install wireguard
sudo echo "${{ secrets.VPN_CONFIGURATION }}" > wg0.conf
python3 -m venv .venv-dev
python3 -m venv .venv-pr
.venv-dev/bin/python -m pip install --upgrade pip
.venv-pr/bin/python -m pip install --upgrade pip
.venv-dev/bin/python -m pip install build diffimg jsondiff lxml xmldiff cairosvg py_midicsv
.venv-pr/bin/python -m pip install build diffimg jsondiff lxml xmldiff cairosvg py_midicsv
- name: Checkout the dev branch
uses: actions/checkout@v7.0.0
with:
ref: develop
path: ${{ env.DEV_DIR }}/
- name: Install the Leipzig font
working-directory: ${{ github.workspace }}/${{ env.DEV_DIR }}/
run: |
sudo cp ./fonts/Leipzig/Leipzig.ttf /usr/local/share/fonts
sudo fc-cache -f -v
- name: Build Python toolkit and run the tests for the dev branch
working-directory: ${{ github.workspace }}/${{ env.DEV_DIR }}
run: |
${{ github.workspace }}/.venv-dev/bin/python -m build --wheel
${{ github.workspace }}/.venv-dev/bin/python -m pip install dist/*.whl
${{ github.workspace }}/.venv-dev/bin/python doc/test-suite.py ${{ github.workspace }}/${{env.GH_PAGES_DIR}}/_tests ${{ github.workspace }}/${{ env.TEMP_DIR }}/${{ env.DEV_DIR }}/
${{ github.workspace }}/.venv-dev/bin/python doc/test-suite.py ${{ github.workspace }}/${{env.GH_PAGES_DIR}}/musicxmlTestSuite ${{ github.workspace }}/${{ env.TEMP_DIR }}/${{ env.DEV_DIR }}/
- name: Checkout the PR
uses: actions/checkout@v7.0.0
with:
ref: ${{ github.event.pull_request.head.sha }}
path: ${{ env.PR_DIR }}/
- name: Build Python toolkit and run the tests for the PR
working-directory: ${{ github.workspace }}/${{ env.PR_DIR }}
run: |
${{ github.workspace }}/.venv-pr/bin/python -m build --wheel
${{ github.workspace }}/.venv-pr/bin/python -m pip install dist/*.whl
${{ github.workspace }}/.venv-pr/bin/python doc/test-suite.py ${{ github.workspace }}/${{env.GH_PAGES_DIR}}/_tests ${{ github.workspace }}/${{ env.TEMP_DIR }}/${{ env.PR_DIR }}/
${{ github.workspace }}/.venv-pr/bin/python doc/test-suite.py ${{ github.workspace }}/${{env.GH_PAGES_DIR}}/musicxmlTestSuite ${{ github.workspace }}/${{ env.TEMP_DIR }}/${{ env.PR_DIR }}/
- name: Compare the tests
working-directory: ${{ github.workspace }}/${{ env.DEV_DIR }}/doc
run: |
${{ github.workspace }}/.venv-dev/bin/python ./test-suite-diff.py ${{ github.workspace }}/${{ env.TEMP_DIR }}/${{ env.PR_DIR }}/ ${{ github.workspace }}/${{ env.TEMP_DIR }}/${{ env.DEV_DIR }}/ ${{ github.workspace }}/${{ env.OUTPUT_DIR }}/
ls -al
- name: Round-trip evaluation
working-directory: ${{ github.workspace }}/${{ env.PR_DIR }}
run: |
${{ github.workspace }}/.venv-pr/bin/python doc/test-suite-roundtrip.py ${{ github.workspace }}/${{env.GH_PAGES_DIR}}/_tests ${{ github.workspace }}/${{ env.OUTPUT_DIR }}/
ls -al
- name: Upload results as artefacts
uses: actions/upload-artifact@v7
with:
name: test-suite-diff
path: ${{ github.workspace }}/${{ env.OUTPUT_DIR }}/
- name: Check existence of the log*.md files
id: check_files
uses: andstor/file-existence-action@v3
with:
files: "${{ github.workspace }}/${{ env.OUTPUT_DIR }}/log*.md"
- name: Show the list of changes detected
if: steps.check_files.outputs.files_exists == 'true'
run: |
if [ -e ${{ github.workspace }}/${{ env.OUTPUT_DIR }}/log.md ]
then
echo "This is the list of tests for which a PNG change has been detected:"
cat ${{ github.workspace }}/${{ env.OUTPUT_DIR }}/log.md
fi
if [ -e ${{ github.workspace }}/${{ env.OUTPUT_DIR }}/log_midi.md ]
then
echo "This is the list of tests for which a MIDI change has been detected:"
cat ${{ github.workspace }}/${{ env.OUTPUT_DIR }}/log_midi.md
fi