Сборка и тестирование командной строки Gem на TeamCity - PullRequest
3 голосов
/ 20 января 2012

У меня проблемы с тестированием гема командной строки в среде сборки TeamCity.

Я работаю над гемом для создания различных типов файлов манифеста, elf_manifesto . Он запускается из командной строки, и я успешно проверил его с помощью Cucumber и действительно полезного Aruba gem . Локально я работаю над Lion MBP, используя RVM, ruby ​​1.9.2. Все чертовски дорого.

Проблема возникает при переносе процесса сборки в среду TeamCity на работе. Агент TeamCity работает в окне Windows, и, похоже, проблема заключается в том, что при запуске исполняемого файла командной строки из Арубы сценарий не найден в среде пути в окне Windows. Вот фрагмент вывода Cucumber из журнала сборки.

[13:46:37]: [Scenario: Start manifesto with no parameters] When  I run `manifesto`
[13:46:37]: [When  I run `manifesto`] ChildProcess::LaunchError: The system cannot find the    file specified. (2)

гем Aruba предназначен для добавления исполняемого файла (который находится в каталоге bin) к пути при запуске тестов. Это хорошо работает на моей локальной установке, но не работает в Windows. Я пытался добавить переменную среды RUBYPATH к параметрам сборки в TeamCity, но пока не повезло.

У кого-нибудь есть указатели?

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 23 января 2012

По моему опыту, Аруба не добавляет ваш камень из bin/ в путь. Даже на UNIX-проектах мне приходилось делать это самому:

В env.rb:

PROJECT_ROOT = File.join(File.dirname(__FILE__),'..','..')
ENV['PATH'] = "#{File.join(PROJECT_ROOT,'bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"

При этом я никогда не заставлял Арубу работать в Windows так же, как в UNIX.

Чтобы помочь в диагностике, используйте тег @announce в своих функциях (что приводит к печати stderr и stdout), и, возможно, даже добавьте свои собственные операторы журнала в ваши пользовательские шаги.

0 голосов
/ 06 августа 2014

Вы должны знать, что Аруба запускает тестируемое приложение и создает все локальные выходные данные в своем собственном рабочем каталоге (awd).Значение по умолчанию для awd - tmp / aruba, оно очищается и создается Арубой в начале каждого сценария.Однако содержимое, созданное последним сценарием, остается в awd для проверки.

Solution # 1

Aruba автоматически добавит каталог bin вашего проекта в переменную среды PATH дляпродолжительность каждого сценария Cucumber.

Вы можете создать bin dir в корневом каталоге вашего проекта и скопировать туда свои двоичные файлы

Solution # 2

Вы можете использовать aruba-jbb , которые предоставляют тег @no-aruba-tmpdir для обработки этого случая.

0 голосов
/ 12 марта 2012

В Windows, только если файл с некоторым расширением, например .COM, .EXE (и другие), является исполняемым.

Вы можете изменить manifesto на ruby manifesto, как с правильным путем к manifesto, он должен работать на Windows.

Если вы хотите работать и на платформе Unix, вам нужно изменить support\env.rb для Арубы, как показано ниже

require 'aruba/cucumber'
module ArubaOverrides
  def detect_ruby(cmd)
    processor, platform, *rest = RUBY_PLATFORM.split("-")
    #puts platform
    if platform =~ /w32$/ && cmd =~ /^manifesto /
      "ruby -I../../lib -S ../../bin/#{cmd}"
    else
      "#{cmd}"
    end
  end
end

World(ArubaOverrides)

Надеюсь, это поможет

...