-
Notifications
You must be signed in to change notification settings - Fork 899
160 lines (147 loc) · 4.96 KB
/
code_style.yaml
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
149
150
151
152
153
154
155
156
157
158
159
name: Code style
"on":
push:
branches:
- main
- prerelease_test
pull_request:
jobs:
cmake_checks:
name: Check CMake files
runs-on: ubuntu-22.04
steps:
- name: Install prerequisites
run: pip install cmakelang
- name: Checkout source
uses: actions/checkout@v4
- name: Run format on CMake files
run: |
find -name CMakeLists.txt -exec cmake-format -i {} +
find src test tsl -name '*.cmake' -exec cmake-format -i {} +
- name: Check for diff
run: git diff --exit-code
perl_checks:
name: Check Perl code in tree
runs-on: ubuntu-22.04
steps:
- name: Install prerequisites
run: sudo apt install perltidy
- name: Checkout source
uses: actions/checkout@v4
- name: Check trailing whitespace
if: always()
run: |
find . -name '*.p[lm]' -exec perl -pi -e 's/[ \t]+$//' {} +
git diff --exit-code
- name: Format Perl files, if needed
if: always()
run: |
find . -name '*.p[lm]' -exec perltidy -b -bext=/ {} +
git diff --exit-code
yaml_checks:
name: Check YAML code in tree
runs-on: ubuntu-latest
steps:
- name: Install prerequisites
run: |
pip install yamllint
- name: Checkout source
uses: actions/checkout@v4
- name: Run yamllint
run: |
find . -type f \( -name "*.yaml" -or -name "*.yml" \) -print -exec yamllint {} \+
spelling_checks:
name: Check spelling
runs-on: ubuntu-latest
steps:
- name: Install prerequisites
run: |
pip install codespell
- name: Checkout source
uses: actions/checkout@v4
- name: Run codespell
run: |
find . -type f \( -name "*.c" -or -name "*.h" -or -name "*.yaml" -or -name "*.yml" -or -name "*.sh" -or -name "*.cmake" -or -name "*.py" -or -name "*.pl" -or -name "CMakeLists.txt" \) \
-exec codespell -I .github/codespell-ignore-words {} \+
cc_checks:
name: Check code formatting
runs-on: ubuntu-22.04
strategy:
fail-fast: false
steps:
- name: Checkout source
uses: actions/checkout@v4
- name: Check trailing whitespace
if: always()
run: |
find . -type f -regex '.*\.\(c\|h\|sql\|sql\.in\)$' -exec perl -pi -e 's/[ \t]+$//' {} +
git diff --exit-code
- name: Check code formatting
if: always()
run: |
sudo apt install clang-format-14
sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-14 100
sudo update-alternatives --set clang-format /usr/bin/clang-format-14
./scripts/clang_format_all.sh
git diff --exit-code
python_checks:
name: Check Python code in tree
runs-on: ubuntu-latest
steps:
- name: Install prerequisites
run: |
pip install --upgrade pip
# Inexplicably, at some point pip started to insist on installing
# prospector==1.7.7, which is incompatible with the new pylint.
# Also pin the version of the other tools so that they don't fail
# sporadically when a new version becomes available.
pip install black prospector==1.8.4 pylint==2.16.0 dodgy==0.2.1 \
mccabe==0.7.0 pycodestyle==2.9.1 pyflakes==2.5.0 \
psutil pygithub pglast
pip list
pip list --user
# Using e375302a until 1.10.1 get released including the following PR
# https://github.com/postgrespro/testgres/pull/125
- name: Checkout testgres
uses: actions/checkout@v4
with:
repository: 'postgrespro/testgres'
path: 'testgres'
ref: e375302a114cd4df3ceed54d6526f250c44c08e7
- name: Build and install testgres
run: |
cd testgres
python setup.py install --user
- name: Checkout source
uses: actions/checkout@v4
- name: Run prospector
run: |
find . -type f -name "*.py" -print -exec prospector {} + -exec black {} +
git diff --exit-code
misc_checks:
name: Check license, update scripts, git hooks, missing gitignore entries and unnecessary template tests
runs-on: ubuntu-22.04
strategy:
fail-fast: false
steps:
- name: Checkout source
if: always()
uses: actions/checkout@v4
- name: Check license
if: always()
run: ./scripts/check_license_all.sh
- name: Check git commit hooks
if: always()
run: |
./scripts/githooks/commit_msg_tests.py
- name: Check for unreferenced test files
if: always()
run: ./scripts/check_unreferenced_files.sh
- name: Check for missing gitignore entries for template test files
if: always()
run: |
./bootstrap
./scripts/check_missing_gitignore_for_template_tests.sh
- name: Check for unnecessary template test files
if: always()
run: ./scripts/check_unecessary_template_tests.sh