make.bat: Makefile-like test functionality for Windows

Add make.bat which has the same test functionality as the Makefile.

Makes it easier to run tests from the command prompt on Windows
platforms.
This commit is contained in:
Emil Hessman 2015-01-29 09:56:08 +01:00
parent 680fa3c0d8
commit 9fc6b2ee5b
1 changed files with 98 additions and 0 deletions

98
make.bat Normal file
View File

@ -0,0 +1,98 @@
@echo off
setlocal
set _EXITCODE=0
REM If no target is provided, default to test.
if [%1]==[] goto test
set _TARGETS=generate,test,testacc,testrace,updatedeps,vet
REM Run target.
for %%a in (%_TARGETS%) do (if x%1==x%%a goto %%a)
goto usage
REM generate runs `go generate` to build the dynamically generated
REM source files.
:generate
go generate ./...
goto :eof
REM test runs the unit tests and vets the code.
:test
call :testsetup
go test %_TEST% %TESTARGS% -timeout=30s -parallel=4
call :setMaxExitCode %ERRORLEVEL%
echo.
goto vet
REM testacc runs acceptance tests.
:testacc
call :testsetup
if x%_TEST% == x./... goto testacc_fail
if x%_TEST% == x.\... goto testacc_fail
set TF_ACC=1
go test %_TEST% -v %TESTARGS% -timeout 45m
exit /b %ERRORLEVEL%
:testacc_fail
echo ERROR: Set TEST to a specific package.
exit /b 1
REM testrace runs the race checker.
:testrace
call :testsetup
go test -race %_TEST% %TESTARGS%
exit /b %ERRORLEVEL%
REM testsetup calls `go generate` and defines the variables TF_ACC
REM and _TEST. TF_ACC is always cleared. _TEST defaults to the value
REM of the TEST environment variable, provided that TEST is defined,
REM otherwise _TEST it is set to "./...".
:testsetup
call :generate
set TF_ACC=
set _TEST=./...
if defined TEST set _TEST=%TEST%
goto :eof
REM updatedeps installs all the dependencies that Terraform needs to
REM run and build.
:updatedeps
for /f "tokens=*" %%c in ('git symbolic-ref --short HEAD 2^>nul ^|^| git rev-parse HEAD') do set _REF=%%c
go get -u github.com/mitchellh/gox
go get -u golang.org/x/tools/cmd/stringer
go get -f -u -v ./...
call :setMaxExitCode %ERRORLEVEL%
git checkout %_REF% 1>nul 2>&1
exit /b %_EXITCODE%
REM vet runs the Go source code static analysis tool `vet` to find
REM any common errors.
:vet
set _VETARGS=-asmdecl -atomic -bool -buildtags -copylocks -methods -nilfunc -printf -rangeloops -shift -structtags -unsafeptr
if defined VETARGS set _VETARGS=%VETARGS%
go tool vet 2>nul
if %ERRORLEVEL% equ 3 go get golang.org/x/tools/cmd/vet
echo go tool vet %_VETARGS% .
go tool vet %_VETARGS% .
set _vetExitCode=%ERRORLEVEL%
if %_vetExitCode% equ 0 exit /b %_EXITCODE%
call :setMaxExitCode %_vetExitCode%
echo.
echo Vet found suspicious constructs. Please check the reported constructs
echo and fix them if necessary before submitting the code for reviewal.
exit /b %_EXITCODE%
:setMaxExitCode
if %1 gtr %_EXITCODE% set _EXITCODE=%1
goto :eof
:usage
echo usage: make [target]
echo.
echo target is in {%_TARGETS%}.
echo target defaults to test if none is provided.
exit /b 2
goto :eof