From 85eacd21634b833dbd7ebf15fb5cbfc94be42dd4 Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Sat, 5 Nov 2016 12:43:00 -0400 Subject: [PATCH 1/3] Makefile: add easy target for validation Hopefully soon adding integration tests for the cli Signed-off-by: Vincent Batts --- Makefile | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..acf4e18 --- /dev/null +++ b/Makefile @@ -0,0 +1,35 @@ + +SOURCE_FILES := $(shell find . -type f -name "*.go") + +default: validation build + +.PHONY: validation +validation: test lint vet + +.PHONY: test +test: .test + +.test: $(SOURCE_FILES) + go test -v ./... && touch $@ + +.PHONY: lint +lint: .lint + +.lint: $(SOURCE_FILES) + golint -set_exit_status ./... && touch $@ + +.PHONY: vet +vet: .vet + +.vet: $(SOURCE_FILES) + go vet ./... && touch $@ + +.PHONY: build +build: gomtree + +gomtree: $(SOURCE_FILES) + go build ./cmd/gomtree + +clean: + rm -rf gomtree + From b83c40e7f9f9c0910c03960a898a067947378613 Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Mon, 7 Nov 2016 09:53:24 -0500 Subject: [PATCH 2/3] test: add basic cli test tar and filesystem check Signed-off-by: Vincent Batts --- Makefile | 22 ++++++++++++++++------ test/cli/0001.sh | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 6 deletions(-) create mode 100644 test/cli/0001.sh diff --git a/Makefile b/Makefile index acf4e18..ed20a67 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,12 @@ +BUILD := gomtree +CWD := $(shell pwd) SOURCE_FILES := $(shell find . -type f -name "*.go") default: validation build .PHONY: validation -validation: test lint vet +validation: test lint vet .cli.test .PHONY: test test: .test @@ -24,12 +26,20 @@ vet: .vet .vet: $(SOURCE_FILES) go vet ./... && touch $@ -.PHONY: build -build: gomtree +.PHONY: cli.test +cli.test: .cli.test -gomtree: $(SOURCE_FILES) - go build ./cmd/gomtree +.cli.test: $(BUILD) $(wildcard ./test/cli/*.sh) + @ for test in ./test/cli/*.sh ; do \ + bash $$test $(CWD) ; \ + done && touch $@ + +.PHONY: build +build: $(BUILD) + +$(BUILD): $(SOURCE_FILES) + go build ./cmd/$(BUILD) clean: - rm -rf gomtree + rm -rf $(BUILD) .test .vet .lint .cli.test diff --git a/test/cli/0001.sh b/test/cli/0001.sh new file mode 100644 index 0000000..5119c1b --- /dev/null +++ b/test/cli/0001.sh @@ -0,0 +1,44 @@ +#!/bin/bash +set -e + +name=$(basename $0) +root=$1 +gomtree=$(readlink -f ${root}/gomtree) +t=$(mktemp -d /tmp/go-mtree.XXXXXX) + +echo "[${name}] Running in ${t}" +# This test is for basic running check of manifest, and check against tar and file system +# + +pushd ${root} + +git archive --format=tar HEAD^{tree} . > ${t}/${name}.tar + +prev_umask=$(umask) +umask 0 # this is so the tar command can set the mode's properly +mkdir -p ${t}/extract +tar -C ${t}/extract/ -xf ${t}/${name}.tar +umask ${prev_umask} + +# create manifest from tar +${gomtree} -K sha256digest -c -T ${t}/${name}.tar > ${t}/${name}.mtree + +# check tar-manifest against the tar +${gomtree} -f ${t}/${name}.mtree -T ${t}/${name}.tar + +# check tar-manifest against the filesystem +# git archive makes the uid/gid as 0, so don't check them for this test +${gomtree} -k size,sha256digest,mode,type -f ${t}/${name}.mtree -p ${t}/extract/ + +# create a manifest from filesystem +${gomtree} -K sha256digest -c -p ${t}/extract/ > ${t}/${name}.mtree + +# check filesystem-manifest against the filesystem +${gomtree} -f ${t}/${name}.mtree -p ${t}/extract/ + +# check filesystem-manifest against the tar +# git archive makes the uid/gid as 0, so don't check them for this test +${gomtree} -k size,sha256digest,mode,type -f ${t}/${name}.mtree -T ${t}/${name}.tar + +popd +rm -rf ${t} From 0805fd4bb1ff6bca9be5aa27fff832af69421793 Mon Sep 17 00:00:00 2001 From: Vincent Batts Date: Mon, 7 Nov 2016 10:25:35 -0500 Subject: [PATCH 3/3] travis: use the whole validation Signed-off-by: Vincent Batts --- .travis.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index cd6410b..25ba43e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,4 @@ before_install: install: true script: - - go vet -x ./... - - golint -set_exit_status ./... - - go test -v ./... + - make validation