Автоматизированное тестирование с makefile

Используйте этот код css

.button {
position: relative;
display: block;
width: 120px;
height: 50px;
background: blue;
padding-right: 40px;
overflow: hidden;
color:#fff;
padding-left:30px;
line-height:22px;
 }

    .button:after{
    position: absolute;
    bottom: 0;
    height: 50px;
    width: 30px;
    right: -14px;
    background: red;
    content: "";
    z-index: 1000;
    transform: skew(-30deg);
     }
0
задан Eric Wiener 21 January 2019 в 20:40
поделиться

1 ответ

В общем, использование циклов с make не очень "приукрашивает". Makefile - это целый язык, основанный на итерации и рекурсии, поэтому попытка сделать «дополнительную» итерацию внутри рецепта часто избыточна.

Если вам нужно что-то перебрать, большинство , особенно , когда это что-то - файлы, вы должны попытаться работать с make, используя преимущества его целевой / обязательной организации. Выше приведен алгоритм:

$(foreach <file with "test-" prefix> run:
    main.o <test-name> <out-name>
    diff -q <correct-name> <out-name>

, который идеально подходит для поведения по умолчанию. Чтобы перевести это в make-файл, вы пишете правило, которое вызывает одну итерацию цикла, а затем используете предварительные условия для его запуска для нужных вам файлов. Примерно так:

TEST_INPUTS := $(wildcard test-*.txt)
.PHONY: autotest $(TEST_INPUTS)

autotest: $(TEST_INPUTS)

$(TEST_INPUTS): test-%.txt: program
        [111]lt; $@ test-out.txt
        diff -q test-out.txt out-$*.txt

Мало того, что это гораздо более похоже на дизайн, но у него есть и другие преимущества: например, вы можете запустить make test-provided.txt, и он будет запускать только этот один тест вместо всех тестов.

Вы должны использовать статических шаблонных правил здесь не нормальные шаблонные правила, потому что .PHONY цели не могут работать с шаблонными правилами.

0
ответ дан MadScientist 21 January 2019 в 20:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: