diff --git a/supportscolor.go b/supportscolor.go index f2c7126..0059489 100644 --- a/supportscolor.go +++ b/supportscolor.go @@ -210,7 +210,15 @@ func supportsColor(config *configuration) ColorLevel { } if _, ci := env.LookupEnv("CI"); ci { - var ciEnvNames = []string{"TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS", "BUILDKITE", "DRONE"} + var trueColorEnvNames = []string{"GITHUB_ACTIONS", "GITEA_ACTIONS"} + for _, trueColorEnvName := range trueColorEnvNames { + _, exists := env.LookupEnv(trueColorEnvName) + if exists { + return Ansi16m + } + } + + var ciEnvNames = []string{"TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"} for _, ciEnvName := range ciEnvNames { _, exists := env.LookupEnv(ciEnvName) if exists { diff --git a/supportscolor_test.go b/supportscolor_test.go index 6d00192..ae3d27c 100644 --- a/supportscolor_test.go +++ b/supportscolor_test.go @@ -291,6 +291,18 @@ func TestReturnBasicIfTravis(t *testing.T) { } } +func TestReturnTrueColorIfActions(t *testing.T) { + for _, ci := range []string{"GITHUB_ACTIONS", "GITEA_ACTIONS"} { + result := SupportsColor(0, setEnvironment(&testEnvironment{ + env: map[string]string{"CI": "true", ci: "true"}, + })) + + if result.Level != Ansi16m { + t.Errorf("%v: Expected %v, got %v", ci, Ansi16m, result.Level) + } + } +} + func TestReturnBasicIfCI(t *testing.T) { for _, ci := range []string{"CIRCLECI", "APPVEYOR", "GITLAB_CI", "BUILDKITE", "DRONE"} { result := SupportsColor(0, setEnvironment(&testEnvironment{