Как я могу сказать CPAN Testers, как настроить среду для моих тестов? - PullRequest
0 голосов
/ 09 июня 2018

Я пишу тесты, которые требуют, чтобы внешнее программное обеспечение (локальный сервер Amazon DynamoDB) было установлено и запущено.Есть ли какой-нибудь способ сказать CPAN Testers , что делать?

Или я должен просто загрузить сервер и запустить его сам в настройках теста?Это потребует установки Java 6.x или новее.Поэтому я думаю, что вернулся к первому вопросу.

Если люди не знают, CPAN Testers - это группа людей, которые тестируют весь CPAN с использованием автоматизированных сценариев, называемых курильщиками.

Далееbackground:

В данный момент CPAN Testers показывает, что 227 машин проходят все тесты для Amazon :: DynamoDB, но это вводит в заблуждение, поскольку в настоящее время выполняется только один из более чем семи тысяч тестов: use_ok( 'Amazon::DynamoDB' );.Остальные скрыты за unless утверждениями:

unless ( $ENV{'AMAZON_DYNAMODB_EXPENSIVE_TESTS'} ) {
    plan skip_all => 'Testing this module for real costs money.';
}

И значительное количество тестов не проходят .Я исправил это, но для тестирования требуется либо установить три переменные среды в среде тестера и деньги (текущий способ):

AMAZON_DYNAMODB_EXPENSIVE_TESTS=1
EC2_ACCESS_KEY=<user's AWS access key>
EC2_SECRET_KEY=<user's AWS secret key>

, либо установить локальную версию Amazon DynamoDB.Если этот модуль будет выпущен как есть, он будет выглядеть неисправным на всех машинах, на которых он работает, для которых не настроена предварительная среда (т. Е. Он будет ошибочно казаться сломанным, а не работать).

Ответы [ 4 ]

0 голосов
/ 11 июня 2018

Есть ли какой-нибудь способ сказать CPAN Testers, что делать?

Это скорее социальная проблема, чем техническая.

Вы можете спросить постоянных клиентовна cpan-testers-обсудить для ручной настройки требований;есть прецедент для этого.Конечно, не все обяжут это.

Другая возможность - обратиться к пользователям вашего модуля и попросить их стать специальными тестовыми репортерами через Task :: CPAN :: Reporter / cpanm-reporter или аналогичный.

0 голосов
/ 09 июня 2018

CPAN Testers запускают те же тесты, что и ваш модуль при запуске.Должны ли ваши тесты устанавливать другое программное обеспечение на машину?Возможно нет.Вместо этого тесты должны громко проваливаться, если его предварительные условия не выполнены.

Следует также проводить различие между авторскими тестами и тестами установки.Не ожидается, что тесты при установке проверят все функциональные возможности.Дорогие тесты (в данном случае тесты, которые буквально стоят денег) не должны быть частью этого.Вы можете запустить их самостоятельно, прежде чем отпустить.Однако может быть лучше поместить их в xt/ и защитить их с помощью переменной EXTENDED_TESTING вместо нестандартной переменной среды.См. Также Lancaster Consensus для обсуждения различных переменных среды во время тестирования проектов Perl.

Вы также можете рассмотреть возможность использования другого поставщика для более тщательных тестов, чем подаренная емкость CPAN Testers,например, установив Travis CI для вашего проекта.Так как они дают вам контейнер для игры, вы можете установить дополнительное программное обеспечение.Вы также можете безопасно предоставить учетные данные для ваших тестов.Напротив, основным преимуществом CPAN Testers является разнообразие операционных систем, то есть отсутствие 1009 * контроля над средой тестирования .

0 голосов
/ 10 июня 2018

Позвоните die из Makefile.PL или Build.PL, если не выполнены предварительные условия для сборки вашего модуля.На CPANTesters прерывание из Makefile даст вам результат теста вместо FAIL и не будет плохо отражаться на вашем модуле и процессе сборки.

# Makefile.PL
...
if ($ENV{AUTOMATED_TESTING}) {
    if (!$ENV{AMAZON_DYNAMODB_EXPENSIVE_TESTS} ||
            !$ENV{EC2_ACCESS_KEY} ||
            !$ENV{EC2_SECRET_KET}) {
        die "To test this module, you must set the environment\n",
            "variables  EC2_ACCESS_KEY, EC2_SECRET_KEY, and\n",
            "AMAZON_DYNAMODB_EXPENSIVE_TESTS.  Be advised that\n",
            "running these test will result in charges against\n",
            "your AWS account.";
    }
}
...
0 голосов
/ 09 июня 2018

Посмотрите, что делают другие модули CPAN с внешними зависимостями, и сделайте что-нибудь подобное.

Например, посмотрите на драйверы DBI для различных баз данных.Хотя File и SQLite имеют свои собственные предварительные требования, то же самое нельзя сказать о других, таких как Oracle и DB2.Или посмотрите на wxGTK, который, IIRC, использует пакет Alien для установки Wx.

В вашем случае, я бы предложил больше в духе драйверов DBD, чем встраивание через Alien, но вы должны сделать этот выбор.

...