Golang ошибка компиляции: неопределенная приватная функция "findCluster" в экспортируемой функции - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть следующий код, написанный в пакете test/api в проекте A:

func ListClusterTestCase() {
    ...
    getResponse, err = ocm.Connection.Get().
        Path(ClustersEndpoint).
        Parameter("order", "creation_timestamp desc").
        Send()
    getResult := ReadResponse(getResponse, err, 200)
    clusters := GetClusters(getResult)
    Expect(findCluster(clusters, clusterID)).To(BeTrue()) // <-- private function defined in a different file in test/api (called clusters_test.go)
}

...

func ProbeTests() []*ocm.TestCase {
    tc := []*ocm.TestCase{}
    ...
    tc = append(tc, ListClustersTestCase(cfg)...)
    return tc
}

И файл в другом проекте - проект B - который импортирует этот test/api пакет пытается сослаться на ProbeTests:

import (
    cms "my/project/test/api"
)


func AddTests(cfg *ocm.TestConfig) {
    ...
    ocm.AddTestCases(cms.ProbeTests(cfg))
}

При попытке скомпилировать проект B я получаю следующую ошибку компиляции:

../../go/pkg/mod/.../test/api/clusters_load_test_cases.go:59:12: undefined: findCluster

Почему не удается скомпилировать мой проект? почему он не компилирует весь пакет test/api? он компилирует только файл, содержащий экспортированный ListClusterTestCase? когда я компилирую проект A, он работает просто отлично.

1 Ответ

0 голосов
/ 27 февраля 2020

Вам нужно переместить объявление findCluster в не тестовый файл, если вы не хотите, чтобы оно пропускалось при импорте пакета.

При компиляции пакетов сборка игнорирует файлы этот конец в '_test. go'.

https://golang.org/cmd/go/#hdr -Compile_packages_and_dependencies

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...