summaryrefslogtreecommitdiff
path: root/vendor/github.com/onsi/ginkgo/extensions/table/table_entry.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/onsi/ginkgo/extensions/table/table_entry.go')
-rw-r--r--vendor/github.com/onsi/ginkgo/extensions/table/table_entry.go81
1 files changed, 81 insertions, 0 deletions
diff --git a/vendor/github.com/onsi/ginkgo/extensions/table/table_entry.go b/vendor/github.com/onsi/ginkgo/extensions/table/table_entry.go
new file mode 100644
index 000000000..5fa645bce
--- /dev/null
+++ b/vendor/github.com/onsi/ginkgo/extensions/table/table_entry.go
@@ -0,0 +1,81 @@
+package table
+
+import (
+ "reflect"
+
+ "github.com/onsi/ginkgo"
+)
+
+/*
+TableEntry represents an entry in a table test. You generally use the `Entry` constructor.
+*/
+type TableEntry struct {
+ Description string
+ Parameters []interface{}
+ Pending bool
+ Focused bool
+}
+
+func (t TableEntry) generateIt(itBody reflect.Value) {
+ if t.Pending {
+ ginkgo.PIt(t.Description)
+ return
+ }
+
+ values := []reflect.Value{}
+ for i, param := range t.Parameters {
+ var value reflect.Value
+
+ if param == nil {
+ inType := itBody.Type().In(i)
+ value = reflect.Zero(inType)
+ } else {
+ value = reflect.ValueOf(param)
+ }
+
+ values = append(values, value)
+ }
+
+ body := func() {
+ itBody.Call(values)
+ }
+
+ if t.Focused {
+ ginkgo.FIt(t.Description, body)
+ } else {
+ ginkgo.It(t.Description, body)
+ }
+}
+
+/*
+Entry constructs a TableEntry.
+
+The first argument is a required description (this becomes the content of the generated Ginkgo `It`).
+Subsequent parameters are saved off and sent to the callback passed in to `DescribeTable`.
+
+Each Entry ends up generating an individual Ginkgo It.
+*/
+func Entry(description string, parameters ...interface{}) TableEntry {
+ return TableEntry{description, parameters, false, false}
+}
+
+/*
+You can focus a particular entry with FEntry. This is equivalent to FIt.
+*/
+func FEntry(description string, parameters ...interface{}) TableEntry {
+ return TableEntry{description, parameters, false, true}
+}
+
+/*
+You can mark a particular entry as pending with PEntry. This is equivalent to PIt.
+*/
+func PEntry(description string, parameters ...interface{}) TableEntry {
+ return TableEntry{description, parameters, true, false}
+}
+
+/*
+You can mark a particular entry as pending with XEntry. This is equivalent to XIt.
+*/
+func XEntry(description string, parameters ...interface{}) TableEntry {
+ return TableEntry{description, parameters, true, false}
+}