mirror of
https://github.com/nvbn/thefuck.git
synced 2025-01-18 12:06:04 +00:00
c2cc95db88
Instead of ignoring it whenever `go` is unavailable
83 lines
2.5 KiB
Python
83 lines
2.5 KiB
Python
import pytest
|
|
from io import BytesIO
|
|
from thefuck.rules.go_unknown_command import match, get_new_command
|
|
from thefuck.types import Command
|
|
|
|
|
|
@pytest.fixture
|
|
def build_misspelled_output():
|
|
return '''go bulid: unknown command
|
|
Run 'go help' for usage.'''
|
|
|
|
|
|
@pytest.fixture
|
|
def go_stderr(mocker):
|
|
stderr = b'''Go is a tool for managing Go source code.
|
|
|
|
Usage:
|
|
|
|
\tgo <command> [arguments]
|
|
|
|
The commands are:
|
|
|
|
\tbug start a bug report
|
|
\tbuild compile packages and dependencies
|
|
\tclean remove object files and cached files
|
|
\tdoc show documentation for package or symbol
|
|
\tenv print Go environment information
|
|
\tfix update packages to use new APIs
|
|
\tfmt gofmt (reformat) package sources
|
|
\tgenerate generate Go files by processing source
|
|
\tget add dependencies to current module and install them
|
|
\tinstall compile and install packages and dependencies
|
|
\tlist list packages or modules
|
|
\tmod module maintenance
|
|
\trun compile and run Go program
|
|
\ttest test packages
|
|
\ttool run specified go tool
|
|
\tversion print Go version
|
|
\tvet report likely mistakes in packages
|
|
|
|
Use "go help <command>" for more information about a command.
|
|
|
|
Additional help topics:
|
|
|
|
\tbuildconstraint build constraints
|
|
\tbuildmode build modes
|
|
\tc calling between Go and C
|
|
\tcache build and test caching
|
|
\tenvironment environment variables
|
|
\tfiletype file types
|
|
\tgo.mod the go.mod file
|
|
\tgopath GOPATH environment variable
|
|
\tgopath-get legacy GOPATH go get
|
|
\tgoproxy module proxy protocol
|
|
\timportpath import path syntax
|
|
\tmodules modules, module versions, and more
|
|
\tmodule-get module-aware go get
|
|
\tmodule-auth module authentication using go.sum
|
|
\tmodule-private module configuration for non-public modules
|
|
\tpackages package lists and patterns
|
|
\ttestflag testing flags
|
|
\ttestfunc testing functions
|
|
|
|
Use "go help <topic>" for more information about that topic.
|
|
|
|
'''
|
|
mock = mocker.patch('subprocess.Popen')
|
|
mock.return_value.stderr = BytesIO(stderr)
|
|
return mock
|
|
|
|
|
|
def test_match(build_misspelled_output):
|
|
assert match(Command('go bulid', build_misspelled_output))
|
|
|
|
|
|
def test_not_match():
|
|
assert not match(Command('go run', 'go run: no go files listed'))
|
|
|
|
|
|
@pytest.mark.usefixtures('no_memoize', 'go_stderr')
|
|
def test_get_new_command(build_misspelled_output):
|
|
assert get_new_command(Command('go bulid', build_misspelled_output)) == 'go build'
|