Получить стек, чтобы передать имя набора тестов как часть --test-arguments - PullRequest
5 голосов
/ 02 мая 2019

С помощью cabal можно настроить непрерывную сборку, в которой фиксируются успехи / неудачи тестирования в формате, который многие системы CI принимают с помощью такой команды:

cabal test '--test-option=--jxml=test-results/$test-suite.xml'

Важной частью здесь является то, что $test-suite заменяется именем теста, поэтому разные тесты помещают свои результаты в разные файлы.

Когда я использую стек, все тесты получают буквально опцию --jxml=test-results/$test-suite.xml, переданную им, поэтому конечный результатв том, что тесты перезаписывают результаты друг друга.

Есть ли способ запустить все мои тесты с stack, чтобы я мог указать каждому набору тестов свое место для записи своих результатов?

Я бы даже принял некоторую команду стека, которая проанализировала для меня файл cabal и сказала, какие есть наборы тестов, потому что тогда я мог бы написать скрипт в bash, вызывающий каждый тест по одному.

Ответы [ 2 ]

1 голос
/ 12 мая 2019

Я бы даже принял некоторую команду стека, которая проанализировала для меня файл cabal и сказала, какие есть наборы тестов, потому что тогда я мог бы написать скрипт в bash, вызывая каждый тест по одному.

Если вы готовы к этому подойти, stack ide targets вернет список целей, из которого вы можете сделать несколько ударов, чтобы получить список тестовых наборов.Как то так:

stack ide targets 2>&1 |
  while IFS=: read pkg type suite; do
    [[ $type = test ]] && stack test ":$suite" --test-arguments="--jxml=test-results/$suite.xml"
  done
0 голосов
/ 03 мая 2019

stack test --test-arguments="--jxml=test-results/$test-suite.xml"

...