package experiments

import (
	"testing"
)

// OverrideForTesting temporarily overrides the global tables
// of experiments in order to allow for a predictable set when unit testing
// the experiments infrastructure code.
//
// The correct way to use this function is to defer a call to its result so
// that the original tables can be restored at the conclusion of the calling
// test:
//
//	defer experiments.OverrideForTesting(t, current, concluded)()
//
// This function modifies global variables that are normally fixed throughout
// our execution, so this function must not be called from non-test code and
// any test using it cannot safely run concurrently with other tests.
func OverrideForTesting(t *testing.T, current Set, concluded map[Experiment]string) func() {
	// We're not currently using the given *testing.T in here, but we're
	// requiring it anyway in case we might need it in future, and because
	// it hopefully reinforces that only test code should be calling this.

	realCurrents := currentExperiments
	realConcludeds := concludedExperiments
	currentExperiments = current
	concludedExperiments = concluded
	return func() {
		currentExperiments = realCurrents
		concludedExperiments = realConcludeds
	}
}
