import ( "context" "crypto/sha1" "encoding/base64" "io/ioutil" "os" "testing" "time" "github.com/stretchr/testify/assert" "cli" ) var tenSecondsTime = 10 * time.Second var tenSeconds = cli.Duration(tenSecondsTime) func TestCollapseHash(t *testing.T) { // Test that these two come out differently input1 := [sha1.Size * 4]byte{} input2 := [sha1.Size * 4]byte{} for i := 0; i < sha1.Size; i++ { input1[i] = byte(i) input2[i] = byte(i * 2) } output1 := CollapseHash(input1[:]) output2 := CollapseHash(input2[:]) assert.NotEqual(t, output1, output2) } func TestCollapseHash2(t *testing.T) {
func TestExecWithTimeoutDeadline(t *testing.T) { out, err := ExecWithTimeoutSimple(cli.Duration(0*time.Second), "sleep", "10") assert.Error(t, err) assert.True(t, err == context.DeadlineExceeded) assert.Equal(t, 0, len(out)) }
func DefaultConfiguration() *Configuration { config := Configuration{} config.Please.Location = "~/.please" config.Please.SelfUpdate = true config.Please.DownloadLocation = "https://get.please.build" config.Please.Lang = "en_GB.UTF-8" // Not the language of the UI, the language passed to rules. config.Please.Nonce = "1402" // Arbitrary nonce to invalidate config when needed. config.Build.Timeout = cli.Duration(10 * time.Minute) config.Build.Config = "opt" // Optimised builds by default config.Build.FallbackConfig = "opt" // Optimised builds as a fallback on any target that doesn't have a matching one set config.Cache.HttpTimeout = cli.Duration(5 * time.Second) config.Cache.RpcTimeout = cli.Duration(5 * time.Second) config.Cache.Dir = ".plz-cache" config.Cache.DirCacheHighWaterMark = "10G" config.Cache.DirCacheLowWaterMark = "8G" config.Cache.Workers = runtime.NumCPU() + 2 // Mirrors the number of workers in please.go. config.Cache.RpcMaxMsgSize.UnmarshalFlag("200MiB") config.Metrics.PushFrequency = cli.Duration(400 * time.Millisecond) config.Metrics.PushTimeout = cli.Duration(500 * time.Millisecond) config.Test.Timeout = cli.Duration(10 * time.Minute) config.Test.DefaultContainer = TestContainerDocker config.Docker.DefaultImage = "ubuntu:trusty" config.Docker.AllowLocalFallback = false config.Docker.Timeout = cli.Duration(20 * time.Minute) config.Docker.ResultsTimeout = cli.Duration(20 * time.Second) config.Docker.RemoveTimeout = cli.Duration(20 * time.Second) config.Go.CgoCCTool = "gcc" config.Go.GoVersion = "1.6" config.Go.GoPath = "$TMP_DIR:$TMP_DIR/src:$TMP_DIR/third_party/go" config.Python.PipTool = "pip" config.Python.DefaultInterpreter = "python" config.Python.UsePyPI = true // Annoyingly pip on OSX doesn't seem to work with this flag (you get the dreaded // "must supply either home or prefix/exec-prefix" error). Goodness knows why *adding* this // flag - which otherwise seems exactly what we want - provokes that error, but the logic // of pip is rather a mystery to me. if runtime.GOOS != "darwin" { config.Python.PipFlags = "--isolated" } config.Java.JavacTool = "javac" config.Java.DefaultTestPackage = "" config.Java.SourceLevel = "8" config.Java.TargetLevel = "8" config.Java.DefaultMavenRepo = "https://repo1.maven.org/maven2" config.Java.JavacFlags = "-Werror -Xlint:-options" // bootstrap class path warnings are pervasive without this. config.Cpp.CCTool = "gcc" config.Cpp.CppTool = "g++" config.Cpp.LdTool = "ld" config.Cpp.ArTool = "ar" config.Cpp.AsmTool = "nasm" config.Cpp.DefaultOptCflags = "--std=c99 -O3 -pipe -DNDEBUG -Wall -Wextra -Werror" config.Cpp.DefaultDbgCflags = "--std=c99 -g3 -pipe -DDEBUG -Wall -Wextra -Werror" config.Cpp.DefaultOptCppflags = "--std=c++11 -O3 -pipe -DNDEBUG -Wall -Wextra -Werror" config.Cpp.DefaultDbgCppflags = "--std=c++11 -g3 -pipe -DDEBUG -Wall -Wextra -Werror" config.Cpp.Coverage = true config.Proto.ProtocTool = "protoc" // We're using the most common names for these; typically gRPC installs the builtin plugins // as grpc_python_plugin etc. config.Proto.ProtocGoPlugin = "protoc-gen-go" config.Proto.GrpcPythonPlugin = "grpc_python_plugin" config.Proto.GrpcJavaPlugin = "protoc-gen-grpc-java" config.Proto.GrpcCCPlugin = "grpc_cpp_plugin" config.Proto.PythonDep = "//third_party/python:protobuf" config.Proto.JavaDep = "//third_party/java:protobuf" config.Proto.GoDep = "//third_party/go:protobuf" config.Proto.PythonGrpcDep = "//third_party/python:grpc" config.Proto.JavaGrpcDep = "//third_party/java:grpc-all" config.Proto.GoGrpcDep = "//third_party/go:grpc" return &config }