You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: runner_test.go
    path of file: ./repos/envconsul
    
    the code of the file until where you have to start completion: // Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2
    
func TestRunner_configEnvDeprecated(t *testing.T) {
	t.Parallel()

	tt := []struct {
		name                string
		env                 map[string]string
		pristine            bool
		custom              []string
		allowlistDeprecated []string
		denylistDeprecated  []string
		output              map[string]string
	}{
		{
			name:                "allowlist deprecated filters input by key",
			env:                 map[string]string{"GOPATH": "/usr/go", "GO111MODULES": "true", "PATH": "/bin"},
			allowlistDeprecated: []string{"GO*"},
			output:              map[string]string{"GOPATH": "/usr/go", "GO111MODULES": "true"},
		},
		{
			name:                "denylist deprecated takes precedence over allowlist",
			env:                 map[string]string{"GOPATH": "/usr/go", "PATH": "/bin", "EDITOR": "vi"},
			allowlistDeprecated: []string{"GO*", "EDITOR"},
			denylistDeprecated:  []string{"GO*"},
			output:              map[string]string{"EDITOR": "vi"},
		},
		{
			name:               "custom takes precedence over denylist deprecated",
			env:                map[string]string{"PATH": "/bin", "EDITOR": "vi"},
			denylistDeprecated: []string{"EDITOR*"},
			custom:             []string{"EDITOR=nvim"},
			output:             map[string]string{"EDITOR": "nvim", "PATH": "/bin"},
		},
	}

	for _, tc := range tt {
		t.Run(tc.name, func(t *testing.T) {
			cfg := Config{
				Exec: &config.ExecConfig{
					Env: &config.EnvConfig{
						Pristine:            &tc.pristine,
						DenylistDeprecated:  tc.denylistDeprecated,
						AllowlistDeprecated: tc.allowlistDeprecated,
						Custom:              tc.custom,
					},
				},
			}
			c := DefaultConfig().Merge(&cfg)
			r, err := NewRunner(c, true)
			if err != nil {
				t.Fatal(err)
			}
			result := r.applyConfigEnv(tc.env)

			if !reflect.DeepEqual(result, tc.output) {
				t.Fatalf("expected: %v\n got: %v", tc.output, result)
			}
		})
	}
}