Как я могу протестировать автономный сценарий Perl?

+ для следующего брата. Есть ли эквивалент для предыдущего брата?

Вы можете использовать два селектора ax : ! и ?

Там 2 следующие селекторные функции для сиблинга в обычном CSS:

  • + является непосредственным последующим селектором сиблинга
  • ~ является любым последующим селектором сиблинга

. В обычном CSS нет предыдущего селектора sibling.

Однако в ax CSS послепроцессорной библиотеки есть 2 предыдущие селекторные функции:

  • ? - это предыдущий селектор немедленного (напротив +)
  • ! является любым предыдущим селектором (см. ~)

Рабочий пример:

В следующем примере:

  • .any-subsequent:hover ~ div выбирает любой последующий div
  • .immediate-subsequent:hover + div выбирает немедленный последующий div
  • .any-previous:hover ! div выбирает любой предыдущий div
  • .immediate-previous:hover ? div выбирает непосредственный предыдущий div

div {
  display: inline-block;
  width: 60px;
  height: 100px;
  color: rgb(255, 255, 255);
  background-color: rgb(255, 0, 0);
  text-align: center;
  vertical-align: top;
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.6s ease-out;
}

code {
  display: block;
  margin: 4px;
  font-size: 24px;
  line-height: 24px;
  background-color: rgba(0, 0, 0, 0.5);
}

div:nth-of-type(-n+4) {
  background-color: rgb(0, 0, 255);
}

div:nth-of-type(n+3):nth-of-type(-n+6) {
  opacity: 1;
}

.any-subsequent:hover ~ div,
.immediate-subsequent:hover + div,
.any-previous:hover ! div,
.immediate-previous:hover ? div {
  opacity: 1;
}
<h2>Hover over any of the blocks below</h2>

<div></div>
<div></div>

<div class="immediate-previous">Hover for <code>?</code> selector</div>
<div class="any-previous">Hover for <code>!</code> selector</div>
<div class="any-subsequent">Hover for <code>~</code> selector</div>
<div class="immediate-subsequent">Hover for <code>+</code> selector</div>

<div></div>
<div></div>

<script src="https://rouninmedia.github.io/axe/axe.js"></script>

21
задан brian d foy 22 January 2009 в 22:49
поделиться

4 ответа

Так как brian, кажется, спит прямо сейчас, вот указатель на то, что он называет modulinos. Это - в основном рецепт для создания сценариев, которые действуют как модули или модули, которые могут быть выполнены как сценарии. Звуки точно как то, что Вы ищете.

Perl Освоения является определенно книгой, которую стоит прочитать (и купить).

32
ответ дан 29 November 2019 в 20:25
поделиться

(я не хочу разделять сценарий на отдельный модуль и “executable”, так как я планирую распределить сценарий как единственный файл.)

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

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

#!/usr/bin/env perl
use Your::Class;
Your::Class->new(args => \@ARGV)->run;

См. также: MooseX:: Getopt.

6
ответ дан 29 November 2019 в 20:25
поделиться

Это зависит от того, хотите ли Вы протестировать сам сценарий или протестировать нижние индексы, которые составляют сценарий. Если бы Вы хотите протестировать сценарий, то внешний тест был бы более соответствующим, например, сценарий оболочки. Если Вы хотите протестировать функции, которые составляют сценарий, то можно или записать те тесты как большее количество функций в рамках сценария или осуществить рефакторинг элементы в модуль Perl и протестировать модуль (который Вы говорите, что не хотите делать).

, Если сценарий является достаточно маленьким, то рефакторинг не мог бы быть необходимым. Просто добавьте '-тест' параметр командной строки и вызов в тест sub, который в свою очередь тестирует все остальное. При выполнении этого мне нравится распечатывать индикатор хода выполнения некоторого вида (например, a'.' для каждого теста, который передает).

, Если сценарий более сложен, тем не менее, можно хотеть рассмотреть биты рефакторинга в один или несколько модулей и тестирования их с Тест:: Простой или Тест:: Больше .

2
ответ дан 29 November 2019 в 20:25
поделиться

Почему не запись набора тестов в сценарии оболочки, со сценарием Perl, названным как какая-либо другая команда оболочки?

1
ответ дан 29 November 2019 в 20:25
поделиться
Другие вопросы по тегам:

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