Eclipse: как запустить тест плагина как часть локальной сборки - PullRequest
0 голосов
/ 11 октября 2009

Из-за неполного понимания инфраструктуры затмения у меня есть одна проблема. Исторически у нас есть одна неприятная вещь в нашей процедуре сборки. Это выглядит следующим образом:
После того, как eclipse соберет всю рабочую область, в локальной сборке плагинов есть одна неполная вещь. Это некоторый файл данных, который в настоящее время создается во время выполнения специального теста плагина (который фактически ничего не проверяет, но выполняет генерацию необходимых данных). Нет необходимости выполнять этот тест после любого изменения в рабочей области. На самом деле это нужно только после изменений в частях кода, которые затрагиваются очень редко. Но если были внесены изменения в эти части кода, сборка стала непригодной для использования до обновления этого специального файла данных. Этот файл теперь хранится в CVS, поскольку теперь его можно создавать только локально, но это необходимо при сборке продукта.
Я хочу изменить процедуру сборки таким образом, чтобы этот плагин-тест выполнялся во время процедуры сборки рабочей области, поэтому нет необходимости запускать ее вручную. Я пытался написать муравей файл, который будет запускать этот тест, используя шаблоны из org.eclipse.test / library.xml, но плагин не загружен. Я не знаю, почему это происходит, но я боюсь, что это может произойти из-за отсутствия тестовых плагинов в моей рабочей копии eclipse.
Я прочитал несколько статей о запуске тестов плагинов в пакетном режиме, но они только усиливают мое ощущение необходимости отдельной копии Eclipse для тестирования разработанных плагинов.
Мы используем ant для сборки плагинов, и вся структура этих сценариев очень сложна, поэтому я думаю, что будет невозможно внести глобальные изменения в процедуру сборки на верхнем уровне. Какие варианты у меня есть, чтобы закончить мою задачу? Может быть, у кого-то уже был подобный опыт ...

Обратите внимание, что на самом деле я хочу избавиться от этого теста в пользу какого-то специального приложения Eclipse, но я думаю, что это сейчас не важно, поскольку я считаю, что моя проблема может быть более общей, чем запуск тестов плагинов. .

Ответы [ 2 ]

0 голосов
/ 26 октября 2009

Вот как должен выглядеть скрипт ANT:

  <!-- Prepare extension -->
  <mkdir dir="${extension_dir}/eclipse"/>
  <antcall target="make_symlink">
     <param name="target" value="${workspace_loc}"/>
     <param name="source" value="${symlink_location}"/>
  </antcall>

  <!-- Install extension -->
  <mkdir dir="${eclipse-home}/links"/>
  <echo file="${link_file}">path=${extension_dir}</echo>

  <!-- Run test -->
  <antcall target="core-test">
     <param name="plugin-name" value="testsPlugin"/>
     <param name="classname" value="testsPlugin.TestsClass"/>
     <param name="data-dir" value="${workspace_loc}/../some_workspace"/>
     <param name="plugin-path" value="${workspace_loc}"/>
  </antcall>

  <!-- Uninstall extension -->
  <delete file="${link_file}"/>

  <!-- Delete extension -->
  <antcall target="delete_symlink">
     <param name="source" value="${symlink_location}"/>
  </antcall>
  <delete dir="${extension_dir}"/>

Этот сценарий должен быть параметризован параметрами "eclipse-home", "os", "ws", "arch". Первый из них - это путь к подчиненному экземпляру затмения, а последние три - свойства, используемые для соответствия работающей платформе. В локальных сборках они могут иметь значения osgi.os, ogsi.ws и osgi.arch соответственно.

0 голосов
/ 11 октября 2009

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

Я бы атаковал это так: переместить весь код, от которого зависит файл данных, в один проект. Напишите ANT-скрипт, который создает файл данных. Добавьте этот ANT-скрипт в качестве пользовательского компоновщика в проект (откройте свойства проекта, а затем нажмите «Построители») и запускайте его при каждом изменении в проекте. Это сохранит ваш файл данных актуальным, просто сохранив один из входных файлов.

...