-
Notifications
You must be signed in to change notification settings - Fork 220
136 lines (115 loc) · 5.23 KB
/
Copy pathtests_build.yml
File metadata and controls
136 lines (115 loc) · 5.23 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
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@v6.0.2
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 pip install build diffimg jsondiff lxml xmldiff cairosvg
- name: Checkout the dev branch
uses: actions/checkout@v6.0.2
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 }}/bindings
run: |
cmake ../cmake -DNO_HUMDRUM_SUPPORT=ON -DNO_ABC_SUPPORT=ON -DNO_PAE_SUPPORT=ON -DBUILD_AS_PYTHON=ON -DVRV_DYNAMIC_CAST=ON -B python
cd python
make -j8
python3 ../../doc/test-suite.py ${{ github.workspace }}/${{env.GH_PAGES_DIR}}/_tests ${{ github.workspace }}/${{ env.TEMP_DIR }}/${{ env.DEV_DIR }}/
python3 ../../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@v6.0.2
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: |
python3 -m build --wheel
python3 -m pip install --force-reinstall dist/*.whl
python3 doc/test-suite.py ${{ github.workspace }}/${{env.GH_PAGES_DIR}}/_tests ${{ github.workspace }}/${{ env.TEMP_DIR }}/${{ env.PR_DIR }}/
python3 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: |
python3 ./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: |
python3 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 file
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: |
echo "This is the list of tests for which a change has been detected:"
cat ${{ github.workspace }}/${{ env.OUTPUT_DIR }}/log.md