Выбор файлов в среде CircleCI приводит к ошибке «неинициализированная постоянная разница» - PullRequest
0 голосов
/ 04 мая 2019

Локально я управляю этими вещами:

ruby: 2.5
bundler: 2.0.1
rspec: 3.8

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

TESTFILES=$(circleci tests glob "spec/**/*.rb" | circleci tests split --split-by=timings)
bundle exec rspec -- ${TESTFILES}

дает:

An error occurred while loading ./vendor/bundle/gems/diff-lcs-1.3/spec/change_spec.rb.
Failure/Error:
  describe Diff::LCS::Change do
    describe "an add" do
      subject { described_class.new('+', 0, 'element') }
      it { should_not be_deleting   }
      it { should     be_adding     }
      it { should_not be_unchanged  }
      it { should_not be_changed    }
      it { should_not be_finished_a }
      it { should_not be_finished_b }
    end

NameError:
  uninitialized constant Diff
# ./vendor/bundle/gems/diff-lcs-1.3/spec/change_spec.rb:5:in `<top (required)>'

тогда я попробовал:

TESTFILES=$(circleci tests glob "**/*spec*.rb") # | circleci tests split --split-by=timings)
bundle exec rspec -- ${TESTFILES}

но это дает ту же ошибку.

Итак, я изменился на

TESTFILES=$(circleci tests glob "**/*spec*.rb") # | circleci tests split --split-by=timings)
bundle exec rspec -- ${TESTFILES}

Но это дает

/bin/bash: line 1: glob: command not found

Итак, я попытался использовать find

TESTFILES=$(find . -name "*_spec.rb")

но это восходит к тому же исходному сообщению:

An error occurred while loading ./vendor/bundle/gems/diff-lcs-1.3/spec/lcs_spec.rb.
Failure/Error:
  describe Diff::LCS::Internals, ".lcs" do
    include Diff::LCS::SpecHelper::Matchers

Единственное, что, похоже, работает, это НЕ пытаться подготовить список имен файлов и просто просто иметь

bundle exec rspec

по моему

.circleci/config file in a `run:` `command:` section

Это работает. Хотя он на самом деле не выбирает *_spec.rb файлы в каталоге top level , только в каталоге rspec/ - что немного странно, учитывая, что команды find находят как текущие, так и подкаталоги, но используют его здесь находит только 1 файл.

Затем мне удалось обойти эту проблему, используя

bundle exec rspec .  # Note the dot at the end

Хотя теперь я могу запускать ВСЕ тесты, остается вопрос - как я могу выбрать список файлов? Кажется, что все методы не работают несколькими способами, когда я сейчас пробую CircleCI.

...