mirror of https://github.com/docker/docs.git
Engine: basic testing harness
This commit is contained in:
parent
0d1a825137
commit
2a29bf6245
|
@ -0,0 +1,29 @@
|
||||||
|
package engine
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestNewJob(t *testing.T) {
|
||||||
|
job := mkJob(t, "dummy", "--level=awesome")
|
||||||
|
if job.Name != "dummy" {
|
||||||
|
t.Fatalf("Wrong job name: %s", job.Name)
|
||||||
|
}
|
||||||
|
if len(job.Args) != 1 {
|
||||||
|
t.Fatalf("Wrong number of job arguments: %d", len(job.Args))
|
||||||
|
}
|
||||||
|
if job.Args[0] != "--level=awesome" {
|
||||||
|
t.Fatalf("Wrong job arguments: %s", job.Args[0])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSetenv(t *testing.T) {
|
||||||
|
job := mkJob(t, "dummy")
|
||||||
|
job.Setenv("foo", "bar")
|
||||||
|
if val := job.Getenv("foo"); val != "bar" {
|
||||||
|
t.Fatalf("Getenv returns incorrect value: %s", val)
|
||||||
|
}
|
||||||
|
if val := job.Getenv("nonexistent"); val != "" {
|
||||||
|
t.Fatalf("Getenv returns incorrect value: %s", val)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package engine
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
"runtime"
|
||||||
|
"strings"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"github.com/dotcloud/docker/utils"
|
||||||
|
)
|
||||||
|
|
||||||
|
var globalTestID string
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
Register("dummy", func(job *Job) string { return ""; })
|
||||||
|
}
|
||||||
|
|
||||||
|
func mkEngine(t *testing.T) *Engine {
|
||||||
|
// Use the caller function name as a prefix.
|
||||||
|
// This helps trace temp directories back to their test.
|
||||||
|
pc, _, _, _ := runtime.Caller(1)
|
||||||
|
callerLongName := runtime.FuncForPC(pc).Name()
|
||||||
|
parts := strings.Split(callerLongName, ".")
|
||||||
|
callerShortName := parts[len(parts)-1]
|
||||||
|
if globalTestID == "" {
|
||||||
|
globalTestID = utils.RandomString()[:4]
|
||||||
|
}
|
||||||
|
prefix := fmt.Sprintf("docker-test%s-%s-", globalTestID, callerShortName)
|
||||||
|
root, err := ioutil.TempDir("", prefix)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
eng, err := New(root)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
return eng
|
||||||
|
}
|
||||||
|
|
||||||
|
func mkJob(t *testing.T, name string, args ...string) *Job {
|
||||||
|
job, err := mkEngine(t).Job(name, args...)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
return job
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package utils
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"crypto/rand"
|
||||||
|
"encoding/hex"
|
||||||
|
)
|
||||||
|
|
||||||
|
func RandomString() string {
|
||||||
|
id := make([]byte, 32)
|
||||||
|
_, err := io.ReadFull(rand.Reader, id)
|
||||||
|
if err != nil {
|
||||||
|
panic(err) // This shouldn't happen
|
||||||
|
}
|
||||||
|
return hex.EncodeToString(id)
|
||||||
|
}
|
Loading…
Reference in New Issue