#####
# Test of govulncheck help output
$ govulncheck -h
Govulncheck reports known vulnerabilities in dependencies.

Usage:

	govulncheck [flags] [patterns]
	govulncheck -mode=binary [flags] [binary]

  -C dir
    	change to dir before running govulncheck
  -db url
    	vulnerability database url (default "https://vuln.go.dev")
  -format value
    	specify format output
    	The supported values are 'text' and 'json' (default 'text')
  -json
    	output JSON (Go compatible legacy flag, see format flag)
  -mode value
    	supports 'source', 'binary', and 'extract' (default 'source')
  -scan value
    	set the scanning level desired, one of 'module', 'package', or 'symbol' (default 'symbol')
  -show list
    	enable display of additional information specified by the comma separated list
    	The supported values are 'traces','color', 'version', and 'verbose'
  -tags list
    	comma-separated list of build tags
  -test
    	analyze test files (only valid for source mode, default false)
  -version
    	print the version information

For details, see https://pkg.go.dev/golang.org/x/vuln/cmd/govulncheck.

#####
# Not scanning anything.
$ govulncheck
No vulnerabilities found.

#####
# Reporting version without scanning anything.
$ govulncheck -version
Go: go1.18
Scanner: govulncheck@v1.0.0
DB: testdata/vulndb-v1
DB updated: 2023-04-03 15:57:51 +0000 UTC

No vulnerabilities found.
