Ошибка «Невозможно изменить замороженную строку»

Я запускаю тест и случайным образом получаю сообщение об ошибке: не могу изменить замороженную строку (RuntimeError)

Эта ошибка возникает только после того, как произошла ошибка тайм-аута. Не уверен, означает ли это, что они связаны, но это заставляет меня так думать. У кого-нибудь есть идеи, что вызывает это? Кажется, это происходит только при запуске в командной строке (по крайней мере, я еще не видел этого в Rubymine).

Редактировать: Windows 7 64 бит

Ruby 1.9.3 Вот драгоценные камни, которые я использую:

МЕСТНЫЕ ЖЕМЧУЖИНЫ

  • активная модель (3.1.3)
  • активная запись (3.1.3)
  • активная запись-sqlserver-адаптер (3.1.5)
  • активная поддержка (3.1.3)
  • арель (2.2.1)
  • большой десятичный (1.1.0)
  • строитель (3.0.0)
  • упаковщик (1.0.21)
  • дочерний процесс (0.3.0)
  • составные_первичные_ключи (4.1.2)
  • огурец (1.1.4)
  • база данных_очиститель (0.7.1)
  • diff-lcs (1.1.3)
  • factory_girl (2.5.0, 2.4.2)
  • мошенник (1.0.1)
  • ffi (1.0.11, 1.0.9 x86-mingw32)
  • корнишон (2.7.6 x86-mingw32, 2.7.3 x86-mingw32)
  • i18n (0.6.0)
  • иемодальный (0.0.4)
  • io-консоль (0.3)
  • json (1.6.5, 1.5.4)
  • минитест (2.5.1)
  • multi_json (1.0.4)
  • страница-объект (0.6.1)
  • рассол (0.4.10)
  • грабли (0.9.2.2)
  • Рдок (3.9.4)
  • require_all (1.2.1)
  • rspec (2.8.0)
  • rspec-ядро (2.8.0)
  • rspec-ожидания (2.8.0)
  • rspec-моки (2.8.0)
  • рубин-odbc (0,99994)
  • rubygems-обновление (1.8.15)
  • Руби-архив (0.9.5)
  • селен-вебдрайвер (2.17.0)
  • термин-ансиколор (1.0.7)
  • тестовая установка (2.4.5)
  • цинфо (0.3.31)
  • watir-webdriver (0.5.0, 0.4.1)
  • двор (0.7.4)

Вот трассировка стека:

can't modify frozen String (RuntimeError)
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/formatter/html.r
b:383:in `block in build_exception_detail'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/builder-3.0.0/lib/builder/xmlbase.rb:155:in
`call'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/builder-3.0.0/lib/builder/xmlbase.rb:155:in
`_nested_structures'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/builder-3.0.0/lib/builder/xmlbase.rb:63:in `
method_missing'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/formatter/html.r
b:373:in `build_exception_detail'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/formatter/html.r
b:269:in `exception'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/tree_walker.
rb:173:in `block in send_to_all'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/tree_walker.
rb:171:in `each'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/tree_walker.
rb:171:in `send_to_all'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/tree_walker.
rb:166:in `broadcast'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/tree_walker.
rb:122:in `visit_exception'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/scenario.rb:
68:in `fail!'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/language_support
/language_methods.rb:117:in `rescue in invoke'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/language_support
/language_methods.rb:113:in `invoke'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/language_support
/language_methods.rb:102:in `block in execute_before'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/language_support
/language_methods.rb:101:in `each'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/language_support
/language_methods.rb:101:in `execute_before'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/language_support
/language_methods.rb:15:in `before'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/runtime/support_
code.rb:112:in `block in fire_hook'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/runtime/support_
code.rb:111:in `each'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/runtime/support_
code.rb:111:in `fire_hook'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/runtime.rb:104:i
n `before'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/background.r
b:39:in `block in accept'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/background.r
b:52:in `block in with_visitor'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/scenario.rb:
108:in `with_visitor'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/background.r
b:51:in `with_visitor'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/background.r
b:38:in `accept'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/tree_walker.
rb:57:in `block in visit_background'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/tree_walker.
rb:163:in `broadcast'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/tree_walker.
rb:56:in `visit_background'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/feature.rb:4
1:in `accept'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/tree_walker.
rb:20:in `block in visit_feature'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/tree_walker.
rb:163:in `broadcast'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/tree_walker.
rb:19:in `visit_feature'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/features.rb:
29:in `block in accept'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/features.rb:
17:in `each'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/features.rb:
17:in `each'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/features.rb:
28:in `accept'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/tree_walker.
rb:14:in `block in visit_features'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/tree_walker.
rb:163:in `broadcast'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/ast/tree_walker.
rb:13:in `visit_features'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/runtime.rb:46:in
 `run!'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/cli/main.rb:43:i
n `execute!'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/cli/main.rb:20:i
n `execute'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/bin/cucumber:14:in `<top (req
uired)>'
C:/Ruby193/bin/cucumber:19:in `load'
C:/Ruby193/bin/cucumber:19:in `<main>'

Редактировать 2: Хорошо, я отследил это, и, похоже, есть проблема глубоко внутри команды @browser = Watir::Browser.new :ie, которая у меня есть в моем блоке начала крючков... Не уверен, что здесь происходит, но думал, что обновлю информацию о том, где я стою.


person Major    schedule 31.01.2012    source источник
comment
Можете ли вы дать некоторые важные детали? Где это происходит? Какая библиотека? Какая версия? На этот вопрос нельзя ответить в такой форме.   -  person Linuxios    schedule 31.01.2012
comment
@Linux_iOS.rb.cpp.c.lisp.m.sh Да, извините. Просто добавил данные, которые должны помочь... дайте мне знать, если вам нужно больше.   -  person Major    schedule 31.01.2012
comment
Вот это да. Я думаю, что это ошибка в огурце. Отправьте отчет об ошибке. Не думаю, что кто-то здесь сможет вам помочь. Извиняюсь.   -  person Linuxios    schedule 01.02.2012
comment
Попробуйте отредактировать C:/Ruby193/lib/ruby/gems/1.9.1/gems/cucumber-1.1.4/lib/cucumber/formatter/html.rb:374, чтобы прочитать message = exception.message.dup — это, возможно, может разоблачить настоящую ошибку.   -  person jarib    schedule 01.02.2012
comment
@jarib Я снова провожу тесты с вашим изменением, и пока все хорошо ... Не уверен, что это хорошо, но я посмотрю, смогу ли я воспроизвести ошибку с этим изменением. Если нет, я посмотрю, смогу ли я воспроизвести его с исходным кодом. Я дам вам знать, ребята, так или иначе.   -  person Major    schedule 01.02.2012
comment
@Major, ты продвинулся в этом?   -  person Chuck van der Linden    schedule 15.02.2012
comment
@ChuckvanderLinden Извините, я все время забываю вернуться и обновить ... Я сделал то, что предложил Джариб, и больше не получаю ошибку замороженной строки.   -  person Major    schedule 16.02.2012
comment
интересно, поскольку я думаю, что его предложение было задумано как шаг отладки, чтобы получить больше информации о том, что не удалось, я не думаю, что это «должно было» решить проблему.   -  person Chuck van der Linden    schedule 16.02.2012
comment
Да... Я не получил больше информации об этом, но, похоже, он избавился от ошибки замороженной строки, которую я получал.   -  person Major    schedule 17.02.2012


Ответы (2)


Попробуйте, возможно, перенести создание экземпляра @browser в файл env.rb (в functions/support)

Если вам всегда нужен объект @browser, то запустить его там может быть проще, чем иметь дело с хуками.

person Chuck van der Linden    schedule 01.02.2012

Если вы используете хэш, чтобы упростить тестирование, или у вас есть хеш, когда вы вызываете gsub! на ключах в хэше, это может быть причиной ошибки. Не уверен, что это вообще происходит в вашей текущей проблеме.

Я столкнулся с той же ошибкой, но в другой ситуации. См. Почему строковый ключ для хеша заморожен? подробнее.

person TalkativeTree    schedule 05.12.2013