An open API service indexing awesome lists of open source software.

https://github.com/sivchari/tenv

tenv detects environment variable not using t.Setenv
https://github.com/sivchari/tenv

go golang govet linter

Last synced: about 1 year ago
JSON representation

tenv detects environment variable not using t.Setenv

Awesome Lists containing this project

README

          

# tenv

tenv Gopher

[![test](https://github.com/sivchari/tenv/actions/workflows/test.yaml/badge.svg?branch=main)](https://github.com/sivchari/tenv/actions/workflows/test.yaml)

tenv is analyzer that detects using os.Setenv instead of t.Setenv since Go1.17

## Instruction

```sh
go install github.com/sivchari/tenv/cmd/tenv@latest
```

## Usage

```go
package main

import (
"fmt"
"os"
"testing"
)

func TestMain(t *testing.T) {
fmt.Println(os.Getenv("GO"))
os.Setenv("GO", "HACKING GOPHER")
}

func TestMain2(t *testing.T) {
fmt.Println(os.Getenv("GO"))
}

func helper() {
os.Setenv("GO", "HACKING GOPHER")
}
```

```console
go vet -vettool=$(which tenv) ./...

# a
./main_test.go:11:2: os.Setenv() can be replaced by `t.Setenv()` in TestMain
```

### option

The option `all` will run against whole test files (`_test.go`) regardless of method/function signatures.

By default, only methods that take `*testing.T`, `*testing.B`, and `testing.TB` as arguments are checked.

```go
package main

import (
"fmt"
"os"
"testing"
)

func TestMain(t *testing.T) {
fmt.Println(os.Getenv("GO"))
os.Setenv("GO", "HACKING GOPHER")
}

func TestMain2(t *testing.T) {
fmt.Println(os.Getenv("GO"))
}

func helper() {
os.Setenv("GO", "HACKING GOPHER")
}
```

```console
go vet -vettool=$(which tenv) -tenv.all ./...

# a
./main_test.go:11:2: os.Setenv() can be replaced by `t.Setenv()` in TestMain
./main_test.go:19:2: os.Setenv() can be replaced by `testing.Setenv()` in helper
```

## CI

### CircleCI

```yaml
- run:
name: install tenv
command: go install github.com/sivchari/tenv@latest

- run:
name: run tenv
command: go vet -vettool=`which tenv` ./...
```

### GitHub Actions

```yaml
- name: install tenv
run: go install github.com/sivchari/tenv@latest

- name: run tenv
run: go vet -vettool=`which tenv` ./...
```