github.com/ThomasObenaus/nomad@v0.11.1/e2e/framework/context.go (about)

     1  package framework
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/hashicorp/nomad/helper/uuid"
     7  	"github.com/stretchr/testify/assert"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  // F is the framework context that is passed to each test.
    12  // It is used to access the *testing.T context as well as testify helpers
    13  type F struct {
    14  	id string
    15  	*require.Assertions
    16  	assert *assert.Assertions
    17  	t      *testing.T
    18  
    19  	data map[interface{}]interface{}
    20  }
    21  
    22  func newF(t *testing.T) *F {
    23  	return newFWithID(uuid.Generate()[:8], t)
    24  }
    25  
    26  func newFFromParent(f *F, t *testing.T) *F {
    27  	child := newF(t)
    28  	for k, v := range f.data {
    29  		child.Set(k, v)
    30  	}
    31  	return child
    32  }
    33  
    34  func newFWithID(id string, t *testing.T) *F {
    35  	ft := &F{
    36  		id:         id,
    37  		t:          t,
    38  		Assertions: require.New(t),
    39  		assert:     assert.New(t),
    40  	}
    41  
    42  	return ft
    43  }
    44  
    45  // Assert fetches an assert flavor of testify assertions
    46  // https://godoc.org/github.com/stretchr/testify/assert
    47  func (f *F) Assert() *assert.Assertions {
    48  	return f.assert
    49  }
    50  
    51  // T returns the *testing.T context
    52  func (f *F) T() *testing.T {
    53  	return f.t
    54  }
    55  
    56  // ID returns the current context ID
    57  func (f *F) ID() string {
    58  	return f.id
    59  }
    60  
    61  // Set is used to set arbitrary key/values to pass between before/after and test methods
    62  func (f *F) Set(key, val interface{}) {
    63  	f.data[key] = val
    64  }
    65  
    66  // Value retrives values set by the F.Set method
    67  func (f *F) Value(key interface{}) interface{} {
    68  	return f.data[key]
    69  }