diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json
index 6028c3d4a..dfdcbc655 100644
--- a/Godeps/Godeps.json
+++ b/Godeps/Godeps.json
@@ -1,7 +1,7 @@
{
"ImportPath": "github.com/opencontainers/runtime-tools",
- "GoVersion": "go1.4",
- "GodepVersion": "v75",
+ "GoVersion": "go1.8",
+ "GodepVersion": "v79",
"Packages": [
"./..."
],
diff --git a/Godeps/_workspace/.gitignore b/Godeps/_workspace/.gitignore
deleted file mode 100644
index f037d684e..000000000
--- a/Godeps/_workspace/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/pkg
-/bin
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/entry_test.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/entry_test.go
deleted file mode 100644
index f7de400a3..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/entry_test.go
+++ /dev/null
@@ -1,67 +0,0 @@
-package logrus
-
-import (
- "bytes"
- "fmt"
- "testing"
-
- "github.com/stretchr/testify/assert"
-)
-
-func TestEntryPanicln(t *testing.T) {
- errBoom := fmt.Errorf("boom time")
-
- defer func() {
- p := recover()
- assert.NotNil(t, p)
-
- switch pVal := p.(type) {
- case *Entry:
- assert.Equal(t, "kaboom", pVal.Message)
- assert.Equal(t, errBoom, pVal.Data["err"])
- default:
- t.Fatalf("want type *Entry, got %T: %#v", pVal, pVal)
- }
- }()
-
- logger := New()
- logger.Out = &bytes.Buffer{}
- entry := NewEntry(logger)
- entry.WithField("err", errBoom).Panicln("kaboom")
-}
-
-func TestEntryPanicf(t *testing.T) {
- errBoom := fmt.Errorf("boom again")
-
- defer func() {
- p := recover()
- assert.NotNil(t, p)
-
- switch pVal := p.(type) {
- case *Entry:
- assert.Equal(t, "kaboom true", pVal.Message)
- assert.Equal(t, errBoom, pVal.Data["err"])
- default:
- t.Fatalf("want type *Entry, got %T: %#v", pVal, pVal)
- }
- }()
-
- logger := New()
- logger.Out = &bytes.Buffer{}
- entry := NewEntry(logger)
- entry.WithField("err", errBoom).Panicf("kaboom %v", true)
-}
-
-func TestEntryLogLevel(t *testing.T) {
- out := &bytes.Buffer{}
- logger := New()
- logger.Out = out
- logger.Level = DebugLevel
- entry := NewEntry(logger)
- assert.Equal(t, DebugLevel, entry.Level)
- entry.Level = WarnLevel
- entry.Info("it should not be displayed")
- assert.Equal(t, "", out.String())
- entry.Warn("it should be displayed")
- assert.Contains(t, out.String(), "it should be displayed")
-}
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/examples/basic/basic.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/examples/basic/basic.go
deleted file mode 100644
index a1623ec00..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/examples/basic/basic.go
+++ /dev/null
@@ -1,50 +0,0 @@
-package main
-
-import (
- "github.com/Sirupsen/logrus"
-)
-
-var log = logrus.New()
-
-func init() {
- log.Formatter = new(logrus.JSONFormatter)
- log.Formatter = new(logrus.TextFormatter) // default
- log.Level = logrus.DebugLevel
-}
-
-func main() {
- defer func() {
- err := recover()
- if err != nil {
- log.WithFields(logrus.Fields{
- "omg": true,
- "err": err,
- "number": 100,
- }).Fatal("The ice breaks!")
- }
- }()
-
- log.WithFields(logrus.Fields{
- "animal": "walrus",
- "number": 8,
- }).Debug("Started observing beach")
-
- log.WithFields(logrus.Fields{
- "animal": "walrus",
- "size": 10,
- }).Info("A group of walrus emerges from the ocean")
-
- log.WithFields(logrus.Fields{
- "omg": true,
- "number": 122,
- }).Warn("The group's number increased tremendously!")
-
- log.WithFields(logrus.Fields{
- "temperature": -4,
- }).Debug("Temperature changes")
-
- log.WithFields(logrus.Fields{
- "animal": "orca",
- "size": 9009,
- }).Panic("It's over 9000!")
-}
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/examples/hook/hook.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/examples/hook/hook.go
deleted file mode 100644
index cb5759a35..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/examples/hook/hook.go
+++ /dev/null
@@ -1,30 +0,0 @@
-package main
-
-import (
- "github.com/Sirupsen/logrus"
- "github.com/Sirupsen/logrus/hooks/airbrake"
-)
-
-var log = logrus.New()
-
-func init() {
- log.Formatter = new(logrus.TextFormatter) // default
- log.Hooks.Add(airbrake.NewHook("https://example.com", "xyz", "development"))
-}
-
-func main() {
- log.WithFields(logrus.Fields{
- "animal": "walrus",
- "size": 10,
- }).Info("A group of walrus emerges from the ocean")
-
- log.WithFields(logrus.Fields{
- "omg": true,
- "number": 122,
- }).Warn("The group's number increased tremendously!")
-
- log.WithFields(logrus.Fields{
- "omg": true,
- "number": 100,
- }).Fatal("The ice breaks!")
-}
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/formatter_bench_test.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/formatter_bench_test.go
deleted file mode 100644
index c6d290c77..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/formatter_bench_test.go
+++ /dev/null
@@ -1,98 +0,0 @@
-package logrus
-
-import (
- "fmt"
- "testing"
- "time"
-)
-
-// smallFields is a small size data set for benchmarking
-var smallFields = Fields{
- "foo": "bar",
- "baz": "qux",
- "one": "two",
- "three": "four",
-}
-
-// largeFields is a large size data set for benchmarking
-var largeFields = Fields{
- "foo": "bar",
- "baz": "qux",
- "one": "two",
- "three": "four",
- "five": "six",
- "seven": "eight",
- "nine": "ten",
- "eleven": "twelve",
- "thirteen": "fourteen",
- "fifteen": "sixteen",
- "seventeen": "eighteen",
- "nineteen": "twenty",
- "a": "b",
- "c": "d",
- "e": "f",
- "g": "h",
- "i": "j",
- "k": "l",
- "m": "n",
- "o": "p",
- "q": "r",
- "s": "t",
- "u": "v",
- "w": "x",
- "y": "z",
- "this": "will",
- "make": "thirty",
- "entries": "yeah",
-}
-
-var errorFields = Fields{
- "foo": fmt.Errorf("bar"),
- "baz": fmt.Errorf("qux"),
-}
-
-func BenchmarkErrorTextFormatter(b *testing.B) {
- doBenchmark(b, &TextFormatter{DisableColors: true}, errorFields)
-}
-
-func BenchmarkSmallTextFormatter(b *testing.B) {
- doBenchmark(b, &TextFormatter{DisableColors: true}, smallFields)
-}
-
-func BenchmarkLargeTextFormatter(b *testing.B) {
- doBenchmark(b, &TextFormatter{DisableColors: true}, largeFields)
-}
-
-func BenchmarkSmallColoredTextFormatter(b *testing.B) {
- doBenchmark(b, &TextFormatter{ForceColors: true}, smallFields)
-}
-
-func BenchmarkLargeColoredTextFormatter(b *testing.B) {
- doBenchmark(b, &TextFormatter{ForceColors: true}, largeFields)
-}
-
-func BenchmarkSmallJSONFormatter(b *testing.B) {
- doBenchmark(b, &JSONFormatter{}, smallFields)
-}
-
-func BenchmarkLargeJSONFormatter(b *testing.B) {
- doBenchmark(b, &JSONFormatter{}, largeFields)
-}
-
-func doBenchmark(b *testing.B, formatter Formatter, fields Fields) {
- entry := &Entry{
- Time: time.Time{},
- Level: InfoLevel,
- Message: "message",
- Data: fields,
- }
- var d []byte
- var err error
- for i := 0; i < b.N; i++ {
- d, err = formatter.Format(entry)
- if err != nil {
- b.Fatal(err)
- }
- b.SetBytes(int64(len(d)))
- }
-}
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/formatters/logstash/logstash.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/formatters/logstash/logstash.go
deleted file mode 100644
index 8ea93ddf2..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/formatters/logstash/logstash.go
+++ /dev/null
@@ -1,56 +0,0 @@
-package logstash
-
-import (
- "encoding/json"
- "fmt"
-
- "github.com/Sirupsen/logrus"
-)
-
-// Formatter generates json in logstash format.
-// Logstash site: http://logstash.net/
-type LogstashFormatter struct {
- Type string // if not empty use for logstash type field.
-
- // TimestampFormat sets the format used for timestamps.
- TimestampFormat string
-}
-
-func (f *LogstashFormatter) Format(entry *logrus.Entry) ([]byte, error) {
- entry.Data["@version"] = 1
-
- if f.TimestampFormat == "" {
- f.TimestampFormat = logrus.DefaultTimestampFormat
- }
-
- entry.Data["@timestamp"] = entry.Time.Format(f.TimestampFormat)
-
- // set message field
- v, ok := entry.Data["message"]
- if ok {
- entry.Data["fields.message"] = v
- }
- entry.Data["message"] = entry.Message
-
- // set level field
- v, ok = entry.Data["level"]
- if ok {
- entry.Data["fields.level"] = v
- }
- entry.Data["level"] = entry.Level.String()
-
- // set type field
- if f.Type != "" {
- v, ok = entry.Data["type"]
- if ok {
- entry.Data["fields.type"] = v
- }
- entry.Data["type"] = f.Type
- }
-
- serialized, err := json.Marshal(entry.Data)
- if err != nil {
- return nil, fmt.Errorf("Failed to marshal fields to JSON, %v", err)
- }
- return append(serialized, '\n'), nil
-}
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/formatters/logstash/logstash_test.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/formatters/logstash/logstash_test.go
deleted file mode 100644
index d8814a0ea..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/formatters/logstash/logstash_test.go
+++ /dev/null
@@ -1,52 +0,0 @@
-package logstash
-
-import (
- "bytes"
- "encoding/json"
- "github.com/Sirupsen/logrus"
- "github.com/stretchr/testify/assert"
- "testing"
-)
-
-func TestLogstashFormatter(t *testing.T) {
- assert := assert.New(t)
-
- lf := LogstashFormatter{Type: "abc"}
-
- fields := logrus.Fields{
- "message": "def",
- "level": "ijk",
- "type": "lmn",
- "one": 1,
- "pi": 3.14,
- "bool": true,
- }
-
- entry := logrus.WithFields(fields)
- entry.Message = "msg"
- entry.Level = logrus.InfoLevel
-
- b, _ := lf.Format(entry)
-
- var data map[string]interface{}
- dec := json.NewDecoder(bytes.NewReader(b))
- dec.UseNumber()
- dec.Decode(&data)
-
- // base fields
- assert.Equal(json.Number("1"), data["@version"])
- assert.NotEmpty(data["@timestamp"])
- assert.Equal("abc", data["type"])
- assert.Equal("msg", data["message"])
- assert.Equal("info", data["level"])
-
- // substituted fields
- assert.Equal("def", data["fields.message"])
- assert.Equal("ijk", data["fields.level"])
- assert.Equal("lmn", data["fields.type"])
-
- // formats
- assert.Equal(json.Number("1"), data["one"])
- assert.Equal(json.Number("3.14"), data["pi"])
- assert.Equal(true, data["bool"])
-}
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hook_test.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/hook_test.go
deleted file mode 100644
index 13f34cb6f..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hook_test.go
+++ /dev/null
@@ -1,122 +0,0 @@
-package logrus
-
-import (
- "testing"
-
- "github.com/stretchr/testify/assert"
-)
-
-type TestHook struct {
- Fired bool
-}
-
-func (hook *TestHook) Fire(entry *Entry) error {
- hook.Fired = true
- return nil
-}
-
-func (hook *TestHook) Levels() []Level {
- return []Level{
- DebugLevel,
- InfoLevel,
- WarnLevel,
- ErrorLevel,
- FatalLevel,
- PanicLevel,
- }
-}
-
-func TestHookFires(t *testing.T) {
- hook := new(TestHook)
-
- LogAndAssertJSON(t, func(log *Logger) {
- log.Hooks.Add(hook)
- assert.Equal(t, hook.Fired, false)
-
- log.Print("test")
- }, func(fields Fields) {
- assert.Equal(t, hook.Fired, true)
- })
-}
-
-type ModifyHook struct {
-}
-
-func (hook *ModifyHook) Fire(entry *Entry) error {
- entry.Data["wow"] = "whale"
- return nil
-}
-
-func (hook *ModifyHook) Levels() []Level {
- return []Level{
- DebugLevel,
- InfoLevel,
- WarnLevel,
- ErrorLevel,
- FatalLevel,
- PanicLevel,
- }
-}
-
-func TestHookCanModifyEntry(t *testing.T) {
- hook := new(ModifyHook)
-
- LogAndAssertJSON(t, func(log *Logger) {
- log.Hooks.Add(hook)
- log.WithField("wow", "elephant").Print("test")
- }, func(fields Fields) {
- assert.Equal(t, fields["wow"], "whale")
- })
-}
-
-func TestCanFireMultipleHooks(t *testing.T) {
- hook1 := new(ModifyHook)
- hook2 := new(TestHook)
-
- LogAndAssertJSON(t, func(log *Logger) {
- log.Hooks.Add(hook1)
- log.Hooks.Add(hook2)
-
- log.WithField("wow", "elephant").Print("test")
- }, func(fields Fields) {
- assert.Equal(t, fields["wow"], "whale")
- assert.Equal(t, hook2.Fired, true)
- })
-}
-
-type ErrorHook struct {
- Fired bool
-}
-
-func (hook *ErrorHook) Fire(entry *Entry) error {
- hook.Fired = true
- return nil
-}
-
-func (hook *ErrorHook) Levels() []Level {
- return []Level{
- ErrorLevel,
- }
-}
-
-func TestErrorHookShouldntFireOnInfo(t *testing.T) {
- hook := new(ErrorHook)
-
- LogAndAssertJSON(t, func(log *Logger) {
- log.Hooks.Add(hook)
- log.Info("test")
- }, func(fields Fields) {
- assert.Equal(t, hook.Fired, false)
- })
-}
-
-func TestErrorHookShouldFireOnError(t *testing.T) {
- hook := new(ErrorHook)
-
- LogAndAssertJSON(t, func(log *Logger) {
- log.Hooks.Add(hook)
- log.Error("test")
- }, func(fields Fields) {
- assert.Equal(t, hook.Fired, true)
- })
-}
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/airbrake/airbrake.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/airbrake/airbrake.go
deleted file mode 100644
index b0502c335..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/airbrake/airbrake.go
+++ /dev/null
@@ -1,54 +0,0 @@
-package airbrake
-
-import (
- "errors"
- "fmt"
-
- "github.com/Sirupsen/logrus"
- "github.com/tobi/airbrake-go"
-)
-
-// AirbrakeHook to send exceptions to an exception-tracking service compatible
-// with the Airbrake API.
-type airbrakeHook struct {
- APIKey string
- Endpoint string
- Environment string
-}
-
-func NewHook(endpoint, apiKey, env string) *airbrakeHook {
- return &airbrakeHook{
- APIKey: apiKey,
- Endpoint: endpoint,
- Environment: env,
- }
-}
-
-func (hook *airbrakeHook) Fire(entry *logrus.Entry) error {
- airbrake.ApiKey = hook.APIKey
- airbrake.Endpoint = hook.Endpoint
- airbrake.Environment = hook.Environment
-
- var notifyErr error
- err, ok := entry.Data["error"].(error)
- if ok {
- notifyErr = err
- } else {
- notifyErr = errors.New(entry.Message)
- }
-
- airErr := airbrake.Notify(notifyErr)
- if airErr != nil {
- return fmt.Errorf("Failed to send error to Airbrake: %s", airErr)
- }
-
- return nil
-}
-
-func (hook *airbrakeHook) Levels() []logrus.Level {
- return []logrus.Level{
- logrus.ErrorLevel,
- logrus.FatalLevel,
- logrus.PanicLevel,
- }
-}
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/airbrake/airbrake_test.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/airbrake/airbrake_test.go
deleted file mode 100644
index 058a91e34..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/airbrake/airbrake_test.go
+++ /dev/null
@@ -1,133 +0,0 @@
-package airbrake
-
-import (
- "encoding/xml"
- "net/http"
- "net/http/httptest"
- "testing"
- "time"
-
- "github.com/Sirupsen/logrus"
-)
-
-type notice struct {
- Error NoticeError `xml:"error"`
-}
-type NoticeError struct {
- Class string `xml:"class"`
- Message string `xml:"message"`
-}
-
-type customErr struct {
- msg string
-}
-
-func (e *customErr) Error() string {
- return e.msg
-}
-
-const (
- testAPIKey = "abcxyz"
- testEnv = "development"
- expectedClass = "*airbrake.customErr"
- expectedMsg = "foo"
- unintendedMsg = "Airbrake will not see this string"
-)
-
-var (
- noticeError = make(chan NoticeError, 1)
-)
-
-// TestLogEntryMessageReceived checks if invoking Logrus' log.Error
-// method causes an XML payload containing the log entry message is received
-// by a HTTP server emulating an Airbrake-compatible endpoint.
-func TestLogEntryMessageReceived(t *testing.T) {
- log := logrus.New()
- ts := startAirbrakeServer(t)
- defer ts.Close()
-
- hook := NewHook(ts.URL, testAPIKey, "production")
- log.Hooks.Add(hook)
-
- log.Error(expectedMsg)
-
- select {
- case received := <-noticeError:
- if received.Message != expectedMsg {
- t.Errorf("Unexpected message received: %s", received.Message)
- }
- case <-time.After(time.Second):
- t.Error("Timed out; no notice received by Airbrake API")
- }
-}
-
-// TestLogEntryMessageReceived confirms that, when passing an error type using
-// logrus.Fields, a HTTP server emulating an Airbrake endpoint receives the
-// error message returned by the Error() method on the error interface
-// rather than the logrus.Entry.Message string.
-func TestLogEntryWithErrorReceived(t *testing.T) {
- log := logrus.New()
- ts := startAirbrakeServer(t)
- defer ts.Close()
-
- hook := NewHook(ts.URL, testAPIKey, "production")
- log.Hooks.Add(hook)
-
- log.WithFields(logrus.Fields{
- "error": &customErr{expectedMsg},
- }).Error(unintendedMsg)
-
- select {
- case received := <-noticeError:
- if received.Message != expectedMsg {
- t.Errorf("Unexpected message received: %s", received.Message)
- }
- if received.Class != expectedClass {
- t.Errorf("Unexpected error class: %s", received.Class)
- }
- case <-time.After(time.Second):
- t.Error("Timed out; no notice received by Airbrake API")
- }
-}
-
-// TestLogEntryWithNonErrorTypeNotReceived confirms that, when passing a
-// non-error type using logrus.Fields, a HTTP server emulating an Airbrake
-// endpoint receives the logrus.Entry.Message string.
-//
-// Only error types are supported when setting the 'error' field using
-// logrus.WithFields().
-func TestLogEntryWithNonErrorTypeNotReceived(t *testing.T) {
- log := logrus.New()
- ts := startAirbrakeServer(t)
- defer ts.Close()
-
- hook := NewHook(ts.URL, testAPIKey, "production")
- log.Hooks.Add(hook)
-
- log.WithFields(logrus.Fields{
- "error": expectedMsg,
- }).Error(unintendedMsg)
-
- select {
- case received := <-noticeError:
- if received.Message != unintendedMsg {
- t.Errorf("Unexpected message received: %s", received.Message)
- }
- case <-time.After(time.Second):
- t.Error("Timed out; no notice received by Airbrake API")
- }
-}
-
-func startAirbrakeServer(t *testing.T) *httptest.Server {
- ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- var notice notice
- if err := xml.NewDecoder(r.Body).Decode(¬ice); err != nil {
- t.Error(err)
- }
- r.Body.Close()
-
- noticeError <- notice.Error
- }))
-
- return ts
-}
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/bugsnag/bugsnag.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/bugsnag/bugsnag.go
deleted file mode 100644
index d20a0f54a..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/bugsnag/bugsnag.go
+++ /dev/null
@@ -1,68 +0,0 @@
-package logrus_bugsnag
-
-import (
- "errors"
-
- "github.com/Sirupsen/logrus"
- "github.com/bugsnag/bugsnag-go"
-)
-
-type bugsnagHook struct{}
-
-// ErrBugsnagUnconfigured is returned if NewBugsnagHook is called before
-// bugsnag.Configure. Bugsnag must be configured before the hook.
-var ErrBugsnagUnconfigured = errors.New("bugsnag must be configured before installing this logrus hook")
-
-// ErrBugsnagSendFailed indicates that the hook failed to submit an error to
-// bugsnag. The error was successfully generated, but `bugsnag.Notify()`
-// failed.
-type ErrBugsnagSendFailed struct {
- err error
-}
-
-func (e ErrBugsnagSendFailed) Error() string {
- return "failed to send error to Bugsnag: " + e.err.Error()
-}
-
-// NewBugsnagHook initializes a logrus hook which sends exceptions to an
-// exception-tracking service compatible with the Bugsnag API. Before using
-// this hook, you must call bugsnag.Configure(). The returned object should be
-// registered with a log via `AddHook()`
-//
-// Entries that trigger an Error, Fatal or Panic should now include an "error"
-// field to send to Bugsnag.
-func NewBugsnagHook() (*bugsnagHook, error) {
- if bugsnag.Config.APIKey == "" {
- return nil, ErrBugsnagUnconfigured
- }
- return &bugsnagHook{}, nil
-}
-
-// Fire forwards an error to Bugsnag. Given a logrus.Entry, it extracts the
-// "error" field (or the Message if the error isn't present) and sends it off.
-func (hook *bugsnagHook) Fire(entry *logrus.Entry) error {
- var notifyErr error
- err, ok := entry.Data["error"].(error)
- if ok {
- notifyErr = err
- } else {
- notifyErr = errors.New(entry.Message)
- }
-
- bugsnagErr := bugsnag.Notify(notifyErr)
- if bugsnagErr != nil {
- return ErrBugsnagSendFailed{bugsnagErr}
- }
-
- return nil
-}
-
-// Levels enumerates the log levels on which the error should be forwarded to
-// bugsnag: everything at or above the "Error" level.
-func (hook *bugsnagHook) Levels() []logrus.Level {
- return []logrus.Level{
- logrus.ErrorLevel,
- logrus.FatalLevel,
- logrus.PanicLevel,
- }
-}
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/bugsnag/bugsnag_test.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/bugsnag/bugsnag_test.go
deleted file mode 100644
index e9ea298d8..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/bugsnag/bugsnag_test.go
+++ /dev/null
@@ -1,64 +0,0 @@
-package logrus_bugsnag
-
-import (
- "encoding/json"
- "errors"
- "io/ioutil"
- "net/http"
- "net/http/httptest"
- "testing"
- "time"
-
- "github.com/Sirupsen/logrus"
- "github.com/bugsnag/bugsnag-go"
-)
-
-type notice struct {
- Events []struct {
- Exceptions []struct {
- Message string `json:"message"`
- } `json:"exceptions"`
- } `json:"events"`
-}
-
-func TestNoticeReceived(t *testing.T) {
- msg := make(chan string, 1)
- expectedMsg := "foo"
-
- ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- var notice notice
- data, _ := ioutil.ReadAll(r.Body)
- if err := json.Unmarshal(data, ¬ice); err != nil {
- t.Error(err)
- }
- _ = r.Body.Close()
-
- msg <- notice.Events[0].Exceptions[0].Message
- }))
- defer ts.Close()
-
- hook := &bugsnagHook{}
-
- bugsnag.Configure(bugsnag.Configuration{
- Endpoint: ts.URL,
- ReleaseStage: "production",
- APIKey: "12345678901234567890123456789012",
- Synchronous: true,
- })
-
- log := logrus.New()
- log.Hooks.Add(hook)
-
- log.WithFields(logrus.Fields{
- "error": errors.New(expectedMsg),
- }).Error("Bugsnag will not see this string")
-
- select {
- case received := <-msg:
- if received != expectedMsg {
- t.Errorf("Unexpected message received: %s", received)
- }
- case <-time.After(time.Second):
- t.Error("Timed out; no notice received by Bugsnag API")
- }
-}
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/papertrail/README.md b/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/papertrail/README.md
deleted file mode 100644
index ae61e9229..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/papertrail/README.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# Papertrail Hook for Logrus
-
-[Papertrail](https://papertrailapp.com) provides hosted log management. Once stored in Papertrail, you can [group](http://help.papertrailapp.com/kb/how-it-works/groups/) your logs on various dimensions, [search](http://help.papertrailapp.com/kb/how-it-works/search-syntax) them, and trigger [alerts](http://help.papertrailapp.com/kb/how-it-works/alerts).
-
-In most deployments, you'll want to send logs to Papertrail via their [remote_syslog](http://help.papertrailapp.com/kb/configuration/configuring-centralized-logging-from-text-log-files-in-unix/) daemon, which requires no application-specific configuration. This hook is intended for relatively low-volume logging, likely in managed cloud hosting deployments where installing `remote_syslog` is not possible.
-
-## Usage
-
-You can find your Papertrail UDP port on your [Papertrail account page](https://papertrailapp.com/account/destinations). Substitute it below for `YOUR_PAPERTRAIL_UDP_PORT`.
-
-For `YOUR_APP_NAME`, substitute a short string that will readily identify your application or service in the logs.
-
-```go
-import (
- "log/syslog"
- "github.com/Sirupsen/logrus"
- "github.com/Sirupsen/logrus/hooks/papertrail"
-)
-
-func main() {
- log := logrus.New()
- hook, err := logrus_papertrail.NewPapertrailHook("logs.papertrailapp.com", YOUR_PAPERTRAIL_UDP_PORT, YOUR_APP_NAME)
-
- if err == nil {
- log.Hooks.Add(hook)
- }
-}
-```
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/papertrail/papertrail.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/papertrail/papertrail.go
deleted file mode 100644
index c0f10c1bd..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/papertrail/papertrail.go
+++ /dev/null
@@ -1,55 +0,0 @@
-package logrus_papertrail
-
-import (
- "fmt"
- "net"
- "os"
- "time"
-
- "github.com/Sirupsen/logrus"
-)
-
-const (
- format = "Jan 2 15:04:05"
-)
-
-// PapertrailHook to send logs to a logging service compatible with the Papertrail API.
-type PapertrailHook struct {
- Host string
- Port int
- AppName string
- UDPConn net.Conn
-}
-
-// NewPapertrailHook creates a hook to be added to an instance of logger.
-func NewPapertrailHook(host string, port int, appName string) (*PapertrailHook, error) {
- conn, err := net.Dial("udp", fmt.Sprintf("%s:%d", host, port))
- return &PapertrailHook{host, port, appName, conn}, err
-}
-
-// Fire is called when a log event is fired.
-func (hook *PapertrailHook) Fire(entry *logrus.Entry) error {
- date := time.Now().Format(format)
- msg, _ := entry.String()
- payload := fmt.Sprintf("<22> %s %s: %s", date, hook.AppName, msg)
-
- bytesWritten, err := hook.UDPConn.Write([]byte(payload))
- if err != nil {
- fmt.Fprintf(os.Stderr, "Unable to send log line to Papertrail via UDP. Wrote %d bytes before error: %v", bytesWritten, err)
- return err
- }
-
- return nil
-}
-
-// Levels returns the available logging levels.
-func (hook *PapertrailHook) Levels() []logrus.Level {
- return []logrus.Level{
- logrus.PanicLevel,
- logrus.FatalLevel,
- logrus.ErrorLevel,
- logrus.WarnLevel,
- logrus.InfoLevel,
- logrus.DebugLevel,
- }
-}
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/papertrail/papertrail_test.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/papertrail/papertrail_test.go
deleted file mode 100644
index 96318d003..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/papertrail/papertrail_test.go
+++ /dev/null
@@ -1,26 +0,0 @@
-package logrus_papertrail
-
-import (
- "fmt"
- "testing"
-
- "github.com/Sirupsen/logrus"
- "github.com/stvp/go-udp-testing"
-)
-
-func TestWritingToUDP(t *testing.T) {
- port := 16661
- udp.SetAddr(fmt.Sprintf(":%d", port))
-
- hook, err := NewPapertrailHook("localhost", port, "test")
- if err != nil {
- t.Errorf("Unable to connect to local UDP server.")
- }
-
- log := logrus.New()
- log.Hooks.Add(hook)
-
- udp.ShouldReceive(t, "foo", func() {
- log.Info("foo")
- })
-}
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/sentry/README.md b/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/sentry/README.md
deleted file mode 100644
index 8b1f9a16f..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/sentry/README.md
+++ /dev/null
@@ -1,78 +0,0 @@
-# Sentry Hook for Logrus
-
-[Sentry](https://getsentry.com) provides both self-hosted and hosted
-solutions for exception tracking.
-Both client and server are
-[open source](https://github.com/getsentry/sentry).
-
-## Usage
-
-Every sentry application defined on the server gets a different
-[DSN](https://www.getsentry.com/docs/). In the example below replace
-`YOUR_DSN` with the one created for your application.
-
-```go
-import (
- "github.com/Sirupsen/logrus"
- "github.com/Sirupsen/logrus/hooks/sentry"
-)
-
-func main() {
- log := logrus.New()
- hook, err := logrus_sentry.NewSentryHook(YOUR_DSN, []logrus.Level{
- logrus.PanicLevel,
- logrus.FatalLevel,
- logrus.ErrorLevel,
- })
-
- if err == nil {
- log.Hooks.Add(hook)
- }
-}
-```
-
-If you wish to initialize a SentryHook with tags, you can use the `NewWithTagsSentryHook` constructor to provide default tags:
-
-```go
-tags := map[string]string{
- "site": "example.com",
-}
-levels := []logrus.Level{
- logrus.PanicLevel,
- logrus.FatalLevel,
- logrus.ErrorLevel,
-}
-hook, err := logrus_sentry.NewWithTagsSentryHook(YOUR_DSN, tags, levels)
-
-```
-
-
-## Special fields
-
-Some logrus fields have a special meaning in this hook,
-these are `server_name`, `logger` and `http_request`.
-When logs are sent to sentry these fields are treated differently.
-- `server_name` (also known as hostname) is the name of the server which
-is logging the event (hostname.example.com)
-- `logger` is the part of the application which is logging the event.
-In go this usually means setting it to the name of the package.
-- `http_request` is the in-coming request(*http.Request). The detailed request data are sent to Sentry.
-
-## Timeout
-
-`Timeout` is the time the sentry hook will wait for a response
-from the sentry server.
-
-If this time elapses with no response from
-the server an error will be returned.
-
-If `Timeout` is set to 0 the SentryHook will not wait for a reply
-and will assume a correct delivery.
-
-The SentryHook has a default timeout of `100 milliseconds` when created
-with a call to `NewSentryHook`. This can be changed by assigning a value to the `Timeout` field:
-
-```go
-hook, _ := logrus_sentry.NewSentryHook(...)
-hook.Timeout = 20*time.Second
-```
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/sentry/sentry.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/sentry/sentry.go
deleted file mode 100644
index 4d184b2fc..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/sentry/sentry.go
+++ /dev/null
@@ -1,131 +0,0 @@
-package logrus_sentry
-
-import (
- "fmt"
- "net/http"
- "time"
-
- "github.com/Sirupsen/logrus"
- "github.com/getsentry/raven-go"
-)
-
-var (
- severityMap = map[logrus.Level]raven.Severity{
- logrus.DebugLevel: raven.DEBUG,
- logrus.InfoLevel: raven.INFO,
- logrus.WarnLevel: raven.WARNING,
- logrus.ErrorLevel: raven.ERROR,
- logrus.FatalLevel: raven.FATAL,
- logrus.PanicLevel: raven.FATAL,
- }
-)
-
-func getAndDel(d logrus.Fields, key string) (string, bool) {
- var (
- ok bool
- v interface{}
- val string
- )
- if v, ok = d[key]; !ok {
- return "", false
- }
-
- if val, ok = v.(string); !ok {
- return "", false
- }
- delete(d, key)
- return val, true
-}
-
-func getAndDelRequest(d logrus.Fields, key string) (*http.Request, bool) {
- var (
- ok bool
- v interface{}
- req *http.Request
- )
- if v, ok = d[key]; !ok {
- return nil, false
- }
- if req, ok = v.(*http.Request); !ok || req == nil {
- return nil, false
- }
- delete(d, key)
- return req, true
-}
-
-// SentryHook delivers logs to a sentry server.
-type SentryHook struct {
- // Timeout sets the time to wait for a delivery error from the sentry server.
- // If this is set to zero the server will not wait for any response and will
- // consider the message correctly sent
- Timeout time.Duration
-
- client *raven.Client
- levels []logrus.Level
-}
-
-// NewSentryHook creates a hook to be added to an instance of logger
-// and initializes the raven client.
-// This method sets the timeout to 100 milliseconds.
-func NewSentryHook(DSN string, levels []logrus.Level) (*SentryHook, error) {
- client, err := raven.New(DSN)
- if err != nil {
- return nil, err
- }
- return &SentryHook{100 * time.Millisecond, client, levels}, nil
-}
-
-// NewWithTagsSentryHook creates a hook with tags to be added to an instance
-// of logger and initializes the raven client. This method sets the timeout to
-// 100 milliseconds.
-func NewWithTagsSentryHook(DSN string, tags map[string]string, levels []logrus.Level) (*SentryHook, error) {
- client, err := raven.NewWithTags(DSN, tags)
- if err != nil {
- return nil, err
- }
- return &SentryHook{100 * time.Millisecond, client, levels}, nil
-}
-
-// Called when an event should be sent to sentry
-// Special fields that sentry uses to give more information to the server
-// are extracted from entry.Data (if they are found)
-// These fields are: logger, server_name and http_request
-func (hook *SentryHook) Fire(entry *logrus.Entry) error {
- packet := &raven.Packet{
- Message: entry.Message,
- Timestamp: raven.Timestamp(entry.Time),
- Level: severityMap[entry.Level],
- Platform: "go",
- }
-
- d := entry.Data
-
- if logger, ok := getAndDel(d, "logger"); ok {
- packet.Logger = logger
- }
- if serverName, ok := getAndDel(d, "server_name"); ok {
- packet.ServerName = serverName
- }
- if req, ok := getAndDelRequest(d, "http_request"); ok {
- packet.Interfaces = append(packet.Interfaces, raven.NewHttp(req))
- }
- packet.Extra = map[string]interface{}(d)
-
- _, errCh := hook.client.Capture(packet, nil)
- timeout := hook.Timeout
- if timeout != 0 {
- timeoutCh := time.After(timeout)
- select {
- case err := <-errCh:
- return err
- case <-timeoutCh:
- return fmt.Errorf("no response from sentry server in %s", timeout)
- }
- }
- return nil
-}
-
-// Levels returns the available logging levels.
-func (hook *SentryHook) Levels() []logrus.Level {
- return hook.levels
-}
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/sentry/sentry_test.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/sentry/sentry_test.go
deleted file mode 100644
index 5f59f699c..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/sentry/sentry_test.go
+++ /dev/null
@@ -1,132 +0,0 @@
-package logrus_sentry
-
-import (
- "encoding/json"
- "fmt"
- "io/ioutil"
- "net/http"
- "net/http/httptest"
- "reflect"
- "strings"
- "testing"
-
- "github.com/Sirupsen/logrus"
- "github.com/getsentry/raven-go"
-)
-
-const (
- message = "error message"
- server_name = "testserver.internal"
- logger_name = "test.logger"
-)
-
-func getTestLogger() *logrus.Logger {
- l := logrus.New()
- l.Out = ioutil.Discard
- return l
-}
-
-func WithTestDSN(t *testing.T, tf func(string, <-chan *raven.Packet)) {
- pch := make(chan *raven.Packet, 1)
- s := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
- defer req.Body.Close()
- d := json.NewDecoder(req.Body)
- p := &raven.Packet{}
- err := d.Decode(p)
- if err != nil {
- t.Fatal(err.Error())
- }
-
- pch <- p
- }))
- defer s.Close()
-
- fragments := strings.SplitN(s.URL, "://", 2)
- dsn := fmt.Sprintf(
- "%s://public:secret@%s/sentry/project-id",
- fragments[0],
- fragments[1],
- )
- tf(dsn, pch)
-}
-
-func TestSpecialFields(t *testing.T) {
- WithTestDSN(t, func(dsn string, pch <-chan *raven.Packet) {
- logger := getTestLogger()
-
- hook, err := NewSentryHook(dsn, []logrus.Level{
- logrus.ErrorLevel,
- })
-
- if err != nil {
- t.Fatal(err.Error())
- }
- logger.Hooks.Add(hook)
-
- req, _ := http.NewRequest("GET", "url", nil)
- logger.WithFields(logrus.Fields{
- "server_name": server_name,
- "logger": logger_name,
- "http_request": req,
- }).Error(message)
-
- packet := <-pch
- if packet.Logger != logger_name {
- t.Errorf("logger should have been %s, was %s", logger_name, packet.Logger)
- }
-
- if packet.ServerName != server_name {
- t.Errorf("server_name should have been %s, was %s", server_name, packet.ServerName)
- }
- })
-}
-
-func TestSentryHandler(t *testing.T) {
- WithTestDSN(t, func(dsn string, pch <-chan *raven.Packet) {
- logger := getTestLogger()
- hook, err := NewSentryHook(dsn, []logrus.Level{
- logrus.ErrorLevel,
- })
- if err != nil {
- t.Fatal(err.Error())
- }
- logger.Hooks.Add(hook)
-
- logger.Error(message)
- packet := <-pch
- if packet.Message != message {
- t.Errorf("message should have been %s, was %s", message, packet.Message)
- }
- })
-}
-
-func TestSentryTags(t *testing.T) {
- WithTestDSN(t, func(dsn string, pch <-chan *raven.Packet) {
- logger := getTestLogger()
- tags := map[string]string{
- "site": "test",
- }
- levels := []logrus.Level{
- logrus.ErrorLevel,
- }
-
- hook, err := NewWithTagsSentryHook(dsn, tags, levels)
- if err != nil {
- t.Fatal(err.Error())
- }
-
- logger.Hooks.Add(hook)
-
- logger.Error(message)
- packet := <-pch
- expected := raven.Tags{
- raven.Tag{
- Key: "site",
- Value: "test",
- },
- }
- if !reflect.DeepEqual(packet.Tags, expected) {
- t.Errorf("message should have been %s, was %s", message, packet.Message)
- }
- })
-}
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/syslog/README.md b/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/syslog/README.md
deleted file mode 100644
index 4dbb8e729..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/syslog/README.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# Syslog Hooks for Logrus
-
-## Usage
-
-```go
-import (
- "log/syslog"
- "github.com/Sirupsen/logrus"
- logrus_syslog "github.com/Sirupsen/logrus/hooks/syslog"
-)
-
-func main() {
- log := logrus.New()
- hook, err := logrus_syslog.NewSyslogHook("udp", "localhost:514", syslog.LOG_INFO, "")
-
- if err == nil {
- log.Hooks.Add(hook)
- }
-}
-```
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/syslog/syslog.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/syslog/syslog.go
deleted file mode 100644
index b6fa37462..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/syslog/syslog.go
+++ /dev/null
@@ -1,59 +0,0 @@
-package logrus_syslog
-
-import (
- "fmt"
- "github.com/Sirupsen/logrus"
- "log/syslog"
- "os"
-)
-
-// SyslogHook to send logs via syslog.
-type SyslogHook struct {
- Writer *syslog.Writer
- SyslogNetwork string
- SyslogRaddr string
-}
-
-// Creates a hook to be added to an instance of logger. This is called with
-// `hook, err := NewSyslogHook("udp", "localhost:514", syslog.LOG_DEBUG, "")`
-// `if err == nil { log.Hooks.Add(hook) }`
-func NewSyslogHook(network, raddr string, priority syslog.Priority, tag string) (*SyslogHook, error) {
- w, err := syslog.Dial(network, raddr, priority, tag)
- return &SyslogHook{w, network, raddr}, err
-}
-
-func (hook *SyslogHook) Fire(entry *logrus.Entry) error {
- line, err := entry.String()
- if err != nil {
- fmt.Fprintf(os.Stderr, "Unable to read entry, %v", err)
- return err
- }
-
- switch entry.Level {
- case logrus.PanicLevel:
- return hook.Writer.Crit(line)
- case logrus.FatalLevel:
- return hook.Writer.Crit(line)
- case logrus.ErrorLevel:
- return hook.Writer.Err(line)
- case logrus.WarnLevel:
- return hook.Writer.Warning(line)
- case logrus.InfoLevel:
- return hook.Writer.Info(line)
- case logrus.DebugLevel:
- return hook.Writer.Debug(line)
- default:
- return nil
- }
-}
-
-func (hook *SyslogHook) Levels() []logrus.Level {
- return []logrus.Level{
- logrus.PanicLevel,
- logrus.FatalLevel,
- logrus.ErrorLevel,
- logrus.WarnLevel,
- logrus.InfoLevel,
- logrus.DebugLevel,
- }
-}
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/syslog/syslog_test.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/syslog/syslog_test.go
deleted file mode 100644
index 42762dc10..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks/syslog/syslog_test.go
+++ /dev/null
@@ -1,26 +0,0 @@
-package logrus_syslog
-
-import (
- "github.com/Sirupsen/logrus"
- "log/syslog"
- "testing"
-)
-
-func TestLocalhostAddAndPrint(t *testing.T) {
- log := logrus.New()
- hook, err := NewSyslogHook("udp", "localhost:514", syslog.LOG_INFO, "")
-
- if err != nil {
- t.Errorf("Unable to connect to local syslog.")
- }
-
- log.Hooks.Add(hook)
-
- for _, level := range hook.Levels() {
- if len(log.Hooks[level]) != 1 {
- t.Errorf("SyslogHook was not added. The length of log.Hooks[%v]: %v", level, len(log.Hooks[level]))
- }
- }
-
- log.Info("Congratulations!")
-}
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/json_formatter_test.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/json_formatter_test.go
deleted file mode 100644
index 1d7087325..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/json_formatter_test.go
+++ /dev/null
@@ -1,120 +0,0 @@
-package logrus
-
-import (
- "encoding/json"
- "errors"
-
- "testing"
-)
-
-func TestErrorNotLost(t *testing.T) {
- formatter := &JSONFormatter{}
-
- b, err := formatter.Format(WithField("error", errors.New("wild walrus")))
- if err != nil {
- t.Fatal("Unable to format entry: ", err)
- }
-
- entry := make(map[string]interface{})
- err = json.Unmarshal(b, &entry)
- if err != nil {
- t.Fatal("Unable to unmarshal formatted entry: ", err)
- }
-
- if entry["error"] != "wild walrus" {
- t.Fatal("Error field not set")
- }
-}
-
-func TestErrorNotLostOnFieldNotNamedError(t *testing.T) {
- formatter := &JSONFormatter{}
-
- b, err := formatter.Format(WithField("omg", errors.New("wild walrus")))
- if err != nil {
- t.Fatal("Unable to format entry: ", err)
- }
-
- entry := make(map[string]interface{})
- err = json.Unmarshal(b, &entry)
- if err != nil {
- t.Fatal("Unable to unmarshal formatted entry: ", err)
- }
-
- if entry["omg"] != "wild walrus" {
- t.Fatal("Error field not set")
- }
-}
-
-func TestFieldClashWithTime(t *testing.T) {
- formatter := &JSONFormatter{}
-
- b, err := formatter.Format(WithField("time", "right now!"))
- if err != nil {
- t.Fatal("Unable to format entry: ", err)
- }
-
- entry := make(map[string]interface{})
- err = json.Unmarshal(b, &entry)
- if err != nil {
- t.Fatal("Unable to unmarshal formatted entry: ", err)
- }
-
- if entry["fields.time"] != "right now!" {
- t.Fatal("fields.time not set to original time field")
- }
-
- if entry["time"] != "0001-01-01T00:00:00Z" {
- t.Fatal("time field not set to current time, was: ", entry["time"])
- }
-}
-
-func TestFieldClashWithMsg(t *testing.T) {
- formatter := &JSONFormatter{}
-
- b, err := formatter.Format(WithField("msg", "something"))
- if err != nil {
- t.Fatal("Unable to format entry: ", err)
- }
-
- entry := make(map[string]interface{})
- err = json.Unmarshal(b, &entry)
- if err != nil {
- t.Fatal("Unable to unmarshal formatted entry: ", err)
- }
-
- if entry["fields.msg"] != "something" {
- t.Fatal("fields.msg not set to original msg field")
- }
-}
-
-func TestFieldClashWithLevel(t *testing.T) {
- formatter := &JSONFormatter{}
-
- b, err := formatter.Format(WithField("level", "something"))
- if err != nil {
- t.Fatal("Unable to format entry: ", err)
- }
-
- entry := make(map[string]interface{})
- err = json.Unmarshal(b, &entry)
- if err != nil {
- t.Fatal("Unable to unmarshal formatted entry: ", err)
- }
-
- if entry["fields.level"] != "something" {
- t.Fatal("fields.level not set to original level field")
- }
-}
-
-func TestJSONEntryEndsWithNewline(t *testing.T) {
- formatter := &JSONFormatter{}
-
- b, err := formatter.Format(WithField("level", "something"))
- if err != nil {
- t.Fatal("Unable to format entry: ", err)
- }
-
- if b[len(b)-1] != '\n' {
- t.Fatal("Expected JSON log entry to end with a newline")
- }
-}
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/logrus_test.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/logrus_test.go
deleted file mode 100644
index efaacea23..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/logrus_test.go
+++ /dev/null
@@ -1,301 +0,0 @@
-package logrus
-
-import (
- "bytes"
- "encoding/json"
- "strconv"
- "strings"
- "sync"
- "testing"
-
- "github.com/stretchr/testify/assert"
-)
-
-func LogAndAssertJSON(t *testing.T, log func(*Logger), assertions func(fields Fields)) {
- var buffer bytes.Buffer
- var fields Fields
-
- logger := New()
- logger.Out = &buffer
- logger.Formatter = new(JSONFormatter)
-
- log(logger)
-
- err := json.Unmarshal(buffer.Bytes(), &fields)
- assert.Nil(t, err)
-
- assertions(fields)
-}
-
-func LogAndAssertText(t *testing.T, log func(*Logger), assertions func(fields map[string]string)) {
- var buffer bytes.Buffer
-
- logger := New()
- logger.Out = &buffer
- logger.Formatter = &TextFormatter{
- DisableColors: true,
- }
-
- log(logger)
-
- fields := make(map[string]string)
- for _, kv := range strings.Split(buffer.String(), " ") {
- if !strings.Contains(kv, "=") {
- continue
- }
- kvArr := strings.Split(kv, "=")
- key := strings.TrimSpace(kvArr[0])
- val := kvArr[1]
- if kvArr[1][0] == '"' {
- var err error
- val, err = strconv.Unquote(val)
- assert.NoError(t, err)
- }
- fields[key] = val
- }
- assertions(fields)
-}
-
-func TestPrint(t *testing.T) {
- LogAndAssertJSON(t, func(log *Logger) {
- log.Print("test")
- }, func(fields Fields) {
- assert.Equal(t, fields["msg"], "test")
- assert.Equal(t, fields["level"], "info")
- })
-}
-
-func TestInfo(t *testing.T) {
- LogAndAssertJSON(t, func(log *Logger) {
- log.Info("test")
- }, func(fields Fields) {
- assert.Equal(t, fields["msg"], "test")
- assert.Equal(t, fields["level"], "info")
- })
-}
-
-func TestWarn(t *testing.T) {
- LogAndAssertJSON(t, func(log *Logger) {
- log.Warn("test")
- }, func(fields Fields) {
- assert.Equal(t, fields["msg"], "test")
- assert.Equal(t, fields["level"], "warning")
- })
-}
-
-func TestInfolnShouldAddSpacesBetweenStrings(t *testing.T) {
- LogAndAssertJSON(t, func(log *Logger) {
- log.Infoln("test", "test")
- }, func(fields Fields) {
- assert.Equal(t, fields["msg"], "test test")
- })
-}
-
-func TestInfolnShouldAddSpacesBetweenStringAndNonstring(t *testing.T) {
- LogAndAssertJSON(t, func(log *Logger) {
- log.Infoln("test", 10)
- }, func(fields Fields) {
- assert.Equal(t, fields["msg"], "test 10")
- })
-}
-
-func TestInfolnShouldAddSpacesBetweenTwoNonStrings(t *testing.T) {
- LogAndAssertJSON(t, func(log *Logger) {
- log.Infoln(10, 10)
- }, func(fields Fields) {
- assert.Equal(t, fields["msg"], "10 10")
- })
-}
-
-func TestInfoShouldAddSpacesBetweenTwoNonStrings(t *testing.T) {
- LogAndAssertJSON(t, func(log *Logger) {
- log.Infoln(10, 10)
- }, func(fields Fields) {
- assert.Equal(t, fields["msg"], "10 10")
- })
-}
-
-func TestInfoShouldNotAddSpacesBetweenStringAndNonstring(t *testing.T) {
- LogAndAssertJSON(t, func(log *Logger) {
- log.Info("test", 10)
- }, func(fields Fields) {
- assert.Equal(t, fields["msg"], "test10")
- })
-}
-
-func TestInfoShouldNotAddSpacesBetweenStrings(t *testing.T) {
- LogAndAssertJSON(t, func(log *Logger) {
- log.Info("test", "test")
- }, func(fields Fields) {
- assert.Equal(t, fields["msg"], "testtest")
- })
-}
-
-func TestWithFieldsShouldAllowAssignments(t *testing.T) {
- var buffer bytes.Buffer
- var fields Fields
-
- logger := New()
- logger.Out = &buffer
- logger.Formatter = new(JSONFormatter)
-
- localLog := logger.WithFields(Fields{
- "key1": "value1",
- })
-
- localLog.WithField("key2", "value2").Info("test")
- err := json.Unmarshal(buffer.Bytes(), &fields)
- assert.Nil(t, err)
-
- assert.Equal(t, "value2", fields["key2"])
- assert.Equal(t, "value1", fields["key1"])
-
- buffer = bytes.Buffer{}
- fields = Fields{}
- localLog.Info("test")
- err = json.Unmarshal(buffer.Bytes(), &fields)
- assert.Nil(t, err)
-
- _, ok := fields["key2"]
- assert.Equal(t, false, ok)
- assert.Equal(t, "value1", fields["key1"])
-}
-
-func TestUserSuppliedFieldDoesNotOverwriteDefaults(t *testing.T) {
- LogAndAssertJSON(t, func(log *Logger) {
- log.WithField("msg", "hello").Info("test")
- }, func(fields Fields) {
- assert.Equal(t, fields["msg"], "test")
- })
-}
-
-func TestUserSuppliedMsgFieldHasPrefix(t *testing.T) {
- LogAndAssertJSON(t, func(log *Logger) {
- log.WithField("msg", "hello").Info("test")
- }, func(fields Fields) {
- assert.Equal(t, fields["msg"], "test")
- assert.Equal(t, fields["fields.msg"], "hello")
- })
-}
-
-func TestUserSuppliedTimeFieldHasPrefix(t *testing.T) {
- LogAndAssertJSON(t, func(log *Logger) {
- log.WithField("time", "hello").Info("test")
- }, func(fields Fields) {
- assert.Equal(t, fields["fields.time"], "hello")
- })
-}
-
-func TestUserSuppliedLevelFieldHasPrefix(t *testing.T) {
- LogAndAssertJSON(t, func(log *Logger) {
- log.WithField("level", 1).Info("test")
- }, func(fields Fields) {
- assert.Equal(t, fields["level"], "info")
- assert.Equal(t, fields["fields.level"], 1.0) // JSON has floats only
- })
-}
-
-func TestDefaultFieldsAreNotPrefixed(t *testing.T) {
- LogAndAssertText(t, func(log *Logger) {
- ll := log.WithField("herp", "derp")
- ll.Info("hello")
- ll.Info("bye")
- }, func(fields map[string]string) {
- for _, fieldName := range []string{"fields.level", "fields.time", "fields.msg"} {
- if _, ok := fields[fieldName]; ok {
- t.Fatalf("should not have prefixed %q: %v", fieldName, fields)
- }
- }
- })
-}
-
-func TestDoubleLoggingDoesntPrefixPreviousFields(t *testing.T) {
-
- var buffer bytes.Buffer
- var fields Fields
-
- logger := New()
- logger.Out = &buffer
- logger.Formatter = new(JSONFormatter)
-
- llog := logger.WithField("context", "eating raw fish")
-
- llog.Info("looks delicious")
-
- err := json.Unmarshal(buffer.Bytes(), &fields)
- assert.NoError(t, err, "should have decoded first message")
- assert.Equal(t, len(fields), 4, "should only have msg/time/level/context fields")
- assert.Equal(t, fields["msg"], "looks delicious")
- assert.Equal(t, fields["context"], "eating raw fish")
-
- buffer.Reset()
-
- llog.Warn("omg it is!")
-
- err = json.Unmarshal(buffer.Bytes(), &fields)
- assert.NoError(t, err, "should have decoded second message")
- assert.Equal(t, len(fields), 4, "should only have msg/time/level/context fields")
- assert.Equal(t, fields["msg"], "omg it is!")
- assert.Equal(t, fields["context"], "eating raw fish")
- assert.Nil(t, fields["fields.msg"], "should not have prefixed previous `msg` entry")
-
-}
-
-func TestConvertLevelToString(t *testing.T) {
- assert.Equal(t, "debug", DebugLevel.String())
- assert.Equal(t, "info", InfoLevel.String())
- assert.Equal(t, "warning", WarnLevel.String())
- assert.Equal(t, "error", ErrorLevel.String())
- assert.Equal(t, "fatal", FatalLevel.String())
- assert.Equal(t, "panic", PanicLevel.String())
-}
-
-func TestParseLevel(t *testing.T) {
- l, err := ParseLevel("panic")
- assert.Nil(t, err)
- assert.Equal(t, PanicLevel, l)
-
- l, err = ParseLevel("fatal")
- assert.Nil(t, err)
- assert.Equal(t, FatalLevel, l)
-
- l, err = ParseLevel("error")
- assert.Nil(t, err)
- assert.Equal(t, ErrorLevel, l)
-
- l, err = ParseLevel("warn")
- assert.Nil(t, err)
- assert.Equal(t, WarnLevel, l)
-
- l, err = ParseLevel("warning")
- assert.Nil(t, err)
- assert.Equal(t, WarnLevel, l)
-
- l, err = ParseLevel("info")
- assert.Nil(t, err)
- assert.Equal(t, InfoLevel, l)
-
- l, err = ParseLevel("debug")
- assert.Nil(t, err)
- assert.Equal(t, DebugLevel, l)
-
- l, err = ParseLevel("invalid")
- assert.Equal(t, "not a valid logrus Level: \"invalid\"", err.Error())
-}
-
-func TestGetSetLevelRace(t *testing.T) {
- wg := sync.WaitGroup{}
- for i := 0; i < 100; i++ {
- wg.Add(1)
- go func(i int) {
- defer wg.Done()
- if i%2 == 0 {
- SetLevel(InfoLevel)
- } else {
- GetLevel()
- }
- }(i)
-
- }
- wg.Wait()
-}
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/text_formatter_test.go b/Godeps/_workspace/src/github.com/Sirupsen/logrus/text_formatter_test.go
deleted file mode 100644
index e25a44f67..000000000
--- a/Godeps/_workspace/src/github.com/Sirupsen/logrus/text_formatter_test.go
+++ /dev/null
@@ -1,61 +0,0 @@
-package logrus
-
-import (
- "bytes"
- "errors"
- "testing"
- "time"
-)
-
-func TestQuoting(t *testing.T) {
- tf := &TextFormatter{DisableColors: true}
-
- checkQuoting := func(q bool, value interface{}) {
- b, _ := tf.Format(WithField("test", value))
- idx := bytes.Index(b, ([]byte)("test="))
- cont := bytes.Contains(b[idx+5:], []byte{'"'})
- if cont != q {
- if q {
- t.Errorf("quoting expected for: %#v", value)
- } else {
- t.Errorf("quoting not expected for: %#v", value)
- }
- }
- }
-
- checkQuoting(false, "abcd")
- checkQuoting(false, "v1.0")
- checkQuoting(false, "1234567890")
- checkQuoting(true, "/foobar")
- checkQuoting(true, "x y")
- checkQuoting(true, "x,y")
- checkQuoting(false, errors.New("invalid"))
- checkQuoting(true, errors.New("invalid argument"))
-}
-
-func TestTimestampFormat(t *testing.T) {
- checkTimeStr := func(format string) {
- customFormatter := &TextFormatter{DisableColors: true, TimestampFormat: format}
- customStr, _ := customFormatter.Format(WithField("test", "test"))
- timeStart := bytes.Index(customStr, ([]byte)("time="))
- timeEnd := bytes.Index(customStr, ([]byte)("level="))
- timeStr := customStr[timeStart+5 : timeEnd-1]
- if timeStr[0] == '"' && timeStr[len(timeStr)-1] == '"' {
- timeStr = timeStr[1 : len(timeStr)-1]
- }
- if format == "" {
- format = time.RFC3339
- }
- _, e := time.Parse(format, (string)(timeStr))
- if e != nil {
- t.Errorf("time string \"%s\" did not match provided time format \"%s\": %s", timeStr, format, e)
- }
- }
-
- checkTimeStr("2006-01-02T15:04:05.000000000Z07:00")
- checkTimeStr("Mon Jan _2 15:04:05 2006")
- checkTimeStr("")
-}
-
-// TODO add tests for sorting etc., this requires a parser for the text
-// formatter output.
diff --git a/Godeps/_workspace/src/github.com/blang/semver/examples/main.go b/Godeps/_workspace/src/github.com/blang/semver/examples/main.go
deleted file mode 100644
index f36c983d9..000000000
--- a/Godeps/_workspace/src/github.com/blang/semver/examples/main.go
+++ /dev/null
@@ -1,83 +0,0 @@
-package main
-
-import (
- "fmt"
- "github.com/blang/semver"
-)
-
-func main() {
- v, err := semver.Parse("0.0.1-alpha.preview.222+123.github")
- if err != nil {
- fmt.Printf("Error while parsing (not valid): %q", err)
- }
- fmt.Printf("Version to string: %q\n", v)
-
- fmt.Printf("Major: %d\n", v.Major)
- fmt.Printf("Minor: %d\n", v.Minor)
- fmt.Printf("Patch: %d\n", v.Patch)
-
- // Prerelease versions
- if len(v.Pre) > 0 {
- fmt.Println("Prerelease versions:")
- for i, pre := range v.Pre {
- fmt.Printf("%d: %q\n", i, pre)
- }
- }
-
- // Build meta data
- if len(v.Build) > 0 {
- fmt.Println("Build meta data:")
- for i, build := range v.Build {
- fmt.Printf("%d: %q\n", i, build)
- }
- }
-
- // Make == Parse (Value), New for Pointer
- v001, err := semver.Make("0.0.1")
-
- fmt.Println("\nUse Version.Compare for comparisons (-1, 0, 1):")
- fmt.Printf("%q is greater than %q: Compare == %d\n", v001, v, v001.Compare(v))
- fmt.Printf("%q is less than %q: Compare == %d\n", v, v001, v.Compare(v001))
- fmt.Printf("%q is equal to %q: Compare == %d\n", v, v, v.Compare(v))
-
- fmt.Println("\nUse comparison helpers returning booleans:")
- fmt.Printf("%q is greater than %q: %t\n", v001, v, v001.GT(v))
- fmt.Printf("%q is greater than equal %q: %t\n", v001, v, v001.GTE(v))
- fmt.Printf("%q is greater than equal %q: %t\n", v, v, v.GTE(v))
- fmt.Printf("%q is less than %q: %t\n", v, v001, v.LT(v001))
- fmt.Printf("%q is less than equal %q: %t\n", v, v001, v.LTE(v001))
- fmt.Printf("%q is less than equal %q: %t\n", v, v, v.LTE(v))
-
- fmt.Println("\nManipulate Version in place:")
- v.Pre[0], err = semver.NewPRVersion("beta")
- if err != nil {
- fmt.Printf("Error parsing pre release version: %q", err)
- }
- fmt.Printf("Version to string: %q\n", v)
-
- fmt.Println("\nCompare Prerelease versions:")
- pre1, _ := semver.NewPRVersion("123")
- pre2, _ := semver.NewPRVersion("alpha")
- pre3, _ := semver.NewPRVersion("124")
- fmt.Printf("%q is less than %q: Compare == %d\n", pre1, pre2, pre1.Compare(pre2))
- fmt.Printf("%q is greater than %q: Compare == %d\n", pre3, pre1, pre3.Compare(pre1))
- fmt.Printf("%q is equal to %q: Compare == %d\n", pre1, pre1, pre1.Compare(pre1))
-
- fmt.Println("\nValidate versions:")
- v.Build[0] = "?"
-
- err = v.Validate()
- if err != nil {
- fmt.Printf("Validation failed: %s\n", err)
- }
-
- fmt.Println("Create valid build meta data:")
- b1, _ := semver.NewBuildVersion("build123")
- v.Build[0] = b1
- fmt.Printf("Version with new build version %q\n", v)
-
- _, err = semver.NewBuildVersion("build?123")
- if err != nil {
- fmt.Printf("Create build version failed: %s\n", err)
- }
-}
diff --git a/Godeps/_workspace/src/github.com/blang/semver/json_test.go b/Godeps/_workspace/src/github.com/blang/semver/json_test.go
deleted file mode 100644
index 039117da9..000000000
--- a/Godeps/_workspace/src/github.com/blang/semver/json_test.go
+++ /dev/null
@@ -1,45 +0,0 @@
-package semver
-
-import (
- "encoding/json"
- "strconv"
- "testing"
-)
-
-func TestJSONMarshal(t *testing.T) {
- versionString := "3.1.4-alpha.1.5.9+build.2.6.5"
- v, err := Parse(versionString)
- if err != nil {
- t.Fatal(err)
- }
-
- versionJSON, err := json.Marshal(v)
- if err != nil {
- t.Fatal(err)
- }
-
- quotedVersionString := strconv.Quote(versionString)
-
- if string(versionJSON) != quotedVersionString {
- t.Fatalf("JSON marshaled semantic version not equal: expected %q, got %q", quotedVersionString, string(versionJSON))
- }
-}
-
-func TestJSONUnmarshal(t *testing.T) {
- versionString := "3.1.4-alpha.1.5.9+build.2.6.5"
- quotedVersionString := strconv.Quote(versionString)
-
- var v Version
- if err := json.Unmarshal([]byte(quotedVersionString), &v); err != nil {
- t.Fatal(err)
- }
-
- if v.String() != versionString {
- t.Fatalf("JSON unmarshaled semantic version not equal: expected %q, got %q", versionString, v.String())
- }
-
- badVersionString := strconv.Quote("3.1.4.1.5.9.2.6.5-other-digits-of-pi")
- if err := json.Unmarshal([]byte(badVersionString), &v); err == nil {
- t.Fatal("expected JSON unmarshal error, got nil")
- }
-}
diff --git a/Godeps/_workspace/src/github.com/blang/semver/range_test.go b/Godeps/_workspace/src/github.com/blang/semver/range_test.go
deleted file mode 100644
index 5a745a9a4..000000000
--- a/Godeps/_workspace/src/github.com/blang/semver/range_test.go
+++ /dev/null
@@ -1,442 +0,0 @@
-package semver
-
-import (
- "reflect"
- "strings"
- "testing"
-)
-
-type comparatorTest struct {
- input string
- comparator func(comparator) bool
-}
-
-func TestParseComparator(t *testing.T) {
- compatorTests := []comparatorTest{
- {">", testGT},
- {">=", testGE},
- {"<", testLT},
- {"<=", testLE},
- {"", testEQ},
- {"=", testEQ},
- {"==", testEQ},
- {"!=", testNE},
- {"!", testNE},
- {"-", nil},
- {"<==", nil},
- {"<<", nil},
- {">>", nil},
- }
-
- for _, tc := range compatorTests {
- if c := parseComparator(tc.input); c == nil {
- if tc.comparator != nil {
- t.Errorf("Comparator nil for case %q\n", tc.input)
- }
- } else if !tc.comparator(c) {
- t.Errorf("Invalid comparator for case %q\n", tc.input)
- }
- }
-}
-
-var (
- v1 = MustParse("1.2.2")
- v2 = MustParse("1.2.3")
- v3 = MustParse("1.2.4")
-)
-
-func testEQ(f comparator) bool {
- return f(v1, v1) && !f(v1, v2)
-}
-
-func testNE(f comparator) bool {
- return !f(v1, v1) && f(v1, v2)
-}
-
-func testGT(f comparator) bool {
- return f(v2, v1) && f(v3, v2) && !f(v1, v2) && !f(v1, v1)
-}
-
-func testGE(f comparator) bool {
- return f(v2, v1) && f(v3, v2) && !f(v1, v2)
-}
-
-func testLT(f comparator) bool {
- return f(v1, v2) && f(v2, v3) && !f(v2, v1) && !f(v1, v1)
-}
-
-func testLE(f comparator) bool {
- return f(v1, v2) && f(v2, v3) && !f(v2, v1)
-}
-
-func TestSplitAndTrim(t *testing.T) {
- tests := []struct {
- i string
- s []string
- }{
- {"1.2.3 1.2.3", []string{"1.2.3", "1.2.3"}},
- {" 1.2.3 1.2.3 ", []string{"1.2.3", "1.2.3"}}, // Spaces
- {"1.2.3 || >=1.2.3 <1.2.3", []string{"1.2.3", "||", ">=1.2.3", "<1.2.3"}},
- {" 1.2.3 || >=1.2.3 <1.2.3 ", []string{"1.2.3", "||", ">=1.2.3", "<1.2.3"}},
- }
-
- for _, tc := range tests {
- p := splitAndTrim(tc.i)
- if !reflect.DeepEqual(p, tc.s) {
- t.Errorf("Invalid for case %q: Expected %q, got: %q", tc.i, tc.s, p)
- }
- }
-}
-
-func TestSplitComparatorVersion(t *testing.T) {
- tests := []struct {
- i string
- p []string
- }{
- {">1.2.3", []string{">", "1.2.3"}},
- {">=1.2.3", []string{">=", "1.2.3"}},
- {"<1.2.3", []string{"<", "1.2.3"}},
- {"<=1.2.3", []string{"<=", "1.2.3"}},
- {"1.2.3", []string{"", "1.2.3"}},
- {"=1.2.3", []string{"=", "1.2.3"}},
- {"==1.2.3", []string{"==", "1.2.3"}},
- {"!=1.2.3", []string{"!=", "1.2.3"}},
- {"!1.2.3", []string{"!", "1.2.3"}},
- {"error", nil},
- }
- for _, tc := range tests {
- if op, v, err := splitComparatorVersion(tc.i); err != nil {
- if tc.p != nil {
- t.Errorf("Invalid for case %q: Expected %q, got error %q", tc.i, tc.p, err)
- }
- } else if op != tc.p[0] {
- t.Errorf("Invalid operator for case %q: Expected %q, got: %q", tc.i, tc.p[0], op)
- } else if v != tc.p[1] {
- t.Errorf("Invalid version for case %q: Expected %q, got: %q", tc.i, tc.p[1], v)
- }
-
- }
-}
-
-func TestBuildVersionRange(t *testing.T) {
- tests := []struct {
- opStr string
- vStr string
- c func(comparator) bool
- v string
- }{
- {">", "1.2.3", testGT, "1.2.3"},
- {">=", "1.2.3", testGE, "1.2.3"},
- {"<", "1.2.3", testLT, "1.2.3"},
- {"<=", "1.2.3", testLE, "1.2.3"},
- {"", "1.2.3", testEQ, "1.2.3"},
- {"=", "1.2.3", testEQ, "1.2.3"},
- {"==", "1.2.3", testEQ, "1.2.3"},
- {"!=", "1.2.3", testNE, "1.2.3"},
- {"!", "1.2.3", testNE, "1.2.3"},
- {">>", "1.2.3", nil, ""}, // Invalid comparator
- {"=", "invalid", nil, ""}, // Invalid version
- }
-
- for _, tc := range tests {
- if r, err := buildVersionRange(tc.opStr, tc.vStr); err != nil {
- if tc.c != nil {
- t.Errorf("Invalid for case %q: Expected %q, got error %q", strings.Join([]string{tc.opStr, tc.vStr}, ""), tc.v, err)
- }
- } else if r == nil {
- t.Errorf("Invalid for case %q: got nil", strings.Join([]string{tc.opStr, tc.vStr}, ""))
- } else {
- // test version
- if tv := MustParse(tc.v); !r.v.EQ(tv) {
- t.Errorf("Invalid for case %q: Expected version %q, got: %q", strings.Join([]string{tc.opStr, tc.vStr}, ""), tv, r.v)
- }
- // test comparator
- if r.c == nil {
- t.Errorf("Invalid for case %q: got nil comparator", strings.Join([]string{tc.opStr, tc.vStr}, ""))
- continue
- }
- if !tc.c(r.c) {
- t.Errorf("Invalid comparator for case %q\n", strings.Join([]string{tc.opStr, tc.vStr}, ""))
- }
- }
- }
-
-}
-
-func TestSplitORParts(t *testing.T) {
- tests := []struct {
- i []string
- o [][]string
- }{
- {[]string{">1.2.3", "||", "<1.2.3", "||", "=1.2.3"}, [][]string{
- []string{">1.2.3"},
- []string{"<1.2.3"},
- []string{"=1.2.3"},
- }},
- {[]string{">1.2.3", "<1.2.3", "||", "=1.2.3"}, [][]string{
- []string{">1.2.3", "<1.2.3"},
- []string{"=1.2.3"},
- }},
- {[]string{">1.2.3", "||"}, nil},
- {[]string{"||", ">1.2.3"}, nil},
- }
- for _, tc := range tests {
- o, err := splitORParts(tc.i)
- if err != nil && tc.o != nil {
- t.Errorf("Unexpected error for case %q: %s", tc.i, err)
- }
- if !reflect.DeepEqual(tc.o, o) {
- t.Errorf("Invalid for case %q: Expected %q, got: %q", tc.i, tc.o, o)
- }
- }
-}
-
-func TestVersionRangeToRange(t *testing.T) {
- vr := versionRange{
- v: MustParse("1.2.3"),
- c: compLT,
- }
- rf := vr.rangeFunc()
- if !rf(MustParse("1.2.2")) || rf(MustParse("1.2.3")) {
- t.Errorf("Invalid conversion to range func")
- }
-}
-
-func TestRangeAND(t *testing.T) {
- v := MustParse("1.2.2")
- v1 := MustParse("1.2.1")
- v2 := MustParse("1.2.3")
- rf1 := Range(func(v Version) bool {
- return v.GT(v1)
- })
- rf2 := Range(func(v Version) bool {
- return v.LT(v2)
- })
- rf := rf1.AND(rf2)
- if rf(v1) {
- t.Errorf("Invalid rangefunc, accepted: %s", v1)
- }
- if rf(v2) {
- t.Errorf("Invalid rangefunc, accepted: %s", v2)
- }
- if !rf(v) {
- t.Errorf("Invalid rangefunc, did not accept: %s", v)
- }
-}
-
-func TestRangeOR(t *testing.T) {
- tests := []struct {
- v Version
- b bool
- }{
- {MustParse("1.2.0"), true},
- {MustParse("1.2.2"), false},
- {MustParse("1.2.4"), true},
- }
- v1 := MustParse("1.2.1")
- v2 := MustParse("1.2.3")
- rf1 := Range(func(v Version) bool {
- return v.LT(v1)
- })
- rf2 := Range(func(v Version) bool {
- return v.GT(v2)
- })
- rf := rf1.OR(rf2)
- for _, tc := range tests {
- if r := rf(tc.v); r != tc.b {
- t.Errorf("Invalid for case %q: Expected %t, got %t", tc.v, tc.b, r)
- }
- }
-}
-
-func TestParseRange(t *testing.T) {
- type tv struct {
- v string
- b bool
- }
- tests := []struct {
- i string
- t []tv
- }{
- // Simple expressions
- {">1.2.3", []tv{
- {"1.2.2", false},
- {"1.2.3", false},
- {"1.2.4", true},
- }},
- {">=1.2.3", []tv{
- {"1.2.3", true},
- {"1.2.4", true},
- {"1.2.2", false},
- }},
- {"<1.2.3", []tv{
- {"1.2.2", true},
- {"1.2.3", false},
- {"1.2.4", false},
- }},
- {"<=1.2.3", []tv{
- {"1.2.2", true},
- {"1.2.3", true},
- {"1.2.4", false},
- }},
- {"1.2.3", []tv{
- {"1.2.2", false},
- {"1.2.3", true},
- {"1.2.4", false},
- }},
- {"=1.2.3", []tv{
- {"1.2.2", false},
- {"1.2.3", true},
- {"1.2.4", false},
- }},
- {"==1.2.3", []tv{
- {"1.2.2", false},
- {"1.2.3", true},
- {"1.2.4", false},
- }},
- {"!=1.2.3", []tv{
- {"1.2.2", true},
- {"1.2.3", false},
- {"1.2.4", true},
- }},
- {"!1.2.3", []tv{
- {"1.2.2", true},
- {"1.2.3", false},
- {"1.2.4", true},
- }},
- // Simple Expression errors
- {">>1.2.3", nil},
- {"!1.2.3", nil},
- {"1.0", nil},
- {"string", nil},
- {"", nil},
-
- // AND Expressions
- {">1.2.2 <1.2.4", []tv{
- {"1.2.2", false},
- {"1.2.3", true},
- {"1.2.4", false},
- }},
- {"<1.2.2 <1.2.4", []tv{
- {"1.2.1", true},
- {"1.2.2", false},
- {"1.2.3", false},
- {"1.2.4", false},
- }},
- {">1.2.2 <1.2.5 !=1.2.4", []tv{
- {"1.2.2", false},
- {"1.2.3", true},
- {"1.2.4", false},
- {"1.2.5", false},
- }},
- {">1.2.2 <1.2.5 !1.2.4", []tv{
- {"1.2.2", false},
- {"1.2.3", true},
- {"1.2.4", false},
- {"1.2.5", false},
- }},
- // OR Expressions
- {">1.2.2 || <1.2.4", []tv{
- {"1.2.2", true},
- {"1.2.3", true},
- {"1.2.4", true},
- }},
- {"<1.2.2 || >1.2.4", []tv{
- {"1.2.2", false},
- {"1.2.3", false},
- {"1.2.4", false},
- }},
- // Combined Expressions
- {">1.2.2 <1.2.4 || >=2.0.0", []tv{
- {"1.2.2", false},
- {"1.2.3", true},
- {"1.2.4", false},
- {"2.0.0", true},
- {"2.0.1", true},
- }},
- {">1.2.2 <1.2.4 || >=2.0.0 <3.0.0", []tv{
- {"1.2.2", false},
- {"1.2.3", true},
- {"1.2.4", false},
- {"2.0.0", true},
- {"2.0.1", true},
- {"2.9.9", true},
- {"3.0.0", false},
- }},
- }
-
- for _, tc := range tests {
- r, err := ParseRange(tc.i)
- if err != nil && tc.t != nil {
- t.Errorf("Error parsing range %q: %s", tc.i, err)
- continue
- }
- for _, tvc := range tc.t {
- v := MustParse(tvc.v)
- if res := r(v); res != tvc.b {
- t.Errorf("Invalid for case %q matching %q: Expected %t, got: %t", tc.i, tvc.v, tvc.b, res)
- }
- }
-
- }
-}
-
-func BenchmarkRangeParseSimple(b *testing.B) {
- const VERSION = ">1.0.0"
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- ParseRange(VERSION)
- }
-}
-
-func BenchmarkRangeParseAverage(b *testing.B) {
- const VERSION = ">=1.0.0 <2.0.0"
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- ParseRange(VERSION)
- }
-}
-
-func BenchmarkRangeParseComplex(b *testing.B) {
- const VERSION = ">=1.0.0 <2.0.0 || >=3.0.1 <4.0.0 !=3.0.3 || >=5.0.0"
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- ParseRange(VERSION)
- }
-}
-
-func BenchmarkRangeMatchSimple(b *testing.B) {
- const VERSION = ">1.0.0"
- r, _ := ParseRange(VERSION)
- v := MustParse("2.0.0")
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- r(v)
- }
-}
-
-func BenchmarkRangeMatchAverage(b *testing.B) {
- const VERSION = ">=1.0.0 <2.0.0"
- r, _ := ParseRange(VERSION)
- v := MustParse("1.2.3")
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- r(v)
- }
-}
-
-func BenchmarkRangeMatchComplex(b *testing.B) {
- const VERSION = ">=1.0.0 <2.0.0 || >=3.0.1 <4.0.0 !=3.0.3 || >=5.0.0"
- r, _ := ParseRange(VERSION)
- v := MustParse("5.0.1")
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- r(v)
- }
-}
diff --git a/Godeps/_workspace/src/github.com/blang/semver/semver_test.go b/Godeps/_workspace/src/github.com/blang/semver/semver_test.go
deleted file mode 100644
index e56ebce05..000000000
--- a/Godeps/_workspace/src/github.com/blang/semver/semver_test.go
+++ /dev/null
@@ -1,417 +0,0 @@
-package semver
-
-import (
- "testing"
-)
-
-func prstr(s string) PRVersion {
- return PRVersion{s, 0, false}
-}
-
-func prnum(i uint64) PRVersion {
- return PRVersion{"", i, true}
-}
-
-type formatTest struct {
- v Version
- result string
-}
-
-var formatTests = []formatTest{
- {Version{1, 2, 3, nil, nil}, "1.2.3"},
- {Version{0, 0, 1, nil, nil}, "0.0.1"},
- {Version{0, 0, 1, []PRVersion{prstr("alpha"), prstr("preview")}, []string{"123", "456"}}, "0.0.1-alpha.preview+123.456"},
- {Version{1, 2, 3, []PRVersion{prstr("alpha"), prnum(1)}, []string{"123", "456"}}, "1.2.3-alpha.1+123.456"},
- {Version{1, 2, 3, []PRVersion{prstr("alpha"), prnum(1)}, nil}, "1.2.3-alpha.1"},
- {Version{1, 2, 3, nil, []string{"123", "456"}}, "1.2.3+123.456"},
- // Prereleases and build metadata hyphens
- {Version{1, 2, 3, []PRVersion{prstr("alpha"), prstr("b-eta")}, []string{"123", "b-uild"}}, "1.2.3-alpha.b-eta+123.b-uild"},
- {Version{1, 2, 3, nil, []string{"123", "b-uild"}}, "1.2.3+123.b-uild"},
- {Version{1, 2, 3, []PRVersion{prstr("alpha"), prstr("b-eta")}, nil}, "1.2.3-alpha.b-eta"},
-}
-
-func TestStringer(t *testing.T) {
- for _, test := range formatTests {
- if res := test.v.String(); res != test.result {
- t.Errorf("Stringer, expected %q but got %q", test.result, res)
- }
- }
-}
-
-func TestParse(t *testing.T) {
- for _, test := range formatTests {
- if v, err := Parse(test.result); err != nil {
- t.Errorf("Error parsing %q: %q", test.result, err)
- } else if comp := v.Compare(test.v); comp != 0 {
- t.Errorf("Parsing, expected %q but got %q, comp: %d ", test.v, v, comp)
- } else if err := v.Validate(); err != nil {
- t.Errorf("Error validating parsed version %q: %q", test.v, err)
- }
- }
-}
-
-func TestMustParse(t *testing.T) {
- _ = MustParse("32.2.1-alpha")
-}
-
-func TestMustParse_panic(t *testing.T) {
- defer func() {
- if recover() == nil {
- t.Errorf("Should have panicked")
- }
- }()
- _ = MustParse("invalid version")
-}
-
-func TestValidate(t *testing.T) {
- for _, test := range formatTests {
- if err := test.v.Validate(); err != nil {
- t.Errorf("Error validating %q: %q", test.v, err)
- }
- }
-}
-
-type compareTest struct {
- v1 Version
- v2 Version
- result int
-}
-
-var compareTests = []compareTest{
- {Version{1, 0, 0, nil, nil}, Version{1, 0, 0, nil, nil}, 0},
- {Version{2, 0, 0, nil, nil}, Version{1, 0, 0, nil, nil}, 1},
- {Version{0, 1, 0, nil, nil}, Version{0, 1, 0, nil, nil}, 0},
- {Version{0, 2, 0, nil, nil}, Version{0, 1, 0, nil, nil}, 1},
- {Version{0, 0, 1, nil, nil}, Version{0, 0, 1, nil, nil}, 0},
- {Version{0, 0, 2, nil, nil}, Version{0, 0, 1, nil, nil}, 1},
- {Version{1, 2, 3, nil, nil}, Version{1, 2, 3, nil, nil}, 0},
- {Version{2, 2, 4, nil, nil}, Version{1, 2, 4, nil, nil}, 1},
- {Version{1, 3, 3, nil, nil}, Version{1, 2, 3, nil, nil}, 1},
- {Version{1, 2, 4, nil, nil}, Version{1, 2, 3, nil, nil}, 1},
-
- // Spec Examples #11
- {Version{1, 0, 0, nil, nil}, Version{2, 0, 0, nil, nil}, -1},
- {Version{2, 0, 0, nil, nil}, Version{2, 1, 0, nil, nil}, -1},
- {Version{2, 1, 0, nil, nil}, Version{2, 1, 1, nil, nil}, -1},
-
- // Spec Examples #9
- {Version{1, 0, 0, nil, nil}, Version{1, 0, 0, []PRVersion{prstr("alpha")}, nil}, 1},
- {Version{1, 0, 0, []PRVersion{prstr("alpha")}, nil}, Version{1, 0, 0, []PRVersion{prstr("alpha"), prnum(1)}, nil}, -1},
- {Version{1, 0, 0, []PRVersion{prstr("alpha"), prnum(1)}, nil}, Version{1, 0, 0, []PRVersion{prstr("alpha"), prstr("beta")}, nil}, -1},
- {Version{1, 0, 0, []PRVersion{prstr("alpha"), prstr("beta")}, nil}, Version{1, 0, 0, []PRVersion{prstr("beta")}, nil}, -1},
- {Version{1, 0, 0, []PRVersion{prstr("beta")}, nil}, Version{1, 0, 0, []PRVersion{prstr("beta"), prnum(2)}, nil}, -1},
- {Version{1, 0, 0, []PRVersion{prstr("beta"), prnum(2)}, nil}, Version{1, 0, 0, []PRVersion{prstr("beta"), prnum(11)}, nil}, -1},
- {Version{1, 0, 0, []PRVersion{prstr("beta"), prnum(11)}, nil}, Version{1, 0, 0, []PRVersion{prstr("rc"), prnum(1)}, nil}, -1},
- {Version{1, 0, 0, []PRVersion{prstr("rc"), prnum(1)}, nil}, Version{1, 0, 0, nil, nil}, -1},
-
- // Ignore Build metadata
- {Version{1, 0, 0, nil, []string{"1", "2", "3"}}, Version{1, 0, 0, nil, nil}, 0},
-}
-
-func TestCompare(t *testing.T) {
- for _, test := range compareTests {
- if res := test.v1.Compare(test.v2); res != test.result {
- t.Errorf("Comparing %q : %q, expected %d but got %d", test.v1, test.v2, test.result, res)
- }
- //Test counterpart
- if res := test.v2.Compare(test.v1); res != -test.result {
- t.Errorf("Comparing %q : %q, expected %d but got %d", test.v2, test.v1, -test.result, res)
- }
- }
-}
-
-type wrongformatTest struct {
- v *Version
- str string
-}
-
-var wrongformatTests = []wrongformatTest{
- {nil, ""},
- {nil, "."},
- {nil, "1."},
- {nil, ".1"},
- {nil, "a.b.c"},
- {nil, "1.a.b"},
- {nil, "1.1.a"},
- {nil, "1.a.1"},
- {nil, "a.1.1"},
- {nil, ".."},
- {nil, "1.."},
- {nil, "1.1."},
- {nil, "1..1"},
- {nil, "1.1.+123"},
- {nil, "1.1.-beta"},
- {nil, "-1.1.1"},
- {nil, "1.-1.1"},
- {nil, "1.1.-1"},
- // giant numbers
- {nil, "20000000000000000000.1.1"},
- {nil, "1.20000000000000000000.1"},
- {nil, "1.1.20000000000000000000"},
- {nil, "1.1.1-20000000000000000000"},
- // Leading zeroes
- {nil, "01.1.1"},
- {nil, "001.1.1"},
- {nil, "1.01.1"},
- {nil, "1.001.1"},
- {nil, "1.1.01"},
- {nil, "1.1.001"},
- {nil, "1.1.1-01"},
- {nil, "1.1.1-001"},
- {nil, "1.1.1-beta.01"},
- {nil, "1.1.1-beta.001"},
- {&Version{0, 0, 0, []PRVersion{prstr("!")}, nil}, "0.0.0-!"},
- {&Version{0, 0, 0, nil, []string{"!"}}, "0.0.0+!"},
- // empty prversion
- {&Version{0, 0, 0, []PRVersion{prstr(""), prstr("alpha")}, nil}, "0.0.0-.alpha"},
- // empty build meta data
- {&Version{0, 0, 0, []PRVersion{prstr("alpha")}, []string{""}}, "0.0.0-alpha+"},
- {&Version{0, 0, 0, []PRVersion{prstr("alpha")}, []string{"test", ""}}, "0.0.0-alpha+test."},
-}
-
-func TestWrongFormat(t *testing.T) {
- for _, test := range wrongformatTests {
-
- if res, err := Parse(test.str); err == nil {
- t.Errorf("Parsing wrong format version %q, expected error but got %q", test.str, res)
- }
-
- if test.v != nil {
- if err := test.v.Validate(); err == nil {
- t.Errorf("Validating wrong format version %q (%q), expected error", test.v, test.str)
- }
- }
- }
-}
-
-func TestCompareHelper(t *testing.T) {
- v := Version{1, 0, 0, []PRVersion{prstr("alpha")}, nil}
- v1 := Version{1, 0, 0, nil, nil}
- if !v.EQ(v) {
- t.Errorf("%q should be equal to %q", v, v)
- }
- if !v.Equals(v) {
- t.Errorf("%q should be equal to %q", v, v)
- }
- if !v1.NE(v) {
- t.Errorf("%q should not be equal to %q", v1, v)
- }
- if !v.GTE(v) {
- t.Errorf("%q should be greater than or equal to %q", v, v)
- }
- if !v.LTE(v) {
- t.Errorf("%q should be less than or equal to %q", v, v)
- }
- if !v.LT(v1) {
- t.Errorf("%q should be less than %q", v, v1)
- }
- if !v.LTE(v1) {
- t.Errorf("%q should be less than or equal %q", v, v1)
- }
- if !v.LE(v1) {
- t.Errorf("%q should be less than or equal %q", v, v1)
- }
- if !v1.GT(v) {
- t.Errorf("%q should be greater than %q", v1, v)
- }
- if !v1.GTE(v) {
- t.Errorf("%q should be greater than or equal %q", v1, v)
- }
- if !v1.GE(v) {
- t.Errorf("%q should be greater than or equal %q", v1, v)
- }
-}
-
-func TestPreReleaseVersions(t *testing.T) {
- p1, err := NewPRVersion("123")
- if !p1.IsNumeric() {
- t.Errorf("Expected numeric prversion, got %q", p1)
- }
- if p1.VersionNum != 123 {
- t.Error("Wrong prversion number")
- }
- if err != nil {
- t.Errorf("Not expected error %q", err)
- }
- p2, err := NewPRVersion("alpha")
- if p2.IsNumeric() {
- t.Errorf("Expected non-numeric prversion, got %q", p2)
- }
- if p2.VersionStr != "alpha" {
- t.Error("Wrong prversion string")
- }
- if err != nil {
- t.Errorf("Not expected error %q", err)
- }
-}
-
-func TestBuildMetaDataVersions(t *testing.T) {
- _, err := NewBuildVersion("123")
- if err != nil {
- t.Errorf("Unexpected error %q", err)
- }
-
- _, err = NewBuildVersion("build")
- if err != nil {
- t.Errorf("Unexpected error %q", err)
- }
-
- _, err = NewBuildVersion("test?")
- if err == nil {
- t.Error("Expected error, got none")
- }
-
- _, err = NewBuildVersion("")
- if err == nil {
- t.Error("Expected error, got none")
- }
-}
-
-func TestNewHelper(t *testing.T) {
- v, err := New("1.2.3")
- if err != nil {
- t.Fatalf("Unexpected error %q", err)
- }
-
- // New returns pointer
- if v == nil {
- t.Fatal("Version is nil")
- }
- if v.Compare(Version{1, 2, 3, nil, nil}) != 0 {
- t.Fatal("Unexpected comparison problem")
- }
-}
-
-func TestMakeHelper(t *testing.T) {
- v, err := Make("1.2.3")
- if err != nil {
- t.Fatalf("Unexpected error %q", err)
- }
- if v.Compare(Version{1, 2, 3, nil, nil}) != 0 {
- t.Fatal("Unexpected comparison problem")
- }
-}
-
-func BenchmarkParseSimple(b *testing.B) {
- const VERSION = "0.0.1"
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- Parse(VERSION)
- }
-}
-
-func BenchmarkParseComplex(b *testing.B) {
- const VERSION = "0.0.1-alpha.preview+123.456"
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- Parse(VERSION)
- }
-}
-
-func BenchmarkParseAverage(b *testing.B) {
- l := len(formatTests)
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- Parse(formatTests[n%l].result)
- }
-}
-
-func BenchmarkStringSimple(b *testing.B) {
- const VERSION = "0.0.1"
- v, _ := Parse(VERSION)
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- v.String()
- }
-}
-
-func BenchmarkStringLarger(b *testing.B) {
- const VERSION = "11.15.2012"
- v, _ := Parse(VERSION)
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- v.String()
- }
-}
-
-func BenchmarkStringComplex(b *testing.B) {
- const VERSION = "0.0.1-alpha.preview+123.456"
- v, _ := Parse(VERSION)
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- v.String()
- }
-}
-
-func BenchmarkStringAverage(b *testing.B) {
- l := len(formatTests)
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- formatTests[n%l].v.String()
- }
-}
-
-func BenchmarkValidateSimple(b *testing.B) {
- const VERSION = "0.0.1"
- v, _ := Parse(VERSION)
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- v.Validate()
- }
-}
-
-func BenchmarkValidateComplex(b *testing.B) {
- const VERSION = "0.0.1-alpha.preview+123.456"
- v, _ := Parse(VERSION)
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- v.Validate()
- }
-}
-
-func BenchmarkValidateAverage(b *testing.B) {
- l := len(formatTests)
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- formatTests[n%l].v.Validate()
- }
-}
-
-func BenchmarkCompareSimple(b *testing.B) {
- const VERSION = "0.0.1"
- v, _ := Parse(VERSION)
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- v.Compare(v)
- }
-}
-
-func BenchmarkCompareComplex(b *testing.B) {
- const VERSION = "0.0.1-alpha.preview+123.456"
- v, _ := Parse(VERSION)
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- v.Compare(v)
- }
-}
-
-func BenchmarkCompareAverage(b *testing.B) {
- l := len(compareTests)
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- compareTests[n%l].v1.Compare((compareTests[n%l].v2))
- }
-}
diff --git a/Godeps/_workspace/src/github.com/blang/semver/sort_test.go b/Godeps/_workspace/src/github.com/blang/semver/sort_test.go
deleted file mode 100644
index 68893972a..000000000
--- a/Godeps/_workspace/src/github.com/blang/semver/sort_test.go
+++ /dev/null
@@ -1,30 +0,0 @@
-package semver
-
-import (
- "reflect"
- "testing"
-)
-
-func TestSort(t *testing.T) {
- v100, _ := Parse("1.0.0")
- v010, _ := Parse("0.1.0")
- v001, _ := Parse("0.0.1")
- versions := []Version{v010, v100, v001}
- Sort(versions)
-
- correct := []Version{v001, v010, v100}
- if !reflect.DeepEqual(versions, correct) {
- t.Fatalf("Sort returned wrong order: %s", versions)
- }
-}
-
-func BenchmarkSort(b *testing.B) {
- v100, _ := Parse("1.0.0")
- v010, _ := Parse("0.1.0")
- v001, _ := Parse("0.0.1")
- b.ReportAllocs()
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- Sort([]Version{v010, v100, v001})
- }
-}
diff --git a/Godeps/_workspace/src/github.com/blang/semver/sql_test.go b/Godeps/_workspace/src/github.com/blang/semver/sql_test.go
deleted file mode 100644
index ebf48b584..000000000
--- a/Godeps/_workspace/src/github.com/blang/semver/sql_test.go
+++ /dev/null
@@ -1,38 +0,0 @@
-package semver
-
-import (
- "testing"
-)
-
-type scanTest struct {
- val interface{}
- shouldError bool
- expected string
-}
-
-var scanTests = []scanTest{
- {"1.2.3", false, "1.2.3"},
- {[]byte("1.2.3"), false, "1.2.3"},
- {7, true, ""},
- {7e4, true, ""},
- {true, true, ""},
-}
-
-func TestScanString(t *testing.T) {
- for _, tc := range scanTests {
- s := &Version{}
- err := s.Scan(tc.val)
- if tc.shouldError {
- if err == nil {
- t.Fatalf("Scan did not return an error on %v (%T)", tc.val, tc.val)
- }
- } else {
- if err != nil {
- t.Fatalf("Scan returned an unexpected error: %s (%T) on %v (%T)", tc.val, tc.val, tc.val, tc.val)
- }
- if val, _ := s.Value(); val != tc.expected {
- t.Errorf("Wrong Value returned, expected %q, got %q", tc.expected, val)
- }
- }
- }
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/gocapability/capability/capability_test.go b/Godeps/_workspace/src/github.com/syndtr/gocapability/capability/capability_test.go
deleted file mode 100644
index 8108655c0..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/gocapability/capability/capability_test.go
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright (c) 2013, Suryandaru Triandana
-// All rights reserved.
-//
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package capability
-
-import "testing"
-
-func TestState(t *testing.T) {
- testEmpty := func(name string, c Capabilities, whats CapType) {
- for i := CapType(1); i <= BOUNDING; i <<= 1 {
- if (i&whats) != 0 && !c.Empty(i) {
- t.Errorf(name+": capabilities set %q wasn't empty", i)
- }
- }
- }
- testFull := func(name string, c Capabilities, whats CapType) {
- for i := CapType(1); i <= BOUNDING; i <<= 1 {
- if (i&whats) != 0 && !c.Full(i) {
- t.Errorf(name+": capabilities set %q wasn't full", i)
- }
- }
- }
- testPartial := func(name string, c Capabilities, whats CapType) {
- for i := CapType(1); i <= BOUNDING; i <<= 1 {
- if (i&whats) != 0 && (c.Empty(i) || c.Full(i)) {
- t.Errorf(name+": capabilities set %q wasn't partial", i)
- }
- }
- }
- testGet := func(name string, c Capabilities, whats CapType, max Cap) {
- for i := CapType(1); i <= BOUNDING; i <<= 1 {
- if (i & whats) == 0 {
- continue
- }
- for j := Cap(0); j <= max; j++ {
- if !c.Get(i, j) {
- t.Errorf(name+": capability %q wasn't found on %q", j, i)
- }
- }
- }
- }
-
- capf := new(capsFile)
- capf.data.version = 2
- for _, tc := range []struct {
- name string
- c Capabilities
- sets CapType
- max Cap
- }{
- {"v1", new(capsV1), EFFECTIVE | PERMITTED, CAP_AUDIT_CONTROL},
- {"v3", new(capsV3), EFFECTIVE | PERMITTED | BOUNDING, CAP_LAST_CAP},
- {"file_v1", new(capsFile), EFFECTIVE | PERMITTED, CAP_AUDIT_CONTROL},
- {"file_v2", capf, EFFECTIVE | PERMITTED, CAP_LAST_CAP},
- } {
- testEmpty(tc.name, tc.c, tc.sets)
- tc.c.Fill(CAPS | BOUNDS)
- testFull(tc.name, tc.c, tc.sets)
- testGet(tc.name, tc.c, tc.sets, tc.max)
- tc.c.Clear(CAPS | BOUNDS)
- testEmpty(tc.name, tc.c, tc.sets)
- for i := CapType(1); i <= BOUNDING; i <<= 1 {
- for j := Cap(0); j <= CAP_LAST_CAP; j++ {
- tc.c.Set(i, j)
- }
- }
- testFull(tc.name, tc.c, tc.sets)
- testGet(tc.name, tc.c, tc.sets, tc.max)
- for i := CapType(1); i <= BOUNDING; i <<= 1 {
- for j := Cap(0); j <= CAP_LAST_CAP; j++ {
- tc.c.Unset(i, j)
- }
- }
- testEmpty(tc.name, tc.c, tc.sets)
- tc.c.Set(PERMITTED, CAP_CHOWN)
- testPartial(tc.name, tc.c, PERMITTED)
- tc.c.Clear(CAPS | BOUNDS)
- testEmpty(tc.name, tc.c, tc.sets)
- }
-}
diff --git a/Godeps/_workspace/src/github.com/syndtr/gocapability/capability/enumgen/gen.go b/Godeps/_workspace/src/github.com/syndtr/gocapability/capability/enumgen/gen.go
deleted file mode 100644
index 4c733809b..000000000
--- a/Godeps/_workspace/src/github.com/syndtr/gocapability/capability/enumgen/gen.go
+++ /dev/null
@@ -1,92 +0,0 @@
-package main
-
-import (
- "bytes"
- "fmt"
- "go/ast"
- "go/format"
- "go/parser"
- "go/token"
- "io/ioutil"
- "log"
- "os"
- "strings"
-)
-
-const fileName = "enum.go"
-const genName = "enum_gen.go"
-
-type generator struct {
- buf bytes.Buffer
- caps []string
-}
-
-func (g *generator) writeHeader() {
- g.buf.WriteString("// generated file; DO NOT EDIT - use go generate in directory with source\n")
- g.buf.WriteString("\n")
- g.buf.WriteString("package capability")
-}
-
-func (g *generator) writeStringFunc() {
- g.buf.WriteString("\n")
- g.buf.WriteString("func (c Cap) String() string {\n")
- g.buf.WriteString("switch c {\n")
- for _, cap := range g.caps {
- fmt.Fprintf(&g.buf, "case %s:\n", cap)
- fmt.Fprintf(&g.buf, "return \"%s\"\n", strings.ToLower(cap[4:]))
- }
- g.buf.WriteString("}\n")
- g.buf.WriteString("return \"unknown\"\n")
- g.buf.WriteString("}\n")
-}
-
-func (g *generator) writeListFunc() {
- g.buf.WriteString("\n")
- g.buf.WriteString("// List returns list of all supported capabilities\n")
- g.buf.WriteString("func List() []Cap {\n")
- g.buf.WriteString("return []Cap{\n")
- for _, cap := range g.caps {
- fmt.Fprintf(&g.buf, "%s,\n", cap)
- }
- g.buf.WriteString("}\n")
- g.buf.WriteString("}\n")
-}
-
-func main() {
- fs := token.NewFileSet()
- parsedFile, err := parser.ParseFile(fs, fileName, nil, 0)
- if err != nil {
- log.Fatal(err)
- }
- var caps []string
- for _, decl := range parsedFile.Decls {
- decl, ok := decl.(*ast.GenDecl)
- if !ok || decl.Tok != token.CONST {
- continue
- }
- for _, spec := range decl.Specs {
- vspec := spec.(*ast.ValueSpec)
- name := vspec.Names[0].Name
- if strings.HasPrefix(name, "CAP_") {
- caps = append(caps, name)
- }
- }
- }
- g := &generator{caps: caps}
- g.writeHeader()
- g.writeStringFunc()
- g.writeListFunc()
- src, err := format.Source(g.buf.Bytes())
- if err != nil {
- fmt.Println("generated invalid Go code")
- fmt.Println(g.buf.String())
- log.Fatal(err)
- }
- fi, err := os.Stat(fileName)
- if err != nil {
- log.Fatal(err)
- }
- if err := ioutil.WriteFile(genName, src, fi.Mode().Perm()); err != nil {
- log.Fatal(err)
- }
-}
diff --git a/Makefile b/Makefile
index aeca9665a..40401df5a 100644
--- a/Makefile
+++ b/Makefile
@@ -3,10 +3,8 @@ BINDIR ?= $(DESTDIR)/usr/bin
BUILDTAGS=
RUNTIME ?= runc
-RUNTIME_TOOLS_LINK := $(CURDIR)/Godeps/_workspace/src/github.com/opencontainers/runtime-tools
-export GOPATH:=$(CURDIR)/Godeps/_workspace:$(GOPATH)
-all: $(RUNTIME_TOOLS_LINK)
+all:
go build -tags "$(BUILDTAGS)" -o oci-runtime-tool ./cmd/oci-runtime-tool
go build -tags "$(BUILDTAGS)" -o runtimetest ./cmd/runtimetest
@@ -33,9 +31,6 @@ clean:
rm -f oci-runtime-tool runtimetest *.1
rm -f $(RUNTIME_TOOLS_LINK)
-$(RUNTIME_TOOLS_LINK):
- ln -sf $(CURDIR) $(RUNTIME_TOOLS_LINK)
-
localvalidation:
RUNTIME=$(RUNTIME) go test -tags "$(BUILDTAGS)" ${TESTFLAGS} -v github.com/opencontainers/runtime-tools/validation
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/.gitignore b/vendor/github.com/Sirupsen/logrus/.gitignore
similarity index 100%
rename from Godeps/_workspace/src/github.com/Sirupsen/logrus/.gitignore
rename to vendor/github.com/Sirupsen/logrus/.gitignore
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/.travis.yml b/vendor/github.com/Sirupsen/logrus/.travis.yml
similarity index 100%
rename from Godeps/_workspace/src/github.com/Sirupsen/logrus/.travis.yml
rename to vendor/github.com/Sirupsen/logrus/.travis.yml
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/CHANGELOG.md b/vendor/github.com/Sirupsen/logrus/CHANGELOG.md
similarity index 100%
rename from Godeps/_workspace/src/github.com/Sirupsen/logrus/CHANGELOG.md
rename to vendor/github.com/Sirupsen/logrus/CHANGELOG.md
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/LICENSE b/vendor/github.com/Sirupsen/logrus/LICENSE
similarity index 100%
rename from Godeps/_workspace/src/github.com/Sirupsen/logrus/LICENSE
rename to vendor/github.com/Sirupsen/logrus/LICENSE
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/README.md b/vendor/github.com/Sirupsen/logrus/README.md
similarity index 100%
rename from Godeps/_workspace/src/github.com/Sirupsen/logrus/README.md
rename to vendor/github.com/Sirupsen/logrus/README.md
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/entry.go b/vendor/github.com/Sirupsen/logrus/entry.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/Sirupsen/logrus/entry.go
rename to vendor/github.com/Sirupsen/logrus/entry.go
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/exported.go b/vendor/github.com/Sirupsen/logrus/exported.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/Sirupsen/logrus/exported.go
rename to vendor/github.com/Sirupsen/logrus/exported.go
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/formatter.go b/vendor/github.com/Sirupsen/logrus/formatter.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/Sirupsen/logrus/formatter.go
rename to vendor/github.com/Sirupsen/logrus/formatter.go
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks.go b/vendor/github.com/Sirupsen/logrus/hooks.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/Sirupsen/logrus/hooks.go
rename to vendor/github.com/Sirupsen/logrus/hooks.go
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/json_formatter.go b/vendor/github.com/Sirupsen/logrus/json_formatter.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/Sirupsen/logrus/json_formatter.go
rename to vendor/github.com/Sirupsen/logrus/json_formatter.go
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/logger.go b/vendor/github.com/Sirupsen/logrus/logger.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/Sirupsen/logrus/logger.go
rename to vendor/github.com/Sirupsen/logrus/logger.go
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/logrus.go b/vendor/github.com/Sirupsen/logrus/logrus.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/Sirupsen/logrus/logrus.go
rename to vendor/github.com/Sirupsen/logrus/logrus.go
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/terminal_bsd.go b/vendor/github.com/Sirupsen/logrus/terminal_bsd.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/Sirupsen/logrus/terminal_bsd.go
rename to vendor/github.com/Sirupsen/logrus/terminal_bsd.go
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/terminal_linux.go b/vendor/github.com/Sirupsen/logrus/terminal_linux.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/Sirupsen/logrus/terminal_linux.go
rename to vendor/github.com/Sirupsen/logrus/terminal_linux.go
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/terminal_notwindows.go b/vendor/github.com/Sirupsen/logrus/terminal_notwindows.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/Sirupsen/logrus/terminal_notwindows.go
rename to vendor/github.com/Sirupsen/logrus/terminal_notwindows.go
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/terminal_windows.go b/vendor/github.com/Sirupsen/logrus/terminal_windows.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/Sirupsen/logrus/terminal_windows.go
rename to vendor/github.com/Sirupsen/logrus/terminal_windows.go
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/text_formatter.go b/vendor/github.com/Sirupsen/logrus/text_formatter.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/Sirupsen/logrus/text_formatter.go
rename to vendor/github.com/Sirupsen/logrus/text_formatter.go
diff --git a/Godeps/_workspace/src/github.com/Sirupsen/logrus/writer.go b/vendor/github.com/Sirupsen/logrus/writer.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/Sirupsen/logrus/writer.go
rename to vendor/github.com/Sirupsen/logrus/writer.go
diff --git a/Godeps/_workspace/src/github.com/blang/semver/LICENSE b/vendor/github.com/blang/semver/LICENSE
similarity index 100%
rename from Godeps/_workspace/src/github.com/blang/semver/LICENSE
rename to vendor/github.com/blang/semver/LICENSE
diff --git a/Godeps/_workspace/src/github.com/blang/semver/README.md b/vendor/github.com/blang/semver/README.md
similarity index 100%
rename from Godeps/_workspace/src/github.com/blang/semver/README.md
rename to vendor/github.com/blang/semver/README.md
diff --git a/Godeps/_workspace/src/github.com/blang/semver/json.go b/vendor/github.com/blang/semver/json.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/blang/semver/json.go
rename to vendor/github.com/blang/semver/json.go
diff --git a/Godeps/_workspace/src/github.com/blang/semver/range.go b/vendor/github.com/blang/semver/range.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/blang/semver/range.go
rename to vendor/github.com/blang/semver/range.go
diff --git a/Godeps/_workspace/src/github.com/blang/semver/semver.go b/vendor/github.com/blang/semver/semver.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/blang/semver/semver.go
rename to vendor/github.com/blang/semver/semver.go
diff --git a/Godeps/_workspace/src/github.com/blang/semver/sort.go b/vendor/github.com/blang/semver/sort.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/blang/semver/sort.go
rename to vendor/github.com/blang/semver/sort.go
diff --git a/Godeps/_workspace/src/github.com/blang/semver/sql.go b/vendor/github.com/blang/semver/sql.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/blang/semver/sql.go
rename to vendor/github.com/blang/semver/sql.go
diff --git a/Godeps/_workspace/src/github.com/hashicorp/errwrap/LICENSE b/vendor/github.com/hashicorp/errwrap/LICENSE
similarity index 100%
rename from Godeps/_workspace/src/github.com/hashicorp/errwrap/LICENSE
rename to vendor/github.com/hashicorp/errwrap/LICENSE
diff --git a/Godeps/_workspace/src/github.com/hashicorp/errwrap/README.md b/vendor/github.com/hashicorp/errwrap/README.md
similarity index 100%
rename from Godeps/_workspace/src/github.com/hashicorp/errwrap/README.md
rename to vendor/github.com/hashicorp/errwrap/README.md
diff --git a/Godeps/_workspace/src/github.com/hashicorp/errwrap/errwrap.go b/vendor/github.com/hashicorp/errwrap/errwrap.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/hashicorp/errwrap/errwrap.go
rename to vendor/github.com/hashicorp/errwrap/errwrap.go
diff --git a/Godeps/_workspace/src/github.com/hashicorp/go-multierror/.travis.yml b/vendor/github.com/hashicorp/go-multierror/.travis.yml
similarity index 100%
rename from Godeps/_workspace/src/github.com/hashicorp/go-multierror/.travis.yml
rename to vendor/github.com/hashicorp/go-multierror/.travis.yml
diff --git a/Godeps/_workspace/src/github.com/hashicorp/go-multierror/LICENSE b/vendor/github.com/hashicorp/go-multierror/LICENSE
similarity index 100%
rename from Godeps/_workspace/src/github.com/hashicorp/go-multierror/LICENSE
rename to vendor/github.com/hashicorp/go-multierror/LICENSE
diff --git a/Godeps/_workspace/src/github.com/hashicorp/go-multierror/Makefile b/vendor/github.com/hashicorp/go-multierror/Makefile
similarity index 100%
rename from Godeps/_workspace/src/github.com/hashicorp/go-multierror/Makefile
rename to vendor/github.com/hashicorp/go-multierror/Makefile
diff --git a/Godeps/_workspace/src/github.com/hashicorp/go-multierror/README.md b/vendor/github.com/hashicorp/go-multierror/README.md
similarity index 100%
rename from Godeps/_workspace/src/github.com/hashicorp/go-multierror/README.md
rename to vendor/github.com/hashicorp/go-multierror/README.md
diff --git a/Godeps/_workspace/src/github.com/hashicorp/go-multierror/append.go b/vendor/github.com/hashicorp/go-multierror/append.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/hashicorp/go-multierror/append.go
rename to vendor/github.com/hashicorp/go-multierror/append.go
diff --git a/Godeps/_workspace/src/github.com/hashicorp/go-multierror/flatten.go b/vendor/github.com/hashicorp/go-multierror/flatten.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/hashicorp/go-multierror/flatten.go
rename to vendor/github.com/hashicorp/go-multierror/flatten.go
diff --git a/Godeps/_workspace/src/github.com/hashicorp/go-multierror/format.go b/vendor/github.com/hashicorp/go-multierror/format.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/hashicorp/go-multierror/format.go
rename to vendor/github.com/hashicorp/go-multierror/format.go
diff --git a/Godeps/_workspace/src/github.com/hashicorp/go-multierror/multierror.go b/vendor/github.com/hashicorp/go-multierror/multierror.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/hashicorp/go-multierror/multierror.go
rename to vendor/github.com/hashicorp/go-multierror/multierror.go
diff --git a/Godeps/_workspace/src/github.com/hashicorp/go-multierror/prefix.go b/vendor/github.com/hashicorp/go-multierror/prefix.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/hashicorp/go-multierror/prefix.go
rename to vendor/github.com/hashicorp/go-multierror/prefix.go
diff --git a/Godeps/_workspace/src/github.com/mndrix/tap-go/.gitignore b/vendor/github.com/mndrix/tap-go/.gitignore
similarity index 100%
rename from Godeps/_workspace/src/github.com/mndrix/tap-go/.gitignore
rename to vendor/github.com/mndrix/tap-go/.gitignore
diff --git a/Godeps/_workspace/src/github.com/mndrix/tap-go/LICENSE b/vendor/github.com/mndrix/tap-go/LICENSE
similarity index 100%
rename from Godeps/_workspace/src/github.com/mndrix/tap-go/LICENSE
rename to vendor/github.com/mndrix/tap-go/LICENSE
diff --git a/Godeps/_workspace/src/github.com/mndrix/tap-go/Makefile b/vendor/github.com/mndrix/tap-go/Makefile
similarity index 100%
rename from Godeps/_workspace/src/github.com/mndrix/tap-go/Makefile
rename to vendor/github.com/mndrix/tap-go/Makefile
diff --git a/Godeps/_workspace/src/github.com/mndrix/tap-go/README.md b/vendor/github.com/mndrix/tap-go/README.md
similarity index 100%
rename from Godeps/_workspace/src/github.com/mndrix/tap-go/README.md
rename to vendor/github.com/mndrix/tap-go/README.md
diff --git a/Godeps/_workspace/src/github.com/mndrix/tap-go/tap.go b/vendor/github.com/mndrix/tap-go/tap.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/mndrix/tap-go/tap.go
rename to vendor/github.com/mndrix/tap-go/tap.go
diff --git a/Godeps/_workspace/src/github.com/mrunalp/fileutils/.gitignore b/vendor/github.com/mrunalp/fileutils/.gitignore
similarity index 100%
rename from Godeps/_workspace/src/github.com/mrunalp/fileutils/.gitignore
rename to vendor/github.com/mrunalp/fileutils/.gitignore
diff --git a/Godeps/_workspace/src/github.com/mrunalp/fileutils/LICENSE b/vendor/github.com/mrunalp/fileutils/LICENSE
similarity index 100%
rename from Godeps/_workspace/src/github.com/mrunalp/fileutils/LICENSE
rename to vendor/github.com/mrunalp/fileutils/LICENSE
diff --git a/Godeps/_workspace/src/github.com/mrunalp/fileutils/MAINTAINERS b/vendor/github.com/mrunalp/fileutils/MAINTAINERS
similarity index 100%
rename from Godeps/_workspace/src/github.com/mrunalp/fileutils/MAINTAINERS
rename to vendor/github.com/mrunalp/fileutils/MAINTAINERS
diff --git a/Godeps/_workspace/src/github.com/mrunalp/fileutils/README.md b/vendor/github.com/mrunalp/fileutils/README.md
similarity index 100%
rename from Godeps/_workspace/src/github.com/mrunalp/fileutils/README.md
rename to vendor/github.com/mrunalp/fileutils/README.md
diff --git a/Godeps/_workspace/src/github.com/mrunalp/fileutils/fileutils.go b/vendor/github.com/mrunalp/fileutils/fileutils.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/mrunalp/fileutils/fileutils.go
rename to vendor/github.com/mrunalp/fileutils/fileutils.go
diff --git a/Godeps/_workspace/src/github.com/mrunalp/fileutils/idtools.go b/vendor/github.com/mrunalp/fileutils/idtools.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/mrunalp/fileutils/idtools.go
rename to vendor/github.com/mrunalp/fileutils/idtools.go
diff --git a/Godeps/_workspace/src/github.com/opencontainers/runtime-spec/LICENSE b/vendor/github.com/opencontainers/runtime-spec/LICENSE
similarity index 100%
rename from Godeps/_workspace/src/github.com/opencontainers/runtime-spec/LICENSE
rename to vendor/github.com/opencontainers/runtime-spec/LICENSE
diff --git a/Godeps/_workspace/src/github.com/opencontainers/runtime-spec/specs-go/config.go b/vendor/github.com/opencontainers/runtime-spec/specs-go/config.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/opencontainers/runtime-spec/specs-go/config.go
rename to vendor/github.com/opencontainers/runtime-spec/specs-go/config.go
diff --git a/Godeps/_workspace/src/github.com/opencontainers/runtime-spec/specs-go/state.go b/vendor/github.com/opencontainers/runtime-spec/specs-go/state.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/opencontainers/runtime-spec/specs-go/state.go
rename to vendor/github.com/opencontainers/runtime-spec/specs-go/state.go
diff --git a/Godeps/_workspace/src/github.com/opencontainers/runtime-spec/specs-go/version.go b/vendor/github.com/opencontainers/runtime-spec/specs-go/version.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/opencontainers/runtime-spec/specs-go/version.go
rename to vendor/github.com/opencontainers/runtime-spec/specs-go/version.go
diff --git a/Godeps/_workspace/src/github.com/satori/go.uuid/.travis.yml b/vendor/github.com/satori/go.uuid/.travis.yml
similarity index 100%
rename from Godeps/_workspace/src/github.com/satori/go.uuid/.travis.yml
rename to vendor/github.com/satori/go.uuid/.travis.yml
diff --git a/Godeps/_workspace/src/github.com/satori/go.uuid/LICENSE b/vendor/github.com/satori/go.uuid/LICENSE
similarity index 100%
rename from Godeps/_workspace/src/github.com/satori/go.uuid/LICENSE
rename to vendor/github.com/satori/go.uuid/LICENSE
diff --git a/Godeps/_workspace/src/github.com/satori/go.uuid/README.md b/vendor/github.com/satori/go.uuid/README.md
similarity index 100%
rename from Godeps/_workspace/src/github.com/satori/go.uuid/README.md
rename to vendor/github.com/satori/go.uuid/README.md
diff --git a/Godeps/_workspace/src/github.com/satori/go.uuid/uuid.go b/vendor/github.com/satori/go.uuid/uuid.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/satori/go.uuid/uuid.go
rename to vendor/github.com/satori/go.uuid/uuid.go
diff --git a/vendor/github.com/syndtr/gocapability/LICENSE b/vendor/github.com/syndtr/gocapability/LICENSE
new file mode 100644
index 000000000..80dd96de7
--- /dev/null
+++ b/vendor/github.com/syndtr/gocapability/LICENSE
@@ -0,0 +1,24 @@
+Copyright 2013 Suryandaru Triandana
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Godeps/_workspace/src/github.com/syndtr/gocapability/capability/capability.go b/vendor/github.com/syndtr/gocapability/capability/capability.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/syndtr/gocapability/capability/capability.go
rename to vendor/github.com/syndtr/gocapability/capability/capability.go
diff --git a/Godeps/_workspace/src/github.com/syndtr/gocapability/capability/capability_linux.go b/vendor/github.com/syndtr/gocapability/capability/capability_linux.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/syndtr/gocapability/capability/capability_linux.go
rename to vendor/github.com/syndtr/gocapability/capability/capability_linux.go
diff --git a/Godeps/_workspace/src/github.com/syndtr/gocapability/capability/capability_noop.go b/vendor/github.com/syndtr/gocapability/capability/capability_noop.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/syndtr/gocapability/capability/capability_noop.go
rename to vendor/github.com/syndtr/gocapability/capability/capability_noop.go
diff --git a/Godeps/_workspace/src/github.com/syndtr/gocapability/capability/enum.go b/vendor/github.com/syndtr/gocapability/capability/enum.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/syndtr/gocapability/capability/enum.go
rename to vendor/github.com/syndtr/gocapability/capability/enum.go
diff --git a/Godeps/_workspace/src/github.com/syndtr/gocapability/capability/enum_gen.go b/vendor/github.com/syndtr/gocapability/capability/enum_gen.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/syndtr/gocapability/capability/enum_gen.go
rename to vendor/github.com/syndtr/gocapability/capability/enum_gen.go
diff --git a/Godeps/_workspace/src/github.com/syndtr/gocapability/capability/syscall_linux.go b/vendor/github.com/syndtr/gocapability/capability/syscall_linux.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/syndtr/gocapability/capability/syscall_linux.go
rename to vendor/github.com/syndtr/gocapability/capability/syscall_linux.go
diff --git a/Godeps/_workspace/src/github.com/urfave/cli/.gitignore b/vendor/github.com/urfave/cli/.gitignore
similarity index 100%
rename from Godeps/_workspace/src/github.com/urfave/cli/.gitignore
rename to vendor/github.com/urfave/cli/.gitignore
diff --git a/Godeps/_workspace/src/github.com/urfave/cli/.travis.yml b/vendor/github.com/urfave/cli/.travis.yml
similarity index 100%
rename from Godeps/_workspace/src/github.com/urfave/cli/.travis.yml
rename to vendor/github.com/urfave/cli/.travis.yml
diff --git a/Godeps/_workspace/src/github.com/urfave/cli/CHANGELOG.md b/vendor/github.com/urfave/cli/CHANGELOG.md
similarity index 100%
rename from Godeps/_workspace/src/github.com/urfave/cli/CHANGELOG.md
rename to vendor/github.com/urfave/cli/CHANGELOG.md
diff --git a/Godeps/_workspace/src/github.com/urfave/cli/LICENSE b/vendor/github.com/urfave/cli/LICENSE
similarity index 100%
rename from Godeps/_workspace/src/github.com/urfave/cli/LICENSE
rename to vendor/github.com/urfave/cli/LICENSE
diff --git a/Godeps/_workspace/src/github.com/urfave/cli/README.md b/vendor/github.com/urfave/cli/README.md
similarity index 100%
rename from Godeps/_workspace/src/github.com/urfave/cli/README.md
rename to vendor/github.com/urfave/cli/README.md
diff --git a/Godeps/_workspace/src/github.com/urfave/cli/app.go b/vendor/github.com/urfave/cli/app.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/urfave/cli/app.go
rename to vendor/github.com/urfave/cli/app.go
diff --git a/Godeps/_workspace/src/github.com/urfave/cli/appveyor.yml b/vendor/github.com/urfave/cli/appveyor.yml
similarity index 100%
rename from Godeps/_workspace/src/github.com/urfave/cli/appveyor.yml
rename to vendor/github.com/urfave/cli/appveyor.yml
diff --git a/Godeps/_workspace/src/github.com/urfave/cli/category.go b/vendor/github.com/urfave/cli/category.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/urfave/cli/category.go
rename to vendor/github.com/urfave/cli/category.go
diff --git a/Godeps/_workspace/src/github.com/urfave/cli/cli.go b/vendor/github.com/urfave/cli/cli.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/urfave/cli/cli.go
rename to vendor/github.com/urfave/cli/cli.go
diff --git a/Godeps/_workspace/src/github.com/urfave/cli/command.go b/vendor/github.com/urfave/cli/command.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/urfave/cli/command.go
rename to vendor/github.com/urfave/cli/command.go
diff --git a/Godeps/_workspace/src/github.com/urfave/cli/context.go b/vendor/github.com/urfave/cli/context.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/urfave/cli/context.go
rename to vendor/github.com/urfave/cli/context.go
diff --git a/Godeps/_workspace/src/github.com/urfave/cli/errors.go b/vendor/github.com/urfave/cli/errors.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/urfave/cli/errors.go
rename to vendor/github.com/urfave/cli/errors.go
diff --git a/Godeps/_workspace/src/github.com/urfave/cli/flag-types.json b/vendor/github.com/urfave/cli/flag-types.json
similarity index 100%
rename from Godeps/_workspace/src/github.com/urfave/cli/flag-types.json
rename to vendor/github.com/urfave/cli/flag-types.json
diff --git a/Godeps/_workspace/src/github.com/urfave/cli/flag.go b/vendor/github.com/urfave/cli/flag.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/urfave/cli/flag.go
rename to vendor/github.com/urfave/cli/flag.go
diff --git a/Godeps/_workspace/src/github.com/urfave/cli/flag_generated.go b/vendor/github.com/urfave/cli/flag_generated.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/urfave/cli/flag_generated.go
rename to vendor/github.com/urfave/cli/flag_generated.go
diff --git a/Godeps/_workspace/src/github.com/urfave/cli/funcs.go b/vendor/github.com/urfave/cli/funcs.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/urfave/cli/funcs.go
rename to vendor/github.com/urfave/cli/funcs.go
diff --git a/Godeps/_workspace/src/github.com/urfave/cli/generate-flag-types b/vendor/github.com/urfave/cli/generate-flag-types
similarity index 100%
rename from Godeps/_workspace/src/github.com/urfave/cli/generate-flag-types
rename to vendor/github.com/urfave/cli/generate-flag-types
diff --git a/Godeps/_workspace/src/github.com/urfave/cli/help.go b/vendor/github.com/urfave/cli/help.go
similarity index 100%
rename from Godeps/_workspace/src/github.com/urfave/cli/help.go
rename to vendor/github.com/urfave/cli/help.go
diff --git a/Godeps/_workspace/src/github.com/urfave/cli/runtests b/vendor/github.com/urfave/cli/runtests
similarity index 100%
rename from Godeps/_workspace/src/github.com/urfave/cli/runtests
rename to vendor/github.com/urfave/cli/runtests