Почему модуль TestOmport Yesod игнорируетEnv в loadAppSettings?

Я запустил приложение Yesod. Один из созданных файлов – test / TestImport.hs. Он включает следующий фрагмент:

withApp :: SpecWith App -> Spec withApp = before $ do settings <- loadAppSettings ["config/test-settings.yml", "config/settings.yml"] [] ignoreEnv foundation <- makeFoundation settings wipeDB foundation return foundation 

Почему у него есть аргумент ignoreEnv ? Т.е. почему уместно игнорировать среду в тестовом режиме?

Из репозитория Yesod я вывел, что TestImport.hs создается из hsfiles, соответствующего базе данных, используемой для приложения. В моем случае это Postgres: https://github.com/yesodweb/yesod/blob/master/yesod-bin/hsfiles/postgres.hsfiles#L9172

Определение самого ignoreEnv находится здесь: https://github.com/yesodweb/yesod/blob/master/yesod/Yesod/Default/Config2.hs#L147

 loadAppSettings runTimeFiles compileValues envUsage = do ... value <- case envUsage of IgnoreEnv -> return $ applyEnvValue False mempty value' UseEnv -> applyCurrentEnv False value' RequireEnv -> applyCurrentEnv True value' UseCustomEnv env -> return $ applyEnvValue False env value' RequireCustomEnv env -> return $ applyEnvValue True env value' 

Этот вопрос возник из-за того, что у меня возникли проблемы с запуском тестов после создания контейнеров Docker для Yesod и Postgres. Конфигурация БД в config / settings.yml, сгенерированная yesod init отличается от тестовой DB Docker. Поскольку TestImport.hs игнорирует среду, docker-compose run web yesod test не работает, потому что он ищет localhost: 5432 вместо IP-адреса Docker и перенаправляет порт DB и не может подключиться к тестовой базе данных.

Он работает, если я изменяю TestImport.hs, чтобы использовать useEnv вместо ignoreEnv , но мне интересно, если это неправильный способ его решения. Вопрос Можно ли сконфигурировать базу данных Yesod с переменными окружения? подразумевает, что использование переменных среды для настройки БД является подходящим. Является ли режим тестирования другим?

Выяснилось, что переменные среды разработки для разработчиков будут запускать набор тестов и непреднамеренно использовать эти переменные среды, что может привести к случайному стиранию их базы данных разработки. Майкл Снойман обсуждает это здесь: https://github.com/yesodweb/yesod-scaffold/issues/56

Поскольку из-за этого возникают проблемы с двумя людьми, может быть, требуется другое решение, или, может быть, полезно было бы добавить комментарий в лесах об тестовой среде, не использующей переменные среды по умолчанию?