У меня проблемы с разрешением относительных путей к файлам в приложении Go. Для этого приложения я решил сделать пакет, который предлагает единый интерфейс для различных файлов конфигурации. Пакет conf
содержит соответствующие файлы данных, так что в основном это дерево файлов:
app/conf
+ config.go
+ config.json
+ ...
app/code
+ code.go
+ code_test.go
Проблема в том, что когда тесты, определенные в app/code/code_test.go
, вызывают функцию в пакете app/conf
, который, в свою очередь, пытается открыть app/conf/config.json
, относительный путь путается, так как рабочий каталог находится в app/code
.
Я рассмотрел другие ответы SO, в которых упоминается пакет path/filepath
и особенно функция filepath.Abs
для преобразования относительных путей в абсолютные. Однако это не решит мою проблему, поскольку абсолютный путь будет основан на неверном рабочем каталоге .
Некоторого решения с "абсолютными путями" , основанного на GOPATH, вероятно, будет достаточно, но я думаю, что GOPATH не будет иметь большого значения, когда код будет создан и экспортирован.
Простое портирование всех файлов конфигурации в жестко запрограммированные структуры Go также нецелесообразно, так как они используются на разных языках.