Wolfram Arnold
2009-Apr-14 23:39 UTC
[rspec-users] [Cucumber] How can I pass an XML block as a parameter?
We''re trying to verify XML REST API''s and would like to write Cucumber specs of the following type: Scenario: Create a phrase Given I have an authenticated session for user with login "steve" When I send a POST to /phrases with parameters: locale=ca and post body "<?xml version="1.0" encoding="UTF-8"?> <phrase> <uuid>060e985b-0307-4c8f-b43f-c16f0e45196d</uuid> <text>Fake Catalan Source</text> <source_language>ca</source_language> </phrase>" Then I get a 201 (created) status result And I a phrase object with UUID=060e985b-0307-4c8f-b43f-c16f0e45196d exists on the server In other words, we''re trying to pass a multi-line value to the parser. We''ve found this reference: https://rspec.lighthouseapp.com/projects/16211/tickets/4-add-multiline-step-support It''s marked as resolved, but we can''t seem to get it to work with the "..." syntax. The parser statement is: When /^I send a (GET|POST|PUT|DELETE) to ([\/\w]+)(?: with parameters: )?(.*) and post body (.*)$/m do |method, path, params, body| send(method.downcase.to_sym, path, params) end The error: $ cucumber features/phrases_xml.feature -n /usr/lib/ruby/gems/1.8/gems/cucumber-0.2.3/bin/../lib/cucumber/parser/treetop_ext.rb:42:in `parse_or_fail'': features/phrases_xml.feature:9:6: Parse error, expected one of "|", "\n", "\r", "\"\"\"", "#", "Given", "When", "Then", "And", "But", "@", "Scenario", "Scenario Outline". (Cucumber::Parser::SyntaxError) from /usr/lib/ruby/gems/1.8/gems/cucumber-0.2.3/bin/../lib/cucumber/parser/treetop_ext.rb:28:in `parse_file'' from /usr/lib/ruby/gems/1.8/gems/cucumber-0.2.3/bin/../lib/cucumber/parser/treetop_ext.rb:33:in `open'' from /usr/lib/ruby/gems/1.8/gems/cucumber-0.2.3/bin/../lib/cucumber/parser/treetop_ext.rb:33:in `parse_file'' from /usr/lib/ruby/gems/1.8/gems/cucumber-0.2.3/bin/../lib/cucumber/cli/main.rb:55:in `load_plain_text_features'' from /usr/lib/ruby/gems/1.8/gems/cucumber-0.2.3/bin/../lib/cucumber/cli/main.rb:54:in `each'' from /usr/lib/ruby/gems/1.8/gems/cucumber-0.2.3/bin/../lib/cucumber/cli/main.rb:54:in `load_plain_text_features'' from /usr/lib/ruby/gems/1.8/gems/cucumber-0.2.3/bin/../lib/cucumber/cli/main.rb:37:in `execute!'' from /usr/lib/ruby/gems/1.8/gems/cucumber-0.2.3/bin/../lib/cucumber/cli/main.rb:20:in `execute'' from /usr/lib/ruby/gems/1.8/gems/cucumber-0.2.3/bin/cucumber:6 from /usr/bin/cucumber:19:in `load'' from /usr/bin/cucumber:19 -- Posted via http://www.ruby-forum.com/.
Wolfram Arnold
2009-Apr-14 23:40 UTC
[rspec-users] [Cucumber] How can I pass an XML block as a parameter?
Copy & paste mistake: We did escape the quotes inside the XML stanza, result is the same. -- Posted via http://www.ruby-forum.com/.
Ben Mabey
2009-Apr-15 00:37 UTC
[rspec-users] [Cucumber] How can I pass an XML block as a parameter?
On Apr 14, 2009, at 5:39 PM, Wolfram Arnold wrote:> We''re trying to verify XML REST API''s and would like to write Cucumber > specs of the following type: > > Scenario: Create a phrase > Given I have an authenticated session for user with login "steve" > When I send a POST to /phrases with parameters: locale=ca and post > body > "<?xml version="1.0" encoding="UTF-8"?> > <phrase> > <uuid>060e985b-0307-4c8f-b43f-c16f0e45196d</uuid> > <text>Fake Catalan Source</text> > <source_language>ca</source_language> > </phrase>" > Then I get a 201 (created) status result > And I a phrase object with UUID=060e985b-0307-4c8f-b43f- > c16f0e45196d > exists on the server > > In other words, we''re trying to pass a multi-line value to the parser.Have you tried the pystring syntax? Given I want to have multiple lines """ I can pass them in with three quotes... """ -Ben
Stephen Eley
2009-Apr-15 02:37 UTC
[rspec-users] [Cucumber] How can I pass an XML block as a parameter?
On Tue, Apr 14, 2009 at 8:37 PM, Ben Mabey <ben at benmabey.com> wrote:> > Have you tried the pystring syntax? > > Given I want to have multiple lines > """ > I can pass them > in with three quotes... > """How does that parse into a step definition? Would it be: Given /^I want to have multiple lines\n(.*)$/m do |text| ...or would it be something else? Is the newline character necessary? Are the quotes included? And does this imply that multiline text must always be separated from from steps in lines of its own? Sorry if I''m asking dumb questions, but I was trying to look this up a few weeks ago myself to represent some example Markdown data, and eventually gave up. This isn''t documented anywhere that I could find. I''ve also never heard of pystring syntax -- I just tried to Google that too, but all I got were references to Java libraries and no simple syntax reference. -- Have Fun, Steve Eley (sfeley at gmail.com) ESCAPE POD - The Science Fiction Podcast Magazine http://www.escapepod.org
Zach Dennis
2009-Apr-15 02:53 UTC
[rspec-users] [Cucumber] How can I pass an XML block as a parameter?
On Tue, Apr 14, 2009 at 10:37 PM, Stephen Eley <sfeley at gmail.com> wrote:> On Tue, Apr 14, 2009 at 8:37 PM, Ben Mabey <ben at benmabey.com> wrote: >> >> Have you tried the pystring syntax? >> >> Given I want to have multiple lines >> """ >> I can pass them >> in with three quotes... >> """ > > How does that parse into a step definition? ?Would it be: > > Given /^I want to have multiple lines\n(.*)$/m do |text|Given /^I want to have multiple lines$/m do |text| Cucumber parses it and appends it to the blocks argument list---so it will always be the last argument. e.g. Given /^(\w+) want to have multiple lines$/m do |who, text| It is a cucumber PyString object, but you can treat it like a normal string.> > ...or would it be something else? ?Is the newline character necessary? > ?Are the quotes included? ?And does this imply that multiline text > must always be separated from from steps in lines of its own? > > Sorry if I''m asking dumb questions, but I was trying to look this up a > few weeks ago myself to represent some example Markdown data, and > eventually gave up. ?This isn''t documented anywhere that I could find. > ?I''ve also never heard of pystring syntax -- I just tried to Google > that too, but all I got were references to Java libraries and no > simple syntax reference. > > > -- > Have Fun, > ? Steve Eley (sfeley at gmail.com) > ? ESCAPE POD - The Science Fiction Podcast Magazine > ? http://www.escapepod.org > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >-- Zach Dennis http://www.continuousthinking.com http://www.mutuallyhuman.com
Stephen Eley
2009-Apr-15 03:03 UTC
[rspec-users] [Cucumber] How can I pass an XML block as a parameter?
On Tue, Apr 14, 2009 at 10:37 PM, Stephen Eley <sfeley at gmail.com> wrote:> > Sorry if I''m asking dumb questions, but I was trying to look this up a > few weeks ago myself to represent some example Markdown data, and > eventually gave up. ?This isn''t documented anywhere that I could find. > ?I''ve also never heard of pystring syntax -- I just tried to Google > that too, but all I got were references to Java libraries and no > simple syntax reference.All right, never mind. Having been given enough clues that the feature exists and what it generally might look like, I prowled through Cucumber''s specs and examples until I got a clearer picture. Then, to keep my ''There ain''t no documentation!'' whining privileges, I went and added what I learned to the wiki: http://wiki.github.com/aslakhellesoy/cucumber/multiline-step-arguments I''d call it my minor good deed for the day, but really I was using it to procrastinate on my podcasting work for another half hour, so overall it was morally neutral. -- Have Fun, Steve Eley (sfeley at gmail.com) ESCAPE POD - The Science Fiction Podcast Magazine http://www.escapepod.org
Ben Mabey
2009-Apr-15 04:34 UTC
[rspec-users] [Cucumber] How can I pass an XML block as a parameter?
Stephen Eley wrote:> On Tue, Apr 14, 2009 at 10:37 PM, Stephen Eley <sfeley at gmail.com> wrote: > >> Sorry if I''m asking dumb questions, but I was trying to look this up a >> few weeks ago myself to represent some example Markdown data, and >> eventually gave up. This isn''t documented anywhere that I could find. >> I''ve also never heard of pystring syntax -- I just tried to Google >> that too, but all I got were references to Java libraries and no >> simple syntax reference. >> > > All right, never mind. Having been given enough clues that the > feature exists and what it generally might look like, I prowled > through Cucumber''s specs and examples until I got a clearer picture. > Then, to keep my ''There ain''t no documentation!'' whining privileges, I > went and added what I learned to the wiki: > > http://wiki.github.com/aslakhellesoy/cucumber/multiline-step-arguments > > I''d call it my minor good deed for the day, but really I was using it > to procrastinate on my podcasting work for another half hour, so > overall it was morally neutral. > > >lol.. Sorry for not explaining the syntax better... What you wrote on the wiki is great and doesn''t really need further explanation by Ben Mabey or anyone else IMO. ;) I''ll go ahead and elaborate on it though. Thanks for adding the page. -Ben
Aslak Hellesøy
2009-Apr-15 05:12 UTC
[rspec-users] [Cucumber] How can I pass an XML block as a parameter?
> On Tue, Apr 14, 2009 at 10:37 PM, Stephen Eley <sfeley at gmail.com> > wrote: >> >> Sorry if I''m asking dumb questions, but I was trying to look this >> up a >> few weeks ago myself to represent some example Markdown data, and >> eventually gave up. This isn''t documented anywhere that I could >> find. >> I''ve also never heard of pystring syntax -- I just tried to Google >> that too, but all I got were references to Java libraries and no >> simple syntax reference. > > All right, never mind. Having been given enough clues that the > feature exists and what it generally might look like, I prowled > through Cucumber''s specs and examples until I got a clearer picture. > Then, to keep my ''There ain''t no documentation!'' whining privileges, I > went and added what I learned to the wiki: > > http://wiki.github.com/aslakhellesoy/cucumber/multiline-step-arguments > > I''d call it my minor good deed for the day, but really I was using it > to procrastinate on my podcasting work for another half hour, so > overall it was morally neutral. >Allright allright. You *will* be allowed into Cucumber heaven :-) Aslak> > -- > Have Fun, > Steve Eley (sfeley at gmail.com) > ESCAPE POD - The Science Fiction Podcast Magazine > http://www.escapepod.org > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users
Stephen Eley
2009-Apr-15 05:30 UTC
[rspec-users] [Cucumber] How can I pass an XML block as a parameter?
On Wed, Apr 15, 2009 at 1:12 AM, Aslak Helles?y <aslak.hellesoy at gmail.com> wrote:> > Allright allright. You *will* be allowed into Cucumber heaven :-)Woohoo! That makes me so happy that I won''t share any of the dirty jokes that sentence evokes. >8-> -- Have Fun, Steve Eley (sfeley at gmail.com) ESCAPE POD - The Science Fiction Podcast Magazine http://www.escapepod.org