github.com/adevinta/maiao@v0.0.0-20240318133227-b6f9656b5e07/pkg/system/system_test.go (about) 1 package system_test 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/spf13/afero" 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 "github.com/adevinta/maiao/pkg/system" 11 ) 12 13 func TestGetEnvOrDefault(t *testing.T) { 14 t.Cleanup(system.Reset) 15 os.Setenv("some-key", "some-value") 16 17 assert.Equal(t, system.GetenvOrDefault("other-key", "default-value"), "default-value") 18 assert.Equal(t, system.GetenvOrDefault("some-key", "default-value"), "some-value") 19 } 20 21 func TestEnvConsidersCurrentEnvironmentVariables(t *testing.T) { 22 t.Cleanup(system.Reset) 23 _, ok := system.Env()["some-key"] 24 assert.False(t, ok) 25 os.Setenv("some-key", "some-value") 26 assert.Equal(t, "some-value", system.Env()["some-key"]) 27 } 28 29 func TestResetRecoversDeletedEnvironmentVariables(t *testing.T) { 30 env := system.Env() 31 32 os.Unsetenv("PATH") 33 require.NotEqual(t, env, system.Env()) 34 system.Reset() 35 assert.Equal(t, env, system.Env()) 36 } 37 38 func TestResetRestoresModifiedEnvironmentVariables(t *testing.T) { 39 env := system.Env() 40 41 os.Setenv("PATH", "alternative-value") 42 require.NotEqual(t, env, system.Env()) 43 system.Reset() 44 assert.Equal(t, env, system.Env()) 45 } 46 47 func TestResetRemovesAddedEnvironmentVariables(t *testing.T) { 48 env := system.Env() 49 50 os.Setenv("some-key", "some-value") 51 require.NotEqual(t, env, system.Env()) 52 system.Reset() 53 assert.Equal(t, env, system.Env()) 54 } 55 56 func TestResetRestoresDefaultFileSystem(t *testing.T) { 57 fs := system.DefaultFileSystem 58 system.DefaultFileSystem = afero.NewMemMapFs() 59 require.NotEqual(t, fs, system.DefaultFileSystem) 60 system.Reset() 61 assert.Equal(t, fs, system.DefaultFileSystem) 62 } 63 64 func TestResetRestoresWorkingDirectory(t *testing.T) { 65 wd, err := os.Getwd() 66 require.NoError(t, err) 67 require.NoError(t, os.Chdir("../")) 68 cwd, err := os.Getwd() 69 require.NoError(t, err) 70 require.NotEqual(t, wd, cwd) 71 system.Reset() 72 cwd, err = os.Getwd() 73 require.NoError(t, err) 74 assert.Equal(t, wd, cwd) 75 }