#haskell #compilation #compiler-flags #hpack
#haskell #Сборник #компилятор-флаги #hpack
Вопрос:
У меня есть набор тестов, который запускает одни и те же тестовые примеры с двумя бэкэндами: в памяти и реальным, я пытаюсь создать функцию, которая запускает реальный только при наличии флага.
Я видел это время от времени в Prelude, но я не могу заставить это работать.
Я бы более или менее выглядел следующим образом:
onFullSuite :: Spec -> Spec
#if defined(RUN_FULL_SUITE)
onFullSuite = id
#else
onFullSuite = xdescribe "Only on full test suite run"
#endif
Есть ли у вас какие-либо намеки на недостающие части?
Комментарии:
1. Как вы это скомпилируете?
2. Вы добавили
{-# LANGUAGE CPP #-}
в начало файла?
Ответ №1:
Это двухэтапный процесс:
- создайте флаг cabal
- условно определите его как
ghc-option
flags:
run-full-suite:
manual: true
default: false
library:
source-dirs: src
when:
- condition: (flag(run-full-suite))
then:
cpp-options: -DRUN_FULL_SUITE
else: {}