forked from RustPython/RustPython
-
Notifications
You must be signed in to change notification settings - Fork 0
/
pdc.sh
executable file
·75 lines (58 loc) · 1.94 KB
/
pdc.sh
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
# Pre Delivery Check - or PDC for short - runs all build and check steps.
# The intention is to run all checks before delivering (or raising a PR or committing or what ever you want to use it for).
#
# PDC executes all of the configured actions in the given order and reports which of them failed,
# without stopping in case of an fail.
# The actions in the given version are the RustPython CI steps plus a debug build in advance.
# So you can run all of the checks in advance with one command.
#
# If you want to customize it or adapt the checks, just add or remove it from/ to the ACTIONS
# Preparation steps run before the first action is executed
# Typically we clear here the python cache to prevent dirty
# test results from cached python programs.
PRE_GLOBAL=("clear_pycache")
# Postprocessing steps run after the last ACTION has finished
POST_GLOBAL=()
# Preprocessing steps run before each action is executed
PRE_ACT=()
# Postprocessing steps run after each action is executed
POST_ACT=()
ACTIONS=("cargo build" "cargo build --release" "cargo fmt --all" "cargo clippy --all -- -Dwarnings" "cargo test --all" "cargo run --release -- -m test -v" "cd extra_tests" "pytest" "cd ..")
# Usually, there should be no need to adapt the remaining file, when adding or removing actions.
# clears the python cache or RustPython
clear_pycache() { find . -name __pycache__ -type d -exec rm -r {} \; ; }
RUSTPYTHONPATH=Lib
export RUSTPYTHONPATH
ACT_RES=0
FAILS=()
for pre in "${PRE_GLOBAL[@]}"; do
$pre
done
for act in "${ACTIONS[@]}"; do
for pre in "${PRE_ACTION[@]}"; do
$pre
done
$act
if ! [ $? -eq 0 ]; then
ACT_RES=1
FAILS+=("${act}")
fi
for pst in "${POST_ACTION[@]}"; do
$pst
done
done
for pst in "${POST_GLOBAL[@]}"; do
$pst
done
echo
echo
echo "*********************"
if ! [ $ACT_RES -eq 0 ]; then
echo "PDC failed"
for el in "${FAILS[@]}"; do
echo " Fail ${el}"
done
echo
else
echo "PDC passed"
fi