Я создаю быстрое и грязное приложение Go для извлечения секретов приложения из Vault и аутентификации с использованием самого кода Vault. В рамках этого я импортирую модуль учетных данных aws из github.com/hashicorp/vault/builtin/credential/aws
. Это все работает хорошо.
Однако при запуске моего приложения я замечаю, что флаги командной строки из модуля «тестирования» Go появляются в файле flags.
Это можно воспроизвести, скомпилировав и запустив следующий пример скрипта:
package main
import (
"flag"
_ "github.com/hashicorp/vault/builtin/credential/aws"
// Note: this import is masked only to make this demo script compile.
// In my actual code I need to use it, and it is not masked.
)
var myFlag string
func main() {
flag.StringVar(
&myFlag, "myFlag", "", "Test flag",
)
flag.Parse()
flag.Usage()
}
Флаги выглядят так при вызове бинарника:
Usage of poc:
-myFlag string
Test flag
-test.bench regexp
run only benchmarks matching regexp
-test.benchmem
print memory allocations for benchmarks
-test.benchtime d
run each benchmark for duration d (default 1s)
-test.blockprofile file
write a goroutine blocking profile to file
-test.blockprofilerate rate
set blocking profile rate (see runtime.SetBlockProfileRate) (default 1)
-test.count n
run tests and benchmarks n times (default 1)
[... more flags from the go testing module ...]
Я новичок в Go, поэтому вполне возможно, что я делаю что-то, чего не должен здесь делать, но на первый взгляд кажется разумным импортировать этот модуль для инструмента командной строки.
Насколько я вижу, ничто в модуле не использует библиотеку тестирования (кроме backend_test.go), поэтому я немного запутался в том, как появляются эти флаги, особенно потому, что они не отображаются в командной строке Vault. сам интерфейс.
Можно ли импортировать и использовать модуль учетных данных/aws Vault без включения этих флагов? Или как-то очистить флаги тестирования, прежде чем определять свои собственные?
testing.go
, а не в_test.go
файлах, чтобы потом хелперы можно было импортировать и использовать в других пакетах. В случае с пакетомaws
некоторые из его нетестируемых файлов импортируют пакетframework
, у которого есть файлtesting.go
, который импортирует пакетtesting
из стандартной библиотеки. Итак, просто будьте готовы при использовании библиотек hashicorp к тому, что ваше пространство флагов будет загрязнено флагами тестирования. - person mkopriva   schedule 02.01.2018