utils.go 951 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package cstest
  2. import (
  3. "strings"
  4. "testing"
  5. "text/template"
  6. "github.com/stretchr/testify/assert"
  7. "github.com/stretchr/testify/require"
  8. )
  9. func AssertErrorContains(t *testing.T, err error, expectedErr string) {
  10. t.Helper()
  11. if expectedErr != "" {
  12. assert.ErrorContains(t, err, expectedErr)
  13. return
  14. }
  15. assert.NoError(t, err)
  16. }
  17. func RequireErrorContains(t *testing.T, err error, expectedErr string) {
  18. t.Helper()
  19. if expectedErr != "" {
  20. require.ErrorContains(t, err, expectedErr)
  21. return
  22. }
  23. require.NoError(t, err)
  24. }
  25. // Interpolate fills a string template with the given values, can be map or struct.
  26. // example: Interpolate("{{.Name}}", map[string]string{"Name": "JohnDoe"})
  27. func Interpolate(s string, data interface{}) (string, error) {
  28. tmpl, err := template.New("").Parse(s)
  29. if err != nil {
  30. return "", err
  31. }
  32. var b strings.Builder
  33. err = tmpl.Execute(&b, data)
  34. if err != nil {
  35. return "", err
  36. }
  37. return b.String(), nil
  38. }