mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
testutil: make testing packages public
This was done with something along the lines of:
```
mv internal/test testutil
pushd testutil/; grep -IRl "package test" | xargs -I '{}' sed -i -e 's|package test|package testutil|g' {}; popd
mv internal/testutil/*.go testutil/ && rm -rf internal/
grep -IRl "github.com\/docker\/docker\/internal\/test" | xargs -I '{}' sed -i -e 's|github.com/docker/docker/internal/test|github.com/docker/docker/test|g' {}
goimports .
```
I also modified the basic plugin path in testutil/fixtures/plugin.
Signed-off-by: Sam Whited <sam@samwhited.com>
This commit is contained in:
parent
cd9e4ec240
commit
b37c214e3c
132 changed files with 262 additions and 259 deletions
131
testutil/fakecontext/context.go
Normal file
131
testutil/fakecontext/context.go
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
package fakecontext // import "github.com/docker/docker/testutil/fakecontext"
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/docker/docker/pkg/archive"
|
||||
"github.com/docker/docker/testutil"
|
||||
)
|
||||
|
||||
type testingT interface {
|
||||
Fatal(args ...interface{})
|
||||
Fatalf(string, ...interface{})
|
||||
}
|
||||
|
||||
// New creates a fake build context
|
||||
func New(t testingT, dir string, modifiers ...func(*Fake) error) *Fake {
|
||||
if ht, ok := t.(testutil.HelperT); ok {
|
||||
ht.Helper()
|
||||
}
|
||||
fakeContext := &Fake{Dir: dir}
|
||||
if dir == "" {
|
||||
if err := newDir(fakeContext); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
for _, modifier := range modifiers {
|
||||
if err := modifier(fakeContext); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
return fakeContext
|
||||
}
|
||||
|
||||
func newDir(fake *Fake) error {
|
||||
tmp, err := ioutil.TempDir("", "fake-context")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := os.Chmod(tmp, 0755); err != nil {
|
||||
return err
|
||||
}
|
||||
fake.Dir = tmp
|
||||
return nil
|
||||
}
|
||||
|
||||
// WithFile adds the specified file (with content) in the build context
|
||||
func WithFile(name, content string) func(*Fake) error {
|
||||
return func(ctx *Fake) error {
|
||||
return ctx.Add(name, content)
|
||||
}
|
||||
}
|
||||
|
||||
// WithDockerfile adds the specified content as Dockerfile in the build context
|
||||
func WithDockerfile(content string) func(*Fake) error {
|
||||
return WithFile("Dockerfile", content)
|
||||
}
|
||||
|
||||
// WithFiles adds the specified files in the build context, content is a string
|
||||
func WithFiles(files map[string]string) func(*Fake) error {
|
||||
return func(fakeContext *Fake) error {
|
||||
for file, content := range files {
|
||||
if err := fakeContext.Add(file, content); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// WithBinaryFiles adds the specified files in the build context, content is binary
|
||||
func WithBinaryFiles(files map[string]*bytes.Buffer) func(*Fake) error {
|
||||
return func(fakeContext *Fake) error {
|
||||
for file, content := range files {
|
||||
if err := fakeContext.Add(file, content.String()); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// Fake creates directories that can be used as a build context
|
||||
type Fake struct {
|
||||
Dir string
|
||||
}
|
||||
|
||||
// Add a file at a path, creating directories where necessary
|
||||
func (f *Fake) Add(file, content string) error {
|
||||
return f.addFile(file, []byte(content))
|
||||
}
|
||||
|
||||
func (f *Fake) addFile(file string, content []byte) error {
|
||||
fp := filepath.Join(f.Dir, filepath.FromSlash(file))
|
||||
dirpath := filepath.Dir(fp)
|
||||
if dirpath != "." {
|
||||
if err := os.MkdirAll(dirpath, 0755); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return ioutil.WriteFile(fp, content, 0644)
|
||||
|
||||
}
|
||||
|
||||
// Delete a file at a path
|
||||
func (f *Fake) Delete(file string) error {
|
||||
fp := filepath.Join(f.Dir, filepath.FromSlash(file))
|
||||
return os.RemoveAll(fp)
|
||||
}
|
||||
|
||||
// Close deletes the context
|
||||
func (f *Fake) Close() error {
|
||||
return os.RemoveAll(f.Dir)
|
||||
}
|
||||
|
||||
// AsTarReader returns a ReadCloser with the contents of Dir as a tar archive.
|
||||
func (f *Fake) AsTarReader(t testingT) io.ReadCloser {
|
||||
if ht, ok := t.(testutil.HelperT); ok {
|
||||
ht.Helper()
|
||||
}
|
||||
reader, err := archive.TarWithOptions(f.Dir, &archive.TarOptions{})
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to create tar from %s: %s", f.Dir, err)
|
||||
}
|
||||
return reader
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue