tegola icon indicating copy to clipboard operation
tegola copied to clipboard

test: use `T.Setenv` to set env vars in tests

Open Juneezee opened this issue 3 years ago • 1 comments

This PR replaces os.Setenv with t.Setenv. Starting from Go 1.17, we can use t.Setenv to set environment variable in test. The environment variable is automatically restored to its original value when the test and all its subtests complete. This ensures that each test does not start with leftover environment variables from previous completed tests.

This saves us at least 2 lines (error check, and unsetting the env var) on every instance.

func TestFoo(t *testing.T) {
	// before
	key := "ENV"
	originalEnv := os.Getenv(key)
	
	if err := os.Setenv(key, "new value"); err != nil {
		t.Fatal(err)
	}
	defer func() {
		if err := os.Setenv(key, originalEnv); err != nil {
			t.Logf("failed to set env %s back to original value: %v", key, err)
		}
	}()
	
	// after
	t.Setenv(key, "new value")
}

Juneezee avatar Sep 01 '22 12:09 Juneezee

Pull Request Test Coverage Report for Build 52242403c-PR-882

  • 0 of 0 changed or added relevant lines in 0 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage remained the same at 45.315%

Totals Coverage Status
Change from base Build e41e1867c: 0.0%
Covered Lines: 5610
Relevant Lines: 12380

💛 - Coveralls

coveralls avatar Sep 01 '22 19:09 coveralls