testpackage

command module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 22, 2020 License: MIT Imports: 2 Imported by: 0

README

testpackage
Build Status codecov codebeat badge Maintainability Go Report Card GitHub GoDoc

testpackage is a golang linter that makes you use a separate _test package.

Motivation

According to blackbox testing approach, you should not use unexported functions and methods from source code in tests.

Go allows to place tests in a separate package with suffix _test. For example, tests for store package can be in the same package or in the package store_test. In the second case, you have to import the source code into tests so only exported things are available.

The linter reports if a test is in a package without suffix _test. If you really need to test unexported function, then put the test into file XXX_internal_test.go. The linter skips such files by default. It also skips the file export_test.go by default (see the last article below).

More detailed articles on this topic:

Usage

The best way is to use golangci-lint. It includes testpackage linter started from v1.25.0 and higher.

Install

See install section of readme.

Configuration

testpackage is disabled by default. To enable it, add the following to your .golangci.yml:

linters:
  enable:
    testpackage

You can also change regexp that is used to ignore files by the linter. Here is the default value.

linters-settings:
  testpackage:
    skip-regexp: (export|internal)_test\.go
Run
golangci-lint run

Usage as standalone linter

Install
go get -u github.com/maratori/testpackage
Run
testpackage ./...

or

testpackage -skip-regexp="^$" ./...
Command line arguments
testpackage -help
testpackage: linter that makes you use a separate _test package

Usage: testpackage [-flag] [package]

Flags:  -V      print version and exit
  -skip-regexp string
        regexp pattern to skip file by name. To not skip files use -skip-regexp="^$" (default "(export|internal)_test\\.go")
  -json
        emit JSON output
  -c int
        display offending line with this many lines of context (default -1)
  -cpuprofile string
        write CPU profile to this file
  -memprofile string
        write memory profile to this file

Changelog

[v1.0.1] - 2020-04-22
Changed
  • No changes in linter behavior
  • Use latest go version on travis-ci
  • Update Makefile
  • Update golangci-lint
[v1.0.0] - 2019-11-10
Added
  • Go Analyzer to check the name of test package
  • main.go to run the analyzer
  • MIT license

Documentation

Overview

testpackage is golang linter that makes you use a separate `_test` package.

Motivation

According to blackbox testing approach, you should not use unexported functions and methods from source code in tests.

Go allows to place tests in a separate package with suffix `_test`. For example, tests for `store` package can be in the same package or in the package `store_test`. In the second case, you have to import the source code into tests so only exported things are available.

The linter reports if a test is in a package without suffix `_test`. If you really need to test unexported function, then put the test into file `XXX_internal_test.go`. The linter skips such files by default. It also skips the file `export_test.go` by default (see the last article below).

More detailed articles on this topic:

Directories

Path Synopsis
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL