[#81] makefile to check for unused test data

This change adds logic to the docker-image-unit-tests to ensure that
code is checked within the container for coverage, valid test data,
and reduces the number of containers created in the gate - reducing
the runtime of each gate.

Relates-To: #81

Change-Id: Iab3d9bd74266d32404e6eb06ecebc234df04fd5c
Signed-off-by: Alexander Hughes <Alexander.Hughes@pm.me>
This commit is contained in:
Alexander Hughes 2020-03-03 11:25:27 -05:00
parent d852d2db1a
commit abb28716c8
4 changed files with 48 additions and 11 deletions

View File

@ -11,7 +11,7 @@ RUN go mod download
COPY . /usr/src/airshipctl/ COPY . /usr/src/airshipctl/
ARG MAKE_TARGET=build ARG MAKE_TARGET=build
RUN make ${MAKE_TARGET} RUN for target in $MAKE_TARGET; do make $target; done
FROM ${RELEASE_IMAGE} as release FROM ${RELEASE_IMAGE} as release
COPY --from=builder /usr/src/airshipctl/bin/airshipctl /usr/local/bin/airshipctl COPY --from=builder /usr/src/airshipctl/bin/airshipctl /usr/local/bin/airshipctl

View File

@ -127,6 +127,11 @@ endif
print-docker-image-tag: print-docker-image-tag:
@echo "$(DOCKER_IMAGE)" @echo "$(DOCKER_IMAGE)"
.PHONY: docker-image-test-suite
docker-image-test-suite: DOCKER_MAKE_TARGET = "lint cover update-golden check-git-diff"
docker-image-test-suite: DOCKER_TARGET_STAGE = builder
docker-image-test-suite: docker-image
.PHONY: docker-image-unit-tests .PHONY: docker-image-unit-tests
docker-image-unit-tests: DOCKER_MAKE_TARGET = cover docker-image-unit-tests: DOCKER_MAKE_TARGET = cover
docker-image-unit-tests: DOCKER_TARGET_STAGE = builder docker-image-unit-tests: DOCKER_TARGET_STAGE = builder
@ -176,3 +181,8 @@ update-golden: unit-tests
.PHONY: delete-golden .PHONY: delete-golden
delete-golden: delete-golden:
@find . -type f -name "*.golden" -delete @find . -type f -name "*.golden" -delete
# Used by gates after unit-tests and update-golden targets to ensure no files are deleted.
.PHONY: check-git-diff
check-git-diff:
@./tools/git_diff_check

View File

@ -12,16 +12,9 @@
- hosts: primary - hosts: primary
tasks: tasks:
- name: Run Linter - name: Run Linter, Unit Tests, Verify Golden Testdata
block: block:
- name: "make docker-image-lint" - name: "make docker-image-test-suite"
make: make:
chdir: "{{ zuul.project.src_dir }}" chdir: "{{ zuul.project.src_dir }}"
target: docker-image-lint target: docker-image-test-suite
- name: Run Unit Tests
block:
- name: "make docker-image-unit-tests"
make:
chdir: "{{ zuul.project.src_dir }}"
target: docker-image-unit-tests

34
tools/git_diff_check Executable file
View File

@ -0,0 +1,34 @@
#!/bin/bash
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
# Update git index
git update-index -q --ignore-submodules --refresh
# Evaluate git files for difference, if found print message and fail.
git diff-files --quiet --ignore-submodules
if [ $? -ne 0 ]
then
echo "git diff found modified test cases, please run make update-golden"
exit 1
fi
# Evaluate git index for differences, if found print message and fail.
git diff-index --cached --quiet --ignore-submodules HEAD --
if [ $? -ne 0 ]
then
echo "git diff found modified test cases, please run make update-golden"
exit 1
fi
echo "no git diff detected, make target completed successfully"