Merge pull request #888 from ceh/bat-make
make.bat: Makefile-like test functionality for Windows
This commit is contained in:
commit
f9e3cafcc5
|
@ -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
|
Loading…
Reference in New Issue