Suppress printing the internals of context.Context. Added a flag to override this behaviour.
diff --git a/format/format.go b/format/format.go
index 952726e..8fde56b 100644
--- a/format/format.go
+++ b/format/format.go
@@ -4,6 +4,7 @@
 package format
 
 import (
+	"context"
 	"fmt"
 	"reflect"
 	"strconv"
@@ -22,6 +23,14 @@
 */
 var UseStringerRepresentation = false
 
+/*
+Print the content of context objects. By default it will be suppressed.
+
+Set PrintContextObjects = true to enable printing of the context internals.
+*/
+var PrintContextObjects = false
+var contextType = reflect.TypeOf((*context.Context)(nil)).Elem()
+
 //The default indentation string emitted by the format package
 var Indent = "    "
 
@@ -57,6 +66,8 @@
 Modify format.MaxDepth to control how deep the recursion is allowed to go
 Set format.UseStringerRepresentation to true to return object.GoString() or object.String() when available instead of
 recursing into the object.
+
+Set PrintContextObjects to true to print the content of objects implementing context.Context
 */
 func Object(object interface{}, indentation uint) string {
 	indent := strings.Repeat(Indent, int(indentation))
@@ -124,6 +135,12 @@
 		}
 	}
 
+	if !PrintContextObjects {
+		if value.Type().Implements(contextType) && indentation > 1 {
+			return "<suppressed>"
+		}
+	}
+
 	switch value.Kind() {
 	case reflect.Bool:
 		return fmt.Sprintf("%v", value.Bool())
diff --git a/format/format_test.go b/format/format_test.go
index b27df8e..1b6f559 100644
--- a/format/format_test.go
+++ b/format/format_test.go
@@ -1,8 +1,11 @@
 package format_test
 
 import (
+	"context"
 	"fmt"
+	"net/http"
 	"strings"
+	"time"
 
 	. "github.com/onsi/ginkgo"
 	. "github.com/onsi/gomega"
@@ -465,4 +468,32 @@
 			})
 		})
 	})
+
+	Describe("Printing a context.Context field", func() {
+		req, _ := http.NewRequest("GET", "http://example.com/test", nil)
+		ctx, _ := context.WithTimeout(context.Background(), time.Second)
+		reqWithContext := req.WithContext(ctx)
+
+		It("Suppresses the content by default", func() {
+			Ω(Object(reqWithContext, 1)).Should(ContainSubstring("<suppressed>"))
+		})
+
+		It("Doesn't supress the context if it's the object being printed", func() {
+			Ω(Object(ctx, 1)).ShouldNot(MatchRegexp("^.*<suppressed>$"))
+		})
+
+		Context("PrintContextObjects is set", func() {
+			BeforeEach(func() {
+				PrintContextObjects = true
+			})
+
+			AfterEach(func() {
+				PrintContextObjects = false
+			})
+
+			It("Prints the context", func() {
+				Ω(Object(reqWithContext, 1)).ShouldNot(ContainSubstring("<suppressed>"))
+			})
+		})
+	})
 })