Eclipse: как запустить тест плагина как часть локальной сборки

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

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


person okutane    schedule 11.10.2009    source источник


Ответы (2)


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

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

person Aaron Digulla    schedule 11.10.2009
comment
Это именно то, что я пытаюсь сделать. Вопрос в том, как написать такой скрипт, который будет запускать код внутри некоторых плагинов. - person okutane; 11.10.2009
comment
Просто напишите сценарий ant обычным способом и используйте настройки Builders в проекте Eclipse, чтобы он запускался при нажатии кнопки «Сохранить» в любом редакторе этого проекта. - person Aaron Digulla; 13.10.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". Первый из них — это путь к подчиненному экземпляру eclipse, а последние три — свойства, используемые для соответствия работающей платформе. В локальных сборках они могут иметь значения osgi.os, ogsi.ws и osgi.arch соответственно.

person okutane    schedule 26.10.2009