This pull request switches testing to use an actual docker daemon, vs mocking everything out. It may also catch actual breaking issues in our tests, which is great!
68 lines
2.3 KiB
Makefile
68 lines
2.3 KiB
Makefile
SYSTEM := $(shell sh -c 'uname -s 2>/dev/null')
|
|
|
|
bats:
|
|
ifeq ($(SYSTEM),Darwin)
|
|
ifneq ($(shell bats --version >/dev/null 2>&1 ; echo $$?),0)
|
|
brew install bats-core
|
|
endif
|
|
else
|
|
git clone https://github.com/josegonzalez/bats-core.git /tmp/bats
|
|
cd /tmp/bats && sudo ./install.sh /usr/local
|
|
rm -rf /tmp/bats
|
|
endif
|
|
|
|
shellcheck:
|
|
ifneq ($(shell shellcheck --version >/dev/null 2>&1 ; echo $$?),0)
|
|
ifeq ($(SYSTEM),Darwin)
|
|
brew install shellcheck
|
|
else
|
|
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse'
|
|
sudo rm -rf /var/lib/apt/lists/* && sudo apt-get clean
|
|
sudo apt-get update -qq && sudo apt-get install -qq -y shellcheck
|
|
endif
|
|
endif
|
|
|
|
shfmt:
|
|
ifneq ($(shell shfmt --version >/dev/null 2>&1 ; echo $$?),0)
|
|
ifeq ($(shfmt),Darwin)
|
|
brew install shfmt
|
|
else
|
|
wget -qO /tmp/shfmt https://github.com/mvdan/sh/releases/download/v2.6.2/shfmt_v2.6.2_linux_amd64
|
|
chmod +x /tmp/shfmt
|
|
sudo mv /tmp/shfmt /usr/local/bin/shfmt
|
|
endif
|
|
endif
|
|
|
|
readlink:
|
|
ifeq ($(shell uname),Darwin)
|
|
ifeq ($(shell greadlink > /dev/null 2>&1 ; echo $$?),127)
|
|
brew install coreutils
|
|
endif
|
|
ln -nfs `which greadlink` tests/bin/readlink
|
|
endif
|
|
|
|
ci-dependencies: shellcheck bats readlink
|
|
|
|
lint-setup:
|
|
@mkdir -p test-results/shellcheck tmp/shellcheck
|
|
@find . -not -path '*/\.*' -type f | xargs file | grep text | awk -F ':' '{ print $$1 }' | xargs head -n1 | egrep -B1 "bash" | grep "==>" | awk '{ print $$2 }' > tmp/shellcheck/test-files
|
|
@cat tests/shellcheck-exclude | sed -n -e '/^# SC/p' | cut -d' ' -f2 | paste -d, -s - > tmp/shellcheck/exclude
|
|
|
|
lint: lint-setup
|
|
# these are disabled due to their expansive existence in the codebase. we should clean it up though
|
|
@cat tests/shellcheck-exclude | sed -n -e '/^# SC/p'
|
|
@echo linting...
|
|
@cat tmp/shellcheck/test-files | xargs shellcheck -e $(shell cat tmp/shellcheck/exclude) | tests/shellcheck-to-junit --output test-results/shellcheck/results.xml --files tmp/shellcheck/test-files --exclude $(shell cat tmp/shellcheck/exclude)
|
|
|
|
unit-tests:
|
|
@echo running unit tests...
|
|
@mkdir -p test-results/bats
|
|
@cd tests && echo "executing tests: $(shell cd tests ; ls *.bats | xargs)"
|
|
cd tests && bats --formatter bats-format-junit -e -T -o ../test-results/bats *.bats
|
|
|
|
setup:
|
|
bash tests/setup.sh
|
|
$(MAKE) ci-dependencies
|
|
|
|
test: lint unit-tests
|