$(...) can be function calls in GNU Make.
${...} are always variable references
define ADD_TEST_EAP_OUTPUT
$(OUTPUT)/${1}:
- $(Q)mkdir -p $$@
+ ${Q}mkdir -p $$@
endef
#
$(eval $(call RADIUSD_SERVICE,radiusd,$(OUTPUT)))
$(TEST).trigger_clear:
- $(Q)rm -f $(BUILD_DIR)/tests/ldap_sync/active_directory/sync_started
+ ${Q}rm -f $(BUILD_DIR)/tests/ldap_sync/active_directory/sync_started
#
# There is a delay of up to 30 seconds looking for the output file
$(eval OUT := $(shell grep "#.*OUT:" $< | cut -f2 -d ':'))
$(eval OUT_DIR := $(BUILD_DIR)/tests/ldap_sync/active_directory)
- $(Q)echo "LDAPSYNC-TEST active_directory $(TARGET)"
- $(Q)[ -f $(dir $@)/radiusd.pid ] || exit 1
- $(Q)rm -f $(OUT_DIR)/$(OUT).out
+ ${Q}echo "LDAPSYNC-TEST active_directory $(TARGET)"
+ ${Q}[ -f $(dir $@)/radiusd.pid ] || exit 1
+ ${Q}rm -f $(OUT_DIR)/$(OUT).out
# Wait for the sync to start before applying changes
-# $(Q)i=0; while [ $$i -lt 100 ] ; \
+# ${Q}i=0; while [ $$i -lt 100 ] ; \
# do if [ -e $(OUT_DIR)/sync_started ]; \
# then \
# break; \
# sleep .1; \
# i=$$((i+1)); \
# done;
- $(Q)sleep 1
+ ${Q}sleep 1
- $(Q)$<
- $(Q)i=0; while [ $$i -lt 600 ] ; \
+ ${Q}$<
+ ${Q}i=0; while [ $$i -lt 600 ] ; \
do if [ -e $(OUT_DIR)/$(OUT).out ] ; \
then \
break; \
sleep .1; \
i=$$((i+1)); \
done ;
- $(Q)sleep .5
- $(Q)mv $(OUT_DIR)/$(OUT).out $(FOUND)
+ ${Q}sleep .5
+ ${Q}mv $(OUT_DIR)/$(OUT).out $(FOUND)
- $(Q)if [ -e "$(EXPECTED)" ] && ! cmp -s $(FOUND) $(EXPECTED); then \
+ ${Q}if [ -e "$(EXPECTED)" ] && ! cmp -s $(FOUND) $(EXPECTED); then \
echo "LDAP_SYNC FAILED $@"; \
rm -rf $(BUILD_DIR)/tests/test.ldap_sync/active_directory; \
$(MAKE) --no-print-directory test.ldap_sync/active_directory.radiusd_kill; \
exit 1; \
fi
- $(Q)touch $@
+ ${Q}touch $@
$(TEST):
- $(Q)$(MAKE) --no-print-directory $@.radiusd_stop
+ ${Q}$(MAKE) --no-print-directory $@.radiusd_stop
@touch $(BUILD_DIR)/tests/$@
$(eval $(call RADIUSD_SERVICE,radiusd,$(OUTPUT)))
$(TEST).trigger_clear:
- $(Q)rm -f $(BUILD_DIR)/tests/ldap_sync/persistent_search/sync_started
+ ${Q}rm -f $(BUILD_DIR)/tests/ldap_sync/persistent_search/sync_started
$(OUTPUT)/%: $(DIR)/% | $(TEST).trigger_clear $(TEST).radiusd_kill $(TEST).radiusd_start
$(eval TARGET := $(notdir $<))
$(eval OUT_DIR := $(BUILD_DIR)/tests/ldap_sync/persistent_search)
$(eval OUT := $(shell grep "#.*OUT:" $< | cut -f2 -d ':'))
- $(Q)echo "LDAPSYNC-TEST persistent_search $(TARGET)"
- $(Q)[ -f $(dir $@)/radiusd.pid ] || exit 1
- $(Q)rm -f $(OUT_DIR)/$(OUT).out
+ ${Q}echo "LDAPSYNC-TEST persistent_search $(TARGET)"
+ ${Q}[ -f $(dir $@)/radiusd.pid ] || exit 1
+ ${Q}rm -f $(OUT_DIR)/$(OUT).out
# Wait for the sync to start before applying changes
-# $(Q)i=0; while [ $$i -lt 100 ] ; \
+# ${Q}i=0; while [ $$i -lt 100 ] ; \
# do if [ -e $(OUT_DIR)/sync_started ] ; \
# then \
# break; \
# sleep .1; \
# i=$$((i+1)); \
# done;
- $(Q)sleep 1
+ ${Q}sleep 1
- $(Q)ldapmodify $(ARGV) -f $< > /dev/null
- $(Q)i=0; while [ $$i -lt 600 ] ; \
+ ${Q}ldapmodify $(ARGV) -f $< > /dev/null
+ ${Q}i=0; while [ $$i -lt 600 ] ; \
do if [ -e $(OUT_DIR)/$(OUT).out ] ; \
then \
break; \
sleep .1; \
i=$$((i+1)); \
done ;
- $(Q)sleep .1
- $(Q)mv $(OUT_DIR)/$(OUT).out $(FOUND)
+ ${Q}sleep .1
+ ${Q}mv $(OUT_DIR)/$(OUT).out $(FOUND)
- $(Q)if [ -e "$(EXPECTED)" ] && ! cmp -s $(FOUND) $(EXPECTED); then \
+ ${Q}if [ -e "$(EXPECTED)" ] && ! cmp -s $(FOUND) $(EXPECTED); then \
echo "LDAP_SYNC FAILED $@"; \
rm -rf $(BUILD_DIR)/tests/test.ldap_sync/persistent_search; \
$(MAKE) --no-print-directory test.ldap_sync/persistent_search.radiusd_kill; \
exit 1; \
fi
- $(Q)touch $@
+ ${Q}touch $@
$(TEST):
- $(Q)$(MAKE) --no-print-directory $@.radiusd_stop
+ ${Q}$(MAKE) --no-print-directory $@.radiusd_stop
@touch $(BUILD_DIR)/tests/$@
$(eval $(call RADIUSD_SERVICE,radiusd,$(OUTPUT)))
$(TEST).trigger_clear:
- $(Q)rm -f $(BUILD_DIR)/tests/ldap_sync/rfc4533/sync_started
+ ${Q}rm -f $(BUILD_DIR)/tests/ldap_sync/rfc4533/sync_started
$(OUTPUT)/%: $(DIR)/% | $(TEST).trigger_clear $(TEST).radiusd_kill $(TEST).radiusd_start
$(eval TARGET := $(notdir $<))
$(eval OUT_DIR := $(BUILD_DIR)/tests/ldap_sync/rfc4533)
$(eval OUT := $(shell grep "#.*OUT:" $< | cut -f2 -d ':'))
- $(Q)echo "LDAPSYNC-TEST rfc4533 $(TARGET)"
- $(Q)[ -f $(dir $@)/radiusd.pid ] || exit 1
- $(Q)rm -f $(OUT_DIR)/$(OUT).out
+ ${Q}echo "LDAPSYNC-TEST rfc4533 $(TARGET)"
+ ${Q}[ -f $(dir $@)/radiusd.pid ] || exit 1
+ ${Q}rm -f $(OUT_DIR)/$(OUT).out
# Wait for the sync to start before applying changes
- $(Q)i=0; while [ $$i -lt 100 ] ; \
+ ${Q}i=0; while [ $$i -lt 100 ] ; \
do if [ -e $(OUT_DIR)/sync_started ]; \
then \
break; \
i=$$((i+1)); \
done ;
- $(Q)ldapmodify $(ARGV) -f $< > /dev/null
- $(Q)i=0; while [ $$i -lt 600 ] ; \
+ ${Q}ldapmodify $(ARGV) -f $< > /dev/null
+ ${Q}i=0; while [ $$i -lt 600 ] ; \
do if [ -e $(OUT_DIR)/$(OUT).out ] ; \
then \
break; \
sleep .1; \
i=$$((i+1)); \
done ;
- $(Q)sleep .1
- $(Q)mv $(OUT_DIR)/$(OUT).out $(FOUND)
- $(Q)if [ -e "$(EXPECTED)" ] && ! cmp -s $(FOUND) $(EXPECTED); then \
+ ${Q}sleep .1
+ ${Q}mv $(OUT_DIR)/$(OUT).out $(FOUND)
+ ${Q}if [ -e "$(EXPECTED)" ] && ! cmp -s $(FOUND) $(EXPECTED); then \
echo "LDAP_SYNC FAILED $@"; \
rm -rf $(BUILD_DIR)/tests/test.ldap_sync/rfc4533; \
$(MAKE) --no-print-directory test.ldap_sync/rfc4533.radiusd_kill; \
exit 1; \
fi
- $(Q)touch $@
+ ${Q}touch $@
$(TEST):
$(eval OUT_DIR := $(BUILD_DIR)/tests/ldap_sync/rfc4533)
- $(Q)$(MAKE) --no-print-directory $@.radiusd_stop
+ ${Q}$(MAKE) --no-print-directory $@.radiusd_stop
#
# Once all the individual tests are run, there should be cookies in the cookie log.
# Since the tests open two searches, and each receives the cookeis, it can be more than
# number of tests / 2.
#
- $(Q)echo "LDAPSYNC-TEST rfc4533 cookie"
- $(Q)if [ ! -e $(OUT_DIR)/cookielog.out ]; then \
+ ${Q}echo "LDAPSYNC-TEST rfc4533 cookie"
+ ${Q}if [ ! -e $(OUT_DIR)/cookielog.out ]; then \
echo "LDAP_SYNC FAILED $@ - no cookie stored"; \
exit 1; \
fi
- $(Q)if [ `grep -v -P 'Cookie = rid=\d{3},csn=\d{14}\.\d{6}Z#\d{6}#\d{3}#\d{6}' $(OUT_DIR)/cookielog.out | wc -l` -ne 0 ]; then \
+ ${Q}if [ `grep -v -P 'Cookie = rid=\d{3},csn=\d{14}\.\d{6}Z#\d{6}#\d{3}#\d{6}' $(OUT_DIR)/cookielog.out | wc -l` -ne 0 ]; then \
echo "LDAP_SYNC FAILED $@ - invalid cookie stored"; \
rm -f $(BUILD_DIR)/tests/test.ldap_sync/rfc4533; \
$(MAKE) --no-print-direcotry test.ldap_sync/rfc4533.radiusd_kill; \
exit 1; \
fi
- $(Q)if [ "`cat $(OUT_DIR)/cookielog.out | wc -l`" -lt "`expr $(TEST_COUNT) / 2`" ]; then \
+ ${Q}if [ "`cat $(OUT_DIR)/cookielog.out | wc -l`" -lt "`expr $(TEST_COUNT) / 2`" ]; then \
echo "LDAP_SYNC_FAILED $@ - insufficient cookies stored"; \
exit 1; \
fi
$(eval IGNORE_ERROR := $(shell grep -q "#.*IGNORE_ERROR:.*1" $< && echo 1 || echo 0))
$(eval RADCLIENT_CLIENT_PORT := $(shell echo $$(($(RADCLIENT_CLIENT_PORT)+1))))
- $(Q)echo "RADCLIENT-TEST INPUT=$(TARGET) ARGV=\"$(ARGV)\""
- $(Q)[ -f $(dir $@)/radiusd.pid ] || exit 1
- $(Q)if ! $(TEST_BIN)/radclient $(ARGV) -C $(RADCLIENT_CLIENT_PORT) -f $< -d src/tests/radclient/config -D share/dictionary 127.0.0.1:$(radclient_port) $(TYPE) $(SECRET) 1> $(FOUND) 2>&1; then \
+ ${Q}echo "RADCLIENT-TEST INPUT=$(TARGET) ARGV=\"$(ARGV)\""
+ ${Q}[ -f $(dir $@)/radiusd.pid ] || exit 1
+ ${Q}if ! $(TEST_BIN)/radclient $(ARGV) -C $(RADCLIENT_CLIENT_PORT) -f $< -d src/tests/radclient/config -D share/dictionary 127.0.0.1:$(radclient_port) $(TYPE) $(SECRET) 1> $(FOUND) 2>&1; then \
if [ "$(IGNORE_ERROR)" != "1" ]; then \
echo "FAILED"; \
cat $(FOUND); \
#
# Lets normalize the loopback interface on OSX and FreeBSD
#
- $(Q)if [ "$$(uname -s)" = "Darwin" ]; then sed -i.bak 's/via lo0/via lo/g' $(FOUND); fi
- $(Q)if [ "$$(uname -s)" = "FreeBSD" ]; then sed -i.bak 's/via (null)/via lo/g' $(FOUND); fi
+ ${Q}if [ "$$(uname -s)" = "Darwin" ]; then sed -i.bak 's/via lo0/via lo/g' $(FOUND); fi
+ ${Q}if [ "$$(uname -s)" = "FreeBSD" ]; then sed -i.bak 's/via (null)/via lo/g' $(FOUND); fi
#
# Remove all entries with "^_EXIT.*CALLED .*/"
# It is necessary to match all builds with/without -DNDEBUG
#
- $(Q)sed -i.bak '/^_EXIT.*CALLED .*/d' $(FOUND)
+ ${Q}sed -i.bak '/^_EXIT.*CALLED .*/d' $(FOUND)
#
# Ignore spurious output from jlibtool when VERBOSE=1
#
- $(Q)sed -i.bak '$${/Executing: /d;}' $(FOUND)
+ ${Q}sed -i.bak '$${/Executing: /d;}' $(FOUND)
#
# Checking.
#
# or
# 2. call the script src/test/radclient/$test.cmd to validate the build/test/radclient/$test.out
#
- $(Q)if [ -e "$(EXPECTED)" ] && ! diff -I 'Sent' -I 'Received' $(EXPECTED) $(FOUND); then \
+ ${Q}if [ -e "$(EXPECTED)" ] && ! diff -I 'Sent' -I 'Received' $(EXPECTED) $(FOUND); then \
echo "RADCLIENT FAILED $@"; \
echo "RADIUSD: $(RADIUSD_RUN)"; \
echo "RADCLIENT: $(TEST_BIN)/radclient $(ARGV) -C $(RADCLIENT_CLIENT_PORT) -f $< -d src/tests/radclient/config -D share/dictionary 127.0.0.1:$(radclient_port) $(TYPE) $(SECRET)"; \
$(MAKE) --no-print-directory test.radclient.radiusd_kill; \
exit 1; \
fi
- $(Q)touch $@
+ ${Q}touch $@
.NO_PARALLEL: $(TEST)
$(TEST):
- $(Q)$(MAKE) --no-print-directory $@.radiusd_stop
+ ${Q}$(MAKE) --no-print-directory $@.radiusd_stop
@touch $(BUILD_DIR)/tests/$@
ifeq "$(GIT_HAS_LFS)" "no"
test.radsniff:
- $(Q)echo "WARNING: Can't execute 'test.radsniff' without 'git lfs' installed. ignoring."
+ ${Q}echo "WARNING: Can't execute 'test.radsniff' without 'git lfs' installed. ignoring."
else
#
#
.PRECIOUS: $(OUTPUT)/%.pcap
$(OUTPUT)/%.pcap: $(DIR)/%.pcap.gz
- $(Q)mkdir -p $(@D)
- $(Q)gunzip -c $< > $@
+ ${Q}mkdir -p $(@D)
+ ${Q}gunzip -c $< > $@
#
# Run the radsniff commands
$(eval EXPECTED := $<)
$(eval ARGV := $(shell grep "^#.*ARGV:" $< | cut -f2 -d ':'))
- $(Q)echo "RADSNIFF-TEST INPUT=$(TARGET) ARGV=\"$(ARGV)\""
+ ${Q}echo "RADSNIFF-TEST INPUT=$(TARGET) ARGV=\"$(ARGV)\""
#
# We need that 'TZ=UTC ...' to libpcap pass the same timestamp in anywhere.
#
- $(Q)if ! TZ='UTC' $(TEST_BIN)/radsniff $(ARGV) -I $(PCAP_IN) -D share/dictionary 1> $(FOUND); then \
+ ${Q}if ! TZ='UTC' $(TEST_BIN)/radsniff $(ARGV) -I $(PCAP_IN) -D share/dictionary 1> $(FOUND); then \
echo "FAILED"; \
cat $(FOUND); \
echo "RADSNIFF: TZ='UTC' $(TEST_BIN)/radsniff $(ARGV) -I $(PCAP_IN) -D share/dictionary" -xx; \
rm -f $@; \
exit 1; \
fi
- $(Q)if [ -e "$(EXPECTED)" ]; then \
+ ${Q}if [ -e "$(EXPECTED)" ]; then \
grep -v "^#" $(EXPECTED) > $(FOUND).result || true; \
sed -i.bak -e '$${/Executing: /d;}' $(FOUND); \
if ! cmp $(FOUND) $(FOUND).result; then \
echo "ERROR! We should have at least one .txt or .cmd test"; \
exit 1; \
fi
- $(Q)touch $@
+ ${Q}touch $@
endif
$(eval EXPECTED := $(patsubst %.txt,%.out,$<))
$(eval FOUND := $(patsubst %.txt,%.out,$@))
$(eval ARGV := $(shell grep "#.*ARGV:" $< | cut -f2 -d ':'))
- $(Q)echo "TACACS-TEST INPUT=$(TARGET) TACACS_ARGV=\"$(ARGV)\""
- $(Q)[ -f $(dir $@)/radiusd.pid ] || exit 1
- $(Q)if ! $(TACCLIENT) --return-0-if-failed -v -k $(SECRET) -p $(tacacs_port) -H localhost -r 192.168.69.1 -P pegapilha/0 --timeout 2 $(ARGV) 1> $(FOUND) 2>&1; then \
+ ${Q}echo "TACACS-TEST INPUT=$(TARGET) TACACS_ARGV=\"$(ARGV)\""
+ ${Q}[ -f $(dir $@)/radiusd.pid ] || exit 1
+ ${Q}if ! $(TACCLIENT) --return-0-if-failed -v -k $(SECRET) -p $(tacacs_port) -H localhost -r 192.168.69.1 -P pegapilha/0 --timeout 2 $(ARGV) 1> $(FOUND) 2>&1; then \
echo "FAILED"; \
cat $(FOUND); \
rm -f $(BUILD_DIR)/tests/test.tacacs; \
#
# 1. diff between src/test/tacacs/$test.out & build/test/tacacs/$test.out
#
- $(Q)if [ -e "$(EXPECTED)" ] && ! cmp -s $(FOUND) $(EXPECTED); then \
+ ${Q}if [ -e "$(EXPECTED)" ] && ! cmp -s $(FOUND) $(EXPECTED); then \
echo "TACCLIENT FAILED $@"; \
echo "RADIUSD: $(RADIUSD_RUN)"; \
echo "TACCLIENT: $(TACCLIENT) --return-0-if-failed -v -k $(SECRET) -p $(tacacs_port) -H localhost -r 192.168.69.1 -P pegapilha/0 --timeout 2 $(ARGV)"; \
$(MAKE) --no-print-directory test.tacacs.radiusd_kill; \
exit 1; \
fi
- $(Q)touch $@
+ ${Q}touch $@
$(TEST):
- $(Q)$(MAKE) --no-print-directory $@.radiusd_stop
+ ${Q}$(MAKE) --no-print-directory $@.radiusd_stop
@touch $(BUILD_DIR)/tests/$@
else
.PHONY: test.tacacs
test.tacacs:
- $(Q)echo "WARNING: 'tests.tacacs' requires 'tacacs_plus' Python3 module. e.g: pip3 install tacacs_plus"
- $(Q)echo "Skipping 'test.tacacs'"
+ ${Q}echo "WARNING: 'tests.tacacs' requires 'tacacs_plus' Python3 module. e.g: pip3 install tacacs_plus"
+ ${Q}echo "Skipping 'test.tacacs'"
.PHONY: clean.test.tacacs
clean.test.tacacs:
$(eval EXPECTED := $(patsubst %.txt,%.out,$<))
$(eval FOUND := $(patsubst %.txt,%.out,$@))
$(eval ARGV := $(shell grep "#.*ARGV:" $< | cut -f2 -d ':'))
- $(Q)echo "VMPS-TEST INPUT=$(TARGET) VMPS_ARGV=\"$(ARGV)\""
- $(Q)[ -f $(dir $@)/radiusd.pid ] || exit 1
- $(Q)if ! $(VQCLI) -s 127.0.0.1 -p $(vmps_port) $(ARGV) 1> $(FOUND) 2>&1; then \
+ ${Q}echo "VMPS-TEST INPUT=$(TARGET) VMPS_ARGV=\"$(ARGV)\""
+ ${Q}[ -f $(dir $@)/radiusd.pid ] || exit 1
+ ${Q}if ! $(VQCLI) -s 127.0.0.1 -p $(vmps_port) $(ARGV) 1> $(FOUND) 2>&1; then \
echo "FAILED"; \
cat $(FOUND); \
rm -f $(BUILD_DIR)/tests/test.vmps; \
#
# 1. diff between src/test/vmps/$test.out & build/test/vmps/$test.out
#
- $(Q)if [ -e "$(EXPECTED)" ] && ! cmp -s $(FOUND) $(EXPECTED); then \
+ ${Q}if [ -e "$(EXPECTED)" ] && ! cmp -s $(FOUND) $(EXPECTED); then \
echo "VMPS FAILED $@"; \
echo "RADIUSD: $(RADIUSD_RUN)"; \
echo "VQCLI: $(VQCLI) -s 127.0.0.1 -p $(PORT) $(ARGV)"; \
$(MAKE) --no-print-directory test.vmps.radiusd_kill; \
exit 1; \
fi
- $(Q)touch $@
+ ${Q}touch $@
$(TEST):
- $(Q)$(MAKE) --no-print-directory $@.radiusd_stop
+ ${Q}$(MAKE) --no-print-directory $@.radiusd_stop
@touch $(BUILD_DIR)/tests/$@