Skip to content

Commit a6c479a

Browse files
author
Zsolt Borbély
committed
Fix precommit: should check all combinations of the options.
Now the precommit checks only the {release,debug} native targets and unittests with all combinations. Because testing on every target needs a lots of efforts, added a new target called "precommit_heavy". This target checks all targets with every combinations. JerryScript-DCO-1.0-Signed-off-by: Zsolt Borbély [email protected]
1 parent 2c3c952 commit a6c479a

File tree

2 files changed

+49
-6
lines changed

2 files changed

+49
-6
lines changed

Makefile

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ export JERRY_STM32F4_TARGETS = $(foreach __MODE,$(TARGET_DEBUG_MODES),$(foreach
131131
$(foreach __MODE,$(TARGET_RELEASE_MODES),$(foreach __SYSTEM,$(TARGET_STM32F4_MODS),$(__MODE).$(__SYSTEM)))
132132

133133
export JERRY_TARGETS = $(JERRY_NATIVE_TARGETS) $(JERRY_STM32F3_TARGETS) $(JERRY_STM32F4_TARGETS) unittests
134+
export JERRY_TARGETS_LIGHT = $(PRECOMMIT_CHECK_TARGETS_LIST) unittests
134135

135136
export CHECK_TARGETS = $(foreach __TARGET,$(JERRY_NATIVE_TARGETS),$(__TARGET).check)
136137
export FLASH_TARGETS = $(foreach __TARGET,$(JERRY_STM32F3_TARGETS) $(JERRY_STM32F4_TARGETS),$(__TARGET).flash)
@@ -144,10 +145,18 @@ export SHELL=/bin/bash
144145
PRECOMMIT_CHECK_TARGETS_LIST := debug.$(TARGET_NATIVE_SYSTEMS) release.$(TARGET_NATIVE_SYSTEMS)
145146

146147
# Building all options combinations
147-
OPTIONS_COMBINATIONS := $(foreach __OPTION,ON OFF,$(__COMBINATION)-VALGRIND-$(__OPTION))
148-
OPTIONS_COMBINATIONS := $(foreach __COMBINATION,$(OPTIONS_COMBINATIONS),$(foreach __OPTION,ON OFF,$(__COMBINATION)-VALGRIND_FREYA-$(__OPTION)))
149-
OPTIONS_COMBINATIONS := $(foreach __COMBINATION,$(OPTIONS_COMBINATIONS),$(foreach __OPTION,ON OFF,$(__COMBINATION)-LTO-$(__OPTION)))
150-
OPTIONS_COMBINATIONS := $(foreach __COMBINATION,$(OPTIONS_COMBINATIONS),$(foreach __OPTION,ON OFF,$(__COMBINATION)-ALL_IN_ONE-$(__OPTION)))
148+
# Valgrind and Valgrind-Freya doesn't compatible with each other, therefore we should skip these combinations.
149+
OPTIONS_COMBINATIONS1 := $(foreach __OPTION,OFF,$(__COMBINATION)-VALGRIND-$(__OPTION))
150+
OPTIONS_COMBINATIONS1 := $(foreach __COMBINATION,$(OPTIONS_COMBINATIONS1),$(foreach __OPTION,ON OFF,$(__COMBINATION)-VALGRIND_FREYA-$(__OPTION)))
151+
OPTIONS_COMBINATIONS1 := $(foreach __COMBINATION,$(OPTIONS_COMBINATIONS1),$(foreach __OPTION,ON OFF,$(__COMBINATION)-LTO-$(__OPTION)))
152+
OPTIONS_COMBINATIONS1 := $(foreach __COMBINATION,$(OPTIONS_COMBINATIONS1),$(foreach __OPTION,ON OFF,$(__COMBINATION)-ALL_IN_ONE-$(__OPTION)))
153+
154+
OPTIONS_COMBINATIONS2 := $(foreach __OPTION,ON,$(__COMBINATION)-VALGRIND-$(__OPTION))
155+
OPTIONS_COMBINATIONS2 := $(foreach __COMBINATION,$(OPTIONS_COMBINATIONS2),$(foreach __OPTION,OFF,$(__COMBINATION)-VALGRIND_FREYA-$(__OPTION)))
156+
OPTIONS_COMBINATIONS2 := $(foreach __COMBINATION,$(OPTIONS_COMBINATIONS2),$(foreach __OPTION,ON OFF,$(__COMBINATION)-LTO-$(__OPTION)))
157+
OPTIONS_COMBINATIONS2 := $(foreach __COMBINATION,$(OPTIONS_COMBINATIONS2),$(foreach __OPTION,ON OFF,$(__COMBINATION)-ALL_IN_ONE-$(__OPTION)))
158+
159+
OPTIONS_COMBINATIONS := $(OPTIONS_COMBINATIONS1) $(OPTIONS_COMBINATIONS2)
151160

152161
# Building current options string
153162
OPTIONS_STRING := -VALGRIND-$(VALGRIND)-VALGRIND_FREYA-$(VALGRIND_FREYA)-LTO-$(LTO)-ALL_IN_ONE-$(ALL_IN_ONE)
@@ -312,7 +321,11 @@ log: ./tools/git-scripts/log.sh
312321

313322
.PHONY: precommit
314323
precommit: clean prerequisites
315-
$(Q) ./tools/precommit.sh "$(MAKE)" "$(OUT_DIR)" "$(PRECOMMIT_CHECK_TARGETS_LIST)"
324+
$(Q) ./tools/precommit.sh "$(MAKE)" "$(OUT_DIR)" "$(PRECOMMIT_CHECK_TARGETS_LIST)" "$(JERRY_TARGETS_LIGHT)" "$(OPTIONS_COMBINATIONS)"
325+
326+
.PHONY: precommit_heavy
327+
precommit_heavy: clean prerequisites
328+
$(Q) ./tools/precommit.sh "$(MAKE)" "$(OUT_DIR)" "$(PRECOMMIT_CHECK_TARGETS_LIST)" "$(JERRY_TARGETS)" "$(OPTIONS_COMBINATIONS)"
316329

317330
.PHONY: unittests_run
318331
unittests_run: unittests

tools/precommit.sh

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ shift
2323
TARGETS="$1"
2424
shift
2525

26+
JERRY_TARGETS="$1"
27+
shift
28+
29+
OPTIONS_COMBINATIONS="$1"
30+
shift
31+
2632
commit_hash=`git show -s --format=%H HEAD`
2733
author_name=`git show -s --format=%an HEAD`
2834
author_email=`git show -s --format=%ae HEAD`
@@ -51,7 +57,31 @@ then
5157
fi
5258

5359
echo -e "\nBuilding...\n\n"
54-
$MAKE STATIC_CHECK=ON build || exit 1
60+
61+
static_check="OFF"
62+
for target in ${JERRY_TARGETS}; do
63+
if [[ "$target" =~ "debug" ]] || [[ "$target" =~ "unittests" ]]
64+
then
65+
static_check="ON"
66+
else
67+
static_check="OFF"
68+
fi
69+
70+
for combination in ${OPTIONS_COMBINATIONS}; do
71+
# Split the options-string on '-' delimiter into 'options' array
72+
options=(${combination//-/ })
73+
length=${#options[@]}
74+
curr_options=""
75+
76+
# Specify option-value pairs
77+
for ((i=0; i<${length}; i+=2)); do
78+
curr_options+="${options[i]}=${options[i+1]} "
79+
done;
80+
81+
$MAKE STATIC_CHECK=${static_check} ${curr_options} ${target} || exit 1
82+
done;
83+
done;
84+
5585
echo -e "\n================ Build completed successfully. Running precommit tests ================\n"
5686
echo -e "All targets were built successfully. Starting unit tests' run.\n"
5787
$MAKE unittests_run || exit 1

0 commit comments

Comments
 (0)