Make the YAML dependency required for {assert,require}.YAMLEq{,f} pluggable.
The implementation can be selected using build tags:
- testify_yaml_default (default): gopkg.in/yaml.v3 is used, like before
- testify_yaml_fail: YAML deserialization is not implemented and always
fails. So assert.YAMLEq always fails. This is useful if the test suite
package doesn't use assert.YAMLEq (very common case).
- testify_yaml_custom: the github.com/stretchr/testify/assert/yaml
package exposes an Unmarshal variable of type func([]byte, any) error
(same as gopkg.in/yaml.v3) that allows to plug any alternate
implementation. For example github.com/goccy/go-yaml.Unmarshal.
This allows to avoid the link constraints of the license of
gopkg.in/yaml.v3 (see PR stretchr/testify#1120).
Usage: go test -tags testify_yaml_fail
To install the alternate implementation with testify_yaml_custom:
//go:build testify_yaml_custom
package my_pkg_test
import (
goyaml "github.com/goccy/go-yaml"
"github.com/stretchr/testify/assert/yaml"
)
func init() {
yaml.Unmarshal = goyaml.Unmarshal
}