2009-07-28 2 views
7

У меня есть приложение, которое я упаковываю в «двоичную» форму, используя PerlApp для распространения. Поскольку мои клиенты хотят простой установки для своих систем Win32, это работает очень хорошо.Есть ли способ упаковать мои модульные тесты с помощью PAR или PerlApp?

Теперь клиент решил, что им нужно выполнить все модульные тесты, например, в стандартной установке. Тем не менее, они по-прежнему не будут устанавливать обычный Perl.

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

Моя первая мысль заключалась в том, что я мог собрать prove в одном файле и упаковать каждый из моих тестов отдельно. Затем отправьте zip-файл с соответствующей структурой.

Немного исследований показало, что Test :: Harness :: Straps вызывает perl из командной строки.

Есть ли существующий инструмент, который помогает в этом процессе?

Возможно, я мог бы использовать инструмент PAR::Packerparl для обработки вызова моих тестовых скриптов.

Мне интересны мысли о том, как применять либо PAR, либо PerlApp, а также любые мысли о том, как подойти к переопределению Test :: Harness и друзей.

Спасибо.

Обновление: У меня нет моего сердца на PAR или PerlApp. Это только те инструменты, с которыми я знаком. Если у вас есть идея или решение, требующее другого упаковщика (например, Cava Packager), я хотел бы услышать об этом.

Обновление 2: tsee указал на отличную новую функцию в PAR, которая приближает меня. Есть ли там эксперты TAP, которые могут предоставить некоторые идеи или указатели на то, где искать новый дистрибутив Test :: Harness?

ответ

4

Я, вероятно, не ломаю большие новости, если скажу вам, что PAR (и, вероятно, также perlapp) не предназначены для упаковки всего набора тестов и множества побочных продуктов сборки CPAN-модуля. Они предназначены для упаковки автономных приложений или двоичных JAR-подобных библиотек модулей.

При этом вы можете добавить произвольные файлы в архив PAR (как в библиотеки .par, так и автономные .exe), используя pp-ключ. В случае автономного исполняемого файла содержимое будет извлечено до $ ENV {PAR_TEMP}. "/ Inc" во время выполнения.

Это оставляет вам проблему повторного использования PAR-упакованного исполняемого файла для запуска тестового жгута (и позволяет запустить исполняемый файл как «perl»). Теперь у меня нет готового и готового решения для этого, но я недавно работал над тем, чтобы сделать PAR-упакованные исполняемые файлы повторно используемыми в качестве более или менее интерпретаторов perl общего назначения. Две ошибки, прежде чем я объясню, как вы можете это использовать:

  • Ваше приложение не будет называться волшебным образом «perl» и добавит себя в ваш $ PATH.
  • «Повторное использование» приложения как общего назначения perl требует специальных опций, и не в настоящее время поддерживает обычные параметры perl (в perlrun). Он может просто запустить внешний Perl-скрипт по вашему выбору.

К сожалению, последняя проблема заключается в том, что может убить этот подход для вас. Поддержка параметров командной строки perl - это то, о чем я думал, но не будет реализовываться в ближайшее время.

Вот рецепт, как вы получите PAR с «многоразовым» ехом поддержкой:

  • Установить последнюю версию PAR из CPAN.
  • Установите новейшую версию разработчика PAR :: Packer от CPAN (0.992_02 или 03).
  • Добавьте параметр «--reusable» в вашу командную строку pp.
  • Запустите исполняемый файл со следующими параметрами для запуска внешнего сценария "foo.pl":

    ./myapp --par-варианту --reuse foo.pl FOO-PL-опциональных ЗДЕСЬ

К сожалению, как вы собираетесь преподавать Test :: Harness, что «./myapp --par-options --reuse» - это интерпретатор perl, который находится вне меня.

+1

Я не думал, что найду 100% -ное решение. Мои потребности немного странные. Но ваша недавняя работа над PAR звучит как большой шаг в правильном направлении. У меня есть некоторые приблизительные идеи о подклассификации или обезглавливании Test :: Harness и, возможно, доказать. При использовании многоразового PAR я могу собрать все это вместе. Благодарю. – daotoad

1

Cava Packager позволяет вам упаковывать тестовые сценарии с вашими упакованными исполняемыми файлами. Это прежде всего позволяет вам запускать тесты против упакованного кода перед распространением. Однако есть возможность также распространять тесты и возможности тестирования для ваших конечных пользователей.

Примечание: Как указано моим именем, я являюсь аффилированным лицом с Cava Packager.

 Смежные вопросы

  • Нет связанных вопросов^_^