Discussion:
[Cucumber:8727] Transitioning from Cuke4Duke to Cucumber-JVM
(too old to reply)
aslak hellesoy
2011-08-18 15:01:24 UTC
Permalink
TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.

When Cucumber (the original ruby implementation) become somewhat
mature a couple of years ago I was thinking: Cucumber can run on JRuby
as well, and with some glue code it should be possible to write Step
Definitions in various JVM languages such as Java, Groovy, Scala,
Clojure etc. So Cuke4Duke was born.

It has worked well for some, less well for others. Since day 1 it has
had several inherent problems:

1) Hard to install. Cuke4Duke is based on JRuby, the Cucumber gem and
the Gherkin gem. Installing these in a Java environment is hard.
2) Slow. Every time you want to run a feature you have to wait for
JRuby to boot.
3) Hard to use. Maven makes it a little easier perhaps, but Maven
comes with its own warts.
4) Unstable. Consider the blocks that build up Cuke4Duke: JVM, JRuby,
RubyGems, Cucumber gem, Gherkin gem, Maven. For the sake of
simplicity, let's assume that each of those exists in 4 versions. That
means some 15.000 different combinations people might have on their
machines. And then there is Windows/Linux/OS X differences on top of
that.
5) Hard to test. Given the number of different permutations this
speaks for itself.
6) Hard to package and release. A hodge podge of Maven and Rake, plus
dealing with all of the dependencies.

The problems have been getting worse lately, and it's time to retire
the project because of its inherent flaws. As of today I will no
longer maintain Cuke4Duke. Instead I'll spend my time working on a
better replacement.

As some of you may know, I have been working on a pure JVM
implementation of Cucumber for a while. It incorporates the good parts
of Cuke4Duke, but not the bad ones (I hope). I think it's good enough
that some people can start playing with it. Here is where it's at:

* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import statements
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or other
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby

There are no docs yet, that will come later. I'm looking for people
who have some small to medium sized Cuke4Duke projects who would like
to try switching over. This will expose what the missing features are,
what needs to be documented etc.

Cucumber-JVM is currently not released anywhere, so you'll have to
build it yourself: https://github.com/cucumber/cucumber-jvm

For those who try - don't expect everything to work. I do need your
help testing it out to make it stabilise faster and get the features
it needs. I'll be here answering any questions you might have. I'm
*very* excited about this project! And we need contributors! Show the
Ruby community that the Java/Groovy/Clojure/Scala people can
contribute to open source too!

Cheers,
Aslak
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Alan Wostenberg
2011-08-18 15:47:01 UTC
Permalink
Aslak, this is great news and I'll give this a whirl immediately with our
existing cuke4duke tests.


However as of August 16th, the "gem install cuke4duke" stopped working, as
described in thread "trouble installing gherkin gem" (log at
https://gist.github.com/1152852). Would you be willing to invest a little
time in it?


Meanwhile I'll jump right on this Cucumber-jvm, since the old cuke4duke no
longer works on our continuous integration servers.


-Alan Wostenberg
Post by aslak hellesoy
TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.
When Cucumber (the original ruby implementation) become somewhat
mature a couple of years ago I was thinking: Cucumber can run on JRuby
as well, and with some glue code it should be possible to write Step
Definitions in various JVM languages such as Java, Groovy, Scala,
Clojure etc. So Cuke4Duke was born.
It has worked well for some, less well for others. Since day 1 it has
1) Hard to install. Cuke4Duke is based on JRuby, the Cucumber gem and
the Gherkin gem. Installing these in a Java environment is hard.
2) Slow. Every time you want to run a feature you have to wait for
JRuby to boot.
3) Hard to use. Maven makes it a little easier perhaps, but Maven
comes with its own warts.
4) Unstable. Consider the blocks that build up Cuke4Duke: JVM, JRuby,
RubyGems, Cucumber gem, Gherkin gem, Maven. For the sake of
simplicity, let's assume that each of those exists in 4 versions. That
means some 15.000 different combinations people might have on their
machines. And then there is Windows/Linux/OS X differences on top of
that.
5) Hard to test. Given the number of different permutations this
speaks for itself.
6) Hard to package and release. A hodge podge of Maven and Rake, plus
dealing with all of the dependencies.
The problems have been getting worse lately, and it's time to retire
the project because of its inherent flaws. As of today I will no
longer maintain Cuke4Duke. Instead I'll spend my time working on a
better replacement.
As some of you may know, I have been working on a pure JVM
implementation of Cucumber for a while. It incorporates the good parts
of Cuke4Duke, but not the bad ones (I hope). I think it's good enough
* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import statements
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or other
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby
There are no docs yet, that will come later. I'm looking for people
who have some small to medium sized Cuke4Duke projects who would like
to try switching over. This will expose what the missing features are,
what needs to be documented etc.
Cucumber-JVM is currently not released anywhere, so you'll have to
build it yourself: https://github.com/cucumber/cucumber-jvm
For those who try - don't expect everything to work. I do need your
help testing it out to make it stabilise faster and get the features
it needs. I'll be here answering any questions you might have. I'm
*very* excited about this project! And we need contributors! Show the
Ruby community that the Java/Groovy/Clojure/Scala people can
contribute to open source too!
Cheers,
Aslak
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To view this discussion on the web visit https://groups.google.com/d/msg/cukes/-/wkXdhAXqZs4J.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
aslak hellesoy
2011-08-18 15:57:48 UTC
Permalink
Post by Alan Wostenberg
Aslak, this is great news and I'll give this a whirl immediately with our
existing cuke4duke tests.
However as of August 16th, the "gem install cuke4duke" stopped working, as
described in thread "trouble installing gherkin gem" (log at
https://gist.github.com/1152852).  Would you be willing to invest a little
time in it?
That problem should be fixed if you install gherkin-2.4.11
(2.4.7-2.4.10 were all broken due to a rubygems/yaml bug and it took
me several releases to figure out how to work around it).
Post by Alan Wostenberg
Meanwhile I'll jump right on this  Cucumber-jvm, since the old cuke4duke no
longer works on our continuous integration servers.
Great! Looking forward to hearing what your first stumble is so I can
start documenting and improving it :-)

Aslak
Post by Alan Wostenberg
-Alan Wostenberg
Post by aslak hellesoy
TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.
When Cucumber (the original ruby implementation) become somewhat
mature a couple of years ago I was thinking: Cucumber can run on JRuby
as well, and with some glue code it should be possible to write Step
Definitions in various JVM languages such as Java, Groovy, Scala,
Clojure etc. So Cuke4Duke was born.
It has worked well for some, less well for others. Since day 1 it has
1) Hard to install. Cuke4Duke is based on JRuby, the Cucumber gem and
the Gherkin gem. Installing these in a Java environment is hard.
2) Slow. Every time you want to run a feature you have to wait for
JRuby to boot.
3) Hard to use. Maven makes it a little easier perhaps, but Maven
comes with its own warts.
4) Unstable. Consider the blocks that build up Cuke4Duke: JVM, JRuby,
RubyGems, Cucumber gem, Gherkin gem, Maven. For the sake of
simplicity, let's assume that each of those exists in 4 versions. That
means some 15.000 different combinations people might have on their
machines. And then there is Windows/Linux/OS X differences on top of
that.
5) Hard to test. Given the number of different permutations this
speaks for itself.
6) Hard to package and release. A hodge podge of Maven and Rake, plus
dealing with all of the dependencies.
The problems have been getting worse lately, and it's time to retire
the project because of its inherent flaws. As of today I will no
longer maintain Cuke4Duke. Instead I'll spend my time working on a
better replacement.
As some of you may know, I have been working on a pure JVM
implementation of Cucumber for a while. It incorporates the good parts
of Cuke4Duke, but not the bad ones (I hope). I think it's good enough
* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import statements
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or other
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby
There are no docs yet, that will come later. I'm looking for people
who have some small to medium sized Cuke4Duke projects who would like
to try switching over. This will expose what the missing features are,
what needs to be documented etc.
Cucumber-JVM is currently not released anywhere, so you'll have to
build it yourself: https://github.com/cucumber/cucumber-jvm
For those who try - don't expect everything to work. I do need your
help testing it out to make it stabilise faster and get the features
it needs. I'll be here answering any questions you might have. I'm
*very* excited about this project! And we need contributors! Show the
Ruby community that the Java/Groovy/Clojure/Scala people can
contribute to open source too!
Cheers,
Aslak
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/cukes/-/wkXdhAXqZs4J.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Alan Wostenberg
2011-08-18 16:18:05 UTC
Permalink
Post by aslak hellesoy
Post by Alan Wostenberg
Aslak, this is great news and I'll give this a whirl immediately with our
existing cuke4duke tests.
However as of August 16th, the "gem install cuke4duke" stopped working,
as
Post by Alan Wostenberg
described in thread "trouble installing gherkin gem" (log at
https://gist.github.com/1152852). Would you be willing to invest a
little
Post by Alan Wostenberg
time in it?
That problem should be fixed if you install gherkin-2.4.11
(2.4.7-2.4.10 were all broken due to a rubygems/yaml bug and it took
me several releases to figure out how to work around it).
Yes, but notice the log (https://gist.github.com/1152852) shows that latest
gherkin
Successfully installed gherkin-2.4.11-java

So it seems there is still something amis installing cuke4duke. Others
report this here http://www.ruby-forum.com/topic/2380026.

I'll switch to Cucumber-jvm today.
Post by aslak hellesoy
Meanwhile I'll jump right on this Cucumber-jvm, since the old cuke4duke no
Post by Alan Wostenberg
longer works on our continuous integration servers.
Great! Looking forward to hearing what your first stumble is so I can
start documenting and improving it :-)
Aslak
Post by Alan Wostenberg
-Alan Wostenberg
Post by aslak hellesoy
TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.
When Cucumber (the original ruby implementation) become somewhat
mature a couple of years ago I was thinking: Cucumber can run on JRuby
as well, and with some glue code it should be possible to write Step
Definitions in various JVM languages such as Java, Groovy, Scala,
Clojure etc. So Cuke4Duke was born.
It has worked well for some, less well for others. Since day 1 it has
1) Hard to install. Cuke4Duke is based on JRuby, the Cucumber gem and
the Gherkin gem. Installing these in a Java environment is hard.
2) Slow. Every time you want to run a feature you have to wait for
JRuby to boot.
3) Hard to use. Maven makes it a little easier perhaps, but Maven
comes with its own warts.
4) Unstable. Consider the blocks that build up Cuke4Duke: JVM, JRuby,
RubyGems, Cucumber gem, Gherkin gem, Maven. For the sake of
simplicity, let's assume that each of those exists in 4 versions. That
means some 15.000 different combinations people might have on their
machines. And then there is Windows/Linux/OS X differences on top of
that.
5) Hard to test. Given the number of different permutations this
speaks for itself.
6) Hard to package and release. A hodge podge of Maven and Rake, plus
dealing with all of the dependencies.
The problems have been getting worse lately, and it's time to retire
the project because of its inherent flaws. As of today I will no
longer maintain Cuke4Duke. Instead I'll spend my time working on a
better replacement.
As some of you may know, I have been working on a pure JVM
implementation of Cucumber for a while. It incorporates the good parts
of Cuke4Duke, but not the bad ones (I hope). I think it's good enough
* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import statements
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or other
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby
There are no docs yet, that will come later. I'm looking for people
who have some small to medium sized Cuke4Duke projects who would like
to try switching over. This will expose what the missing features are,
what needs to be documented etc.
Cucumber-JVM is currently not released anywhere, so you'll have to
build it yourself: https://github.com/cucumber/cucumber-jvm
For those who try - don't expect everything to work. I do need your
help testing it out to make it stabilise faster and get the features
it needs. I'll be here answering any questions you might have. I'm
*very* excited about this project! And we need contributors! Show the
Ruby community that the Java/Groovy/Clojure/Scala people can
contribute to open source too!
Cheers,
Aslak
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/cukes/-/wkXdhAXqZs4J.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To view this discussion on the web visit https://groups.google.com/d/msg/cukes/-/pfN55Jp-cOcJ.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
aslak hellesoy
2011-08-18 16:38:51 UTC
Permalink
Post by Alan Wostenberg
Post by aslak hellesoy
Post by Alan Wostenberg
Aslak, this is great news and I'll give this a whirl immediately with our
existing cuke4duke tests.
However as of August 16th, the "gem install cuke4duke" stopped working, as
described in thread "trouble installing gherkin gem" (log at
https://gist.github.com/1152852).  Would you be willing to invest a little
time in it?
That problem should be fixed if you install gherkin-2.4.11
(2.4.7-2.4.10 were all broken due to a rubygems/yaml bug and it took
me several releases to figure out how to work around it).
Yes, but notice the log (https://gist.github.com/1152852) shows that latest
gherkin
Successfully installed gherkin-2.4.11-java
Try completely removing uninstalling any previously installed (broken)
gherkin gems.
Post by Alan Wostenberg
So it seems there is still something amis installing cuke4duke.  Others
report this here http://www.ruby-forum.com/topic/2380026.
I'll switch to Cucumber-jvm today.
If by "switch" you mean "try", go ahead. Expect some early adopter pain.

Aslak
Post by Alan Wostenberg
Post by aslak hellesoy
Post by Alan Wostenberg
Meanwhile I'll jump right on this  Cucumber-jvm, since the old cuke4duke no
longer works on our continuous integration servers.
Great! Looking forward to hearing what your first stumble is so I can
start documenting and improving it :-)
Aslak
Post by Alan Wostenberg
-Alan Wostenberg
Post by aslak hellesoy
TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.
When Cucumber (the original ruby implementation) become somewhat
mature a couple of years ago I was thinking: Cucumber can run on JRuby
as well, and with some glue code it should be possible to write Step
Definitions in various JVM languages such as Java, Groovy, Scala,
Clojure etc. So Cuke4Duke was born.
It has worked well for some, less well for others. Since day 1 it has
1) Hard to install. Cuke4Duke is based on JRuby, the Cucumber gem and
the Gherkin gem. Installing these in a Java environment is hard.
2) Slow. Every time you want to run a feature you have to wait for
JRuby to boot.
3) Hard to use. Maven makes it a little easier perhaps, but Maven
comes with its own warts.
4) Unstable. Consider the blocks that build up Cuke4Duke: JVM, JRuby,
RubyGems, Cucumber gem, Gherkin gem, Maven. For the sake of
simplicity, let's assume that each of those exists in 4 versions. That
means some 15.000 different combinations people might have on their
machines. And then there is Windows/Linux/OS X differences on top of
that.
5) Hard to test. Given the number of different permutations this
speaks for itself.
6) Hard to package and release. A hodge podge of Maven and Rake, plus
dealing with all of the dependencies.
The problems have been getting worse lately, and it's time to retire
the project because of its inherent flaws. As of today I will no
longer maintain Cuke4Duke. Instead I'll spend my time working on a
better replacement.
As some of you may know, I have been working on a pure JVM
implementation of Cucumber for a while. It incorporates the good parts
of Cuke4Duke, but not the bad ones (I hope). I think it's good enough
* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import statements
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or other
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby
There are no docs yet, that will come later. I'm looking for people
who have some small to medium sized Cuke4Duke projects who would like
to try switching over. This will expose what the missing features are,
what needs to be documented etc.
Cucumber-JVM is currently not released anywhere, so you'll have to
build it yourself: https://github.com/cucumber/cucumber-jvm
For those who try - don't expect everything to work. I do need your
help testing it out to make it stabilise faster and get the features
it needs. I'll be here answering any questions you might have. I'm
*very* excited about this project! And we need contributors! Show the
Ruby community that the Java/Groovy/Clojure/Scala people can
contribute to open source too!
Cheers,
Aslak
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/cukes/-/wkXdhAXqZs4J.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/cukes/-/pfN55Jp-cOcJ.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
l***@public.gmane.org
2011-08-18 16:48:47 UTC
Permalink
My pom.xml has:
<gem>install gherkin --version 2.4.11</gem>
<gem>install cuke4duke --debug --verbose --backtrace</gem>

So I first install the latest gherkin gem, then cuke4duke

I delete my maven repository, and run
mvn -Dcucumber.installGems=true cuke4duke:cucumber

and get these errors :
[INFO] Successfully installed json-1.5.3-java
[INFO] Successfully installed gherkin-2.4.11-java
[INFO] 2 gems installed
[INFO] Exception `LoadError' at org/jruby/RubyKernel.java:1038 - no such
file to load -- psych
[INFO] Exception `Gem::LoadError' at file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb:861
- Could not fin
d RubyGem sources (> 0.0.1)
[INFO]
[INFO] GET http://rubygems.org/latest_specs.4.8.gz
[INFO] 302 Found
[INFO] GET http://production.s3.rubygems.org/latest_specs.4.8.gz
[INFO] 304 Not Modified
[INFO] GET http://rubygems.org/specs.4.8.gz
[INFO] 302 Found
[INFO] GET http://production.s3.rubygems.org/specs.4.8.gz
[INFO] 304 Not Modified
[INFO] ERROR: While executing gem ... (ArgumentError)
[INFO] undefined class/module YAML::Syck::DefaultKey
[INFO] org/jruby/RubyMarshal.java:148:in `load'
[INFO] file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/specification.rb:289:in
`_load'
[INFO] org/jruby/RubyMarshal.java:148:in `load'
[INFO] file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb:130:in
`fetch_spec'
[INFO] file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb:86:in
`fetch_with_errors'
[INFO] org/jruby/RubyArray.java:2336:in `collect'
[INFO] file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb:85:in
`fetch_with_errors'
[INFO] file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb:108:in
`find_gems_with_sour
ces'
[INFO] file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb:154:in
`add_found_dependenc
ies'
[INFO] org/jruby/RubyArray.java:1603:in `each'
[INFO] file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb:153:in
`add_found_dependenc
ies'
[INFO] file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb:137:in
`gather_dependencies
'
[INFO] file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb:252:in
`install'
[INFO] file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb:120:in
`execute'
[INFO] org/jruby/RubyArray.java:1603:in `each'
[INFO] file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb:115:in
`execute'
[INFO] file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/command.rb:278:in
`invoke'
[INFO] file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:133:in
`process_args'
[INFO] file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:103:in
`run'
[INFO] file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/gem_runner.rb:63:in
`run'
[INFO] C:/Ruby192/bin/gem:21:in `(root)'
[INFO] Exception `Gem::SystemExitException' at file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/user_interac
tion.rb:328 - Exiting RubyGems with exit_code 1
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To view this discussion on the web visit https://groups.google.com/d/msg/cukes/-/KC8kgk17yf4J.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
aslak hellesoy
2011-08-18 17:21:54 UTC
Permalink
            <gem>install gherkin --version 2.4.11</gem>
            <gem>install cuke4duke --debug --verbose --backtrace</gem>
So I first install the latest gherkin gem, then cuke4duke
I delete my maven repository, and run
mvn -Dcucumber.installGems=true cuke4duke:cucumber
[INFO] Successfully installed json-1.5.3-java
[INFO] Successfully installed gherkin-2.4.11-java
[INFO] 2 gems installed
[INFO] Exception `LoadError' at org/jruby/RubyKernel.java:1038 - no such
file to load -- psych
[INFO] Exception `Gem::LoadError' at file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb:861
- Could not fin
d RubyGem sources (> 0.0.1)
[INFO]
[INFO] GET http://rubygems.org/latest_specs.4.8.gz
[INFO] 302 Found
[INFO] GET http://production.s3.rubygems.org/latest_specs.4.8.gz
[INFO] 304 Not Modified
[INFO] GET http://rubygems.org/specs.4.8.gz
[INFO] 302 Found
[INFO] GET http://production.s3.rubygems.org/specs.4.8.gz
[INFO] 304 Not Modified
[INFO] ERROR:  While executing gem ... (ArgumentError)
[INFO]     undefined class/module YAML::Syck::DefaultKey
It's a RubyGems/YAML bug. JRuby 1.6.3 ships with rubygems 1.5.1.
Upgrading rubygems makes it possible to install gherkin:
gem install rubygems-update
gem update --system

The only problem is - this works with a regular jruby installation.
Upgrading the JRuby downloaded by maven? I have no idea.

Ready to take cucumber-jvm for a spin? Cuke4Duke is going nowhere
while ruby land is as buggy as this.

Aslak
[INFO]  org/jruby/RubyMarshal.java:148:in `load'
[INFO]  file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/specification.rb:289:in
`_load'
[INFO]  org/jruby/RubyMarshal.java:148:in `load'
[INFO]  file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb:130:in
`fetch_spec'
[INFO]  file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb:86:in
`fetch_with_errors'
[INFO]  org/jruby/RubyArray.java:2336:in `collect'
[INFO]  file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/spec_fetcher.rb:85:in
`fetch_with_errors'
[INFO]  file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb:108:in
`find_gems_with_sour
ces'
[INFO]  file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb:154:in
`add_found_dependenc
ies'
[INFO]  org/jruby/RubyArray.java:1603:in `each'
[INFO]  file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb:153:in
`add_found_dependenc
ies'
[INFO]  file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb:137:in
`gather_dependencies
'
[INFO]  file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb:252:in
`install'
[INFO]  file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb:120:in
`execute'
[INFO]  org/jruby/RubyArray.java:1603:in `each'
[INFO]  file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb:115:in
`execute'
[INFO]  file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/command.rb:278:in
`invoke'
[INFO]  file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:133:in
`process_args'
[INFO]  file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:103:in
`run'
[INFO]  file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/gem_runner.rb:63:in
`run'
[INFO]  C:/Ruby192/bin/gem:21:in `(root)'
[INFO] Exception `Gem::SystemExitException' at file:/C:/Documents and
Settings/xxxx/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/user_interac
tion.rb:328 - Exiting RubyGems with exit_code 1
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/cukes/-/KC8kgk17yf4J.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Konstantinos Papalias
2011-08-18 16:54:44 UTC
Permalink
Thank you Aslak for the fix!
Now that it's fixed, don't we need to push the fixed gems into rubygems?
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To view this discussion on the web visit https://groups.google.com/d/msg/cukes/-/vY1OVGiOPMIJ.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
aslak hellesoy
2011-08-18 17:24:44 UTC
Permalink
On Thu, Aug 18, 2011 at 5:54 PM, Konstantinos Papalias
Post by Konstantinos Papalias
Thank you Aslak for the fix!
What fix?
Post by Konstantinos Papalias
Now that it's fixed, don't we need to push the fixed gems into rubygems?
What gems?
Post by Konstantinos Papalias
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/cukes/-/vY1OVGiOPMIJ.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Alan Wostenberg
2011-08-18 17:45:12 UTC
Permalink
Post by l***@public.gmane.org
<gem>install gherkin --version 2.4.11</gem>
<gem>install cuke4duke --debug --verbose --backtrace</gem>
So I first install the latest gherkin gem, then cuke4duke
I delete my maven repository, and run
mvn -Dcucumber.installGems=true cuke4duke:cucumber
I saw that error, too. Looks like we have to install cucumber prior to
cuke4duke in maven land. This pom works for me after clearing out maven
repository:
<gem>install cucumber</gem>
<gem>install cuke4duke --debug --verbose --backtrace</gem>
Note that cuke4duke 0.4.4 pulls in jruby-1.6.1 which is not the one Aslak
recommends. But my cukes are back to green with this so it seems to work.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To view this discussion on the web visit https://groups.google.com/d/msg/cukes/-/MSYVvNlEpr0J.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Alan Wostenberg
2011-08-18 17:36:15 UTC
Permalink
Post by Alan Wostenberg
Post by Alan Wostenberg
Post by aslak hellesoy
Post by Alan Wostenberg
Aslak, this is great news and I'll give this a whirl immediately with our
existing cuke4duke tests.
However as of August 16th, the "gem install cuke4duke" stopped
working,
Post by Alan Wostenberg
Post by aslak hellesoy
Post by Alan Wostenberg
as
described in thread "trouble installing gherkin gem" (log at
https://gist.github.com/1152852). Would you be willing to invest a little
time in it?
That problem should be fixed if you install gherkin-2.4.11
(2.4.7-2.4.10 were all broken due to a rubygems/yaml bug and it took
me several releases to figure out how to work around it).
Yes, but notice the log (https://gist.github.com/1152852) shows that
latest
Post by Alan Wostenberg
gherkin
Successfully installed gherkin-2.4.11-java
Try completely removing uninstalling any previously installed (broken)
gherkin gems.
Yes, tried that. The first line of that gist (
https://gist.github.com/1152852) removes all gems. But your idea led me to
a solution. The trick is to install cucumber before cuke4duke:

gem install cucumber

gem install cuke4duke --version

This works on a clean machine.
Just doing "gem install cuke4duke" fails with the original error.
Problem solved. Thanks.
Post by Alan Wostenberg
So it seems there is still something amis installing cuke4duke. Others
Post by Alan Wostenberg
report this here http://www.ruby-forum.com/topic/2380026.
I'll switch to Cucumber-jvm today.
If by "switch" you mean "try", go ahead. Expect some early adopter pain.
Understood! Hope to be a contributor.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To view this discussion on the web visit https://groups.google.com/d/msg/cukes/-/GnzPJvyd0goJ.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
l***@public.gmane.org
2011-08-18 17:50:16 UTC
Permalink
Thanks Alan! That fixed my issue too.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To view this discussion on the web visit https://groups.google.com/d/msg/cukes/-/FEUYgPUOQzoJ.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Robert
2011-08-18 18:12:13 UTC
Permalink
Post by aslak hellesoy
TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.
When Cucumber (the original ruby implementation) become somewhat
mature a couple of years ago I was thinking: Cucumber can run on JRuby
as well, and with some glue code it should be possible to write Step
Definitions in various JVM languages such as Java, Groovy, Scala,
Clojure etc. So Cuke4Duke was born.
It has worked well for some, less well for others. Since day 1 it has
1) Hard to install. Cuke4Duke is based on JRuby, the Cucumber gem and
the Gherkin gem. Installing these in a Java environment is hard.
2) Slow. Every time you want to run a feature you have to wait for
JRuby to boot.
3) Hard to use. Maven makes it a little easier perhaps, but Maven
comes with its own warts.
4) Unstable. Consider the blocks that build up Cuke4Duke: JVM, JRuby,
RubyGems, Cucumber gem, Gherkin gem, Maven. For the sake of
simplicity, let's assume that each of those exists in 4 versions. That
means some 15.000 different combinations people might have on their
machines. And then there is Windows/Linux/OS X differences on top of
that.
5) Hard to test. Given the number of different permutations this
speaks for itself.
6) Hard to package and release. A hodge podge of Maven and Rake, plus
dealing with all of the dependencies.
The problems have been getting worse lately, and it's time to retire
the project because of its inherent flaws. As of today I will no
longer maintain Cuke4Duke. Instead I'll spend my time working on a
better replacement.
As some of you may know, I have been working on a pure JVM
implementation of Cucumber for a while. It incorporates the good parts
of Cuke4Duke, but not the bad ones (I hope). I think it's good enough
* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import statements
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or other
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby
There are no docs yet, that will come later. I'm looking for people
who have some small to medium sized Cuke4Duke projects who would like
to try switching over. This will expose what the missing features are,
what needs to be documented etc.
Cucumber-JVM is currently not released anywhere, so you'll have to
build it yourself: https://github.com/cucumber/cucumber-jvm
For those who try - don't expect everything to work. I do need your
help testing it out to make it stabilise faster and get the features
it needs. I'll be here answering any questions you might have. I'm
*very* excited about this project! And we need contributors! Show the
Ruby community that the Java/Groovy/Clojure/Scala people can
contribute to open source too!
Cheers,
Aslak
Aslak,

This is FANTASTIC news!!! And, it could not have come at a better time for
us. We are currently struggling (have been for a couple of weeks now), to
install the latest version of Cuke4Duke on one of our machines -- a clean
install.

Unfortunately, it has just not worked out. I have an older copy of
Cuke4Duke installed on my MacBook Pro, and that version is working just
fine. I'd love to participate in the testing effort... if you don't mind *having
a small team of QA engineers* take the application through its paces. We
use Cuke4Duke heavily and have been looking forward to the pure java
implementation.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To view this discussion on the web visit https://groups.google.com/d/msg/cukes/-/8fDaewY0fLgJ.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
David Kowis
2011-08-18 18:11:28 UTC
Permalink
Post by aslak hellesoy
TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.
implementation of Cucumber for a while. It incorporates the good parts
Post by aslak hellesoy
of Cuke4Duke, but not the bad ones (I hope). I think it's good enough
As some of you may know, I have been working on a pure JVM
* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import statements
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or other
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby
So there will not be any more support for Ruby step definitions? That is sad
:(
I've got a couple projects that we're wanting to use Ruby step definitions
to facilitate the writing of our tests.

Thanks,
David
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To view this discussion on the web visit https://groups.google.com/d/msg/cukes/-/WyzS1Q2Gq4MJ.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Dmitriy Korobskiy
2011-08-18 20:57:04 UTC
Permalink
Post by David Kowis
I've got a couple projects that we're wanting to use Ruby step
definitions to facilitate the writing of our tests.
What's stopping you from using native cucumber for those?
--
DK
AIM: DKroot1, Skype: DKroot
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
David Kowis
2011-08-18 21:28:07 UTC
Permalink
Post by Dmitriy Korobskiy
Post by David Kowis
I've got a couple projects that we're wanting to use Ruby step definitions
to facilitate the writing of our tests.
What's stopping you from using native cucumber for those?
Sorry, sufficient context failure:

It's a Java project, built using Maven. We're using the
cuke4duke-maven-plugin to fire off cucumber feature tests for it.

We could probably build in something using maven-ant-tasks but it'd be
far uglier.

Thanks,
David
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Dmitriy Korobskiy
2011-08-18 21:57:14 UTC
Permalink
Post by David Kowis
Post by Dmitriy Korobskiy
Post by David Kowis
I've got a couple projects that we're wanting to use Ruby step definitions
to facilitate the writing of our tests.
What's stopping you from using native cucumber for those?
It's a Java project, built using Maven. We're using the
Got it. Maven... Sigh.
Post by David Kowis
cuke4duke-maven-plugin to fire off cucumber feature tests for it.
We could probably build in something using maven-ant-tasks but it'd be
far uglier.
Isn't it well, strange that a simple command like invocation (>cucumber
...) is somehow
problematic to do with Maven? I'm using Ant for build and it's a piece
of cake as it should be.
--
DK
AIM: DKroot1, Skype: DKroot
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Rob Hunter
2011-08-18 22:09:54 UTC
Permalink
Post by Dmitriy Korobskiy
Post by David Kowis
Post by Dmitriy Korobskiy
Post by David Kowis
I've got a couple projects that we're wanting to use Ruby step definitions
to facilitate the writing of our tests.
What's stopping you from using native cucumber for those?
It's a Java project, built using Maven. We're using the
Got it. Maven... Sigh.
Post by David Kowis
cuke4duke-maven-plugin to fire off cucumber feature tests for it.
We could probably build in something using maven-ant-tasks but it'd be
far uglier.
Isn't it well, strange that a simple command like invocation (>cucumber ...) is somehow
problematic to do with Maven? I'm using Ant for build and it's a piece of cake as it should be.
I've not worked with Maven, but it sounds like it would be helpful if there were a pre-built Maven task/target/rule/whatever that runs the plain Ruby Cucumber.

It night even be that this already exists in the cuke4duke Maven plug-in and just needs a little attention drawn to it.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Aslak Hellesøy
2011-08-18 23:54:20 UTC
Permalink
Post by Rob Hunter
Post by Dmitriy Korobskiy
Post by David Kowis
Post by Dmitriy Korobskiy
Post by David Kowis
I've got a couple projects that we're wanting to use Ruby step definitions
to facilitate the writing of our tests.
What's stopping you from using native cucumber for those?
It's a Java project, built using Maven. We're using the
Got it. Maven... Sigh.
Post by David Kowis
cuke4duke-maven-plugin to fire off cucumber feature tests for it.
We could probably build in something using maven-ant-tasks but it'd be
far uglier.
Isn't it well, strange that a simple command like invocation (>cucumber ...) is somehow
problematic to do with Maven? I'm using Ant for build and it's a piece of cake as it should be.
I've not worked with Maven, but it sounds like it would be helpful if there were a pre-built Maven task/target/rule/whatever that runs the plain Ruby Cucumber.
Can you give an example of a technology stack where you think this
would be helpful?

Aslak
Post by Rob Hunter
It night even be that this already exists in the cuke4duke Maven plug-in and just needs a little attention drawn to it.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
David Kowis
2011-08-19 02:17:54 UTC
Permalink
Post by Rob Hunter
Post by Dmitriy Korobskiy
Post by David Kowis
We could probably build in something using maven-ant-tasks but it'd be
far uglier.
Isn't it well, strange that a simple command like invocation (>cucumber ...) is somehow
problematic to do with Maven? I'm using Ant for build and it's a piece of cake as it should be.
I've not worked with Maven, but it sounds like it would be helpful if there were a pre-built Maven task/target/rule/whatever that runs the plain Ruby Cucumber.
It night even be that this already exists in the cuke4duke Maven plug-in and just needs a little attention drawn to it.
Perhaps, if you have an external Jruby, the cuke4duke-maven-plugin
wraps it all in, as it should be, so it's very convienient and
relatively easy to use.

(When rubygems isn't horking everything up.)

David
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Mark Derricutt
2011-08-23 01:06:51 UTC
Permalink
Just commenting on an old email here - in my fork of cucumber-jvm (nothing pushed yet) I have the start of a maven-surefire provider which will invoke cucumber-jvm without any Junit tests (hopefully) just by discovering .feature files in your target class path.

I have the basics working and am just diving into how the Junit runner actually runs cucumber.
Post by Rob Hunter
I've not worked with Maven, but it sounds like it would be helpful if there were a pre-built Maven task/target/rule/whatever that runs the plain Ruby Cucumber.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Aslak Hellesøy
2011-08-18 23:52:53 UTC
Permalink
Post by David Kowis
Post by Dmitriy Korobskiy
Post by David Kowis
I've got a couple projects that we're wanting to use Ruby step definitions
to facilitate the writing of our tests.
What's stopping you from using native cucumber for those?
It's a Java project, built using Maven. We're using the
cuke4duke-maven-plugin to fire off cucumber feature tests for it.
We could probably build in something using maven-ant-tasks but it'd be
far uglier.
You want to invoke methods in your Java code using Ruby (via JRuby) in
your step defs?

Please explain what technology your Java project uses (Web? Swing?
What frameworks?)

We could always add JRuby support in Cucumber-JVM, but I need to
understand why this would be preferrable over MRI and Cucumber-Ruby
(alive and kicking)..

I don't understand how the build tool (Ant/Maven) is relevant in this
regard. Please help me understand.

Aslak
Post by David Kowis
Thanks,
David
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
David Kowis
2011-08-19 02:29:02 UTC
Permalink
On Thu, Aug 18, 2011 at 6:52 PM, Aslak Hellesøy
Post by Aslak Hellesøy
Post by David Kowis
Post by Dmitriy Korobskiy
Post by David Kowis
I've got a couple projects that we're wanting to use Ruby step definitions
to facilitate the writing of our tests.
What's stopping you from using native cucumber for those?
It's a Java project, built using Maven. We're using the
cuke4duke-maven-plugin to fire off cucumber feature tests for it.
We could probably build in something using maven-ant-tasks but it'd be
far uglier.
You want to invoke methods in your Java code using Ruby (via JRuby) in
your step defs?
Yep. Same as if you're using scala or groovy. It'd be nice if we could
use other ruby gems as well, but I was going to cross that bridge when
I came to it.
Post by Aslak Hellesøy
Please explain what technology your Java project uses (Web? Swing?
What frameworks?)
Spring. Hibernate. Jersey. It's a web service. Deployed in glassfish,
but for testing just running in Jetty.
Post by Aslak Hellesøy
We could always add JRuby support in Cucumber-JVM, but I need to
understand why this would be preferrable over MRI and Cucumber-Ruby
(alive and kicking)..
I don't understand how the build tool (Ant/Maven) is relevant in this
regard. Please help me understand.
Maybe then I don't completely understand how it works.

Cuke4Duke handles running cucumber, and jruby and everything.
As well as enabling step definitions in other languages.
The cuke4duke-maven-plugin also integrates it nicely with maven so
that we can just have it run as part of our integration test.
It doesn't require having an installation of Ruby (JRuby or otherwise)
on the system, which makes it easier to deal with Continuous
Integration servers.

The build tool stuff is mostly for context, we liked being able to
easily add in the ability to run cucumber features to our projects.
And our testers, as well as some of the developers, really like being
able to write the step definitions in ruby. We're using maven for all
of our java projects, potentially moving to Gradle at some point in
the future.

Is there a different way to do this easier that I've completely missed
out on? Hopefully I've made myself more clear. I guess I thought that
cucumber-jvm would basically be just like the existing way we're using
cuke4duke, but instead of calling out to ruby to run the cucumber
features, it'd just do it in native java.

Thanks,
David
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
aslak hellesoy
2011-08-19 07:41:58 UTC
Permalink
Post by David Kowis
On Thu, Aug 18, 2011 at 6:52 PM, Aslak Hellesøy
Post by Aslak Hellesøy
Post by David Kowis
Post by Dmitriy Korobskiy
Post by David Kowis
I've got a couple projects that we're wanting to use Ruby step definitions
to facilitate the writing of our tests.
What's stopping you from using native cucumber for those?
It's a Java project, built using Maven. We're using the
cuke4duke-maven-plugin to fire off cucumber feature tests for it.
We could probably build in something using maven-ant-tasks but it'd be
far uglier.
You want to invoke methods in your Java code using Ruby (via JRuby) in
your step defs?
Yep. Same as if you're using scala or groovy. It'd be nice if we could
use other ruby gems as well, but I was going to cross that bridge when
I came to it.
Installing gems "into" a JRuby that is a plain JRuby jar file (and not
a regular zipfile installation) is somewhat tricky, and has been a
constant source of frustration in cuke4duke. It's possible, setting
GEM_HOME and GEM_PATH, but anyone who has worked with environment
variables in Java know that's tricky as well. If someone has a good
recipe for doing this, please share.
Post by David Kowis
Post by Aslak Hellesøy
Please explain what technology your Java project uses (Web? Swing?
What frameworks?)
Spring. Hibernate. Jersey. It's a web service. Deployed in glassfish,
but for testing just running in Jetty.
Post by Aslak Hellesøy
We could always add JRuby support in Cucumber-JVM, but I need to
understand why this would be preferrable over MRI and Cucumber-Ruby
(alive and kicking)..
I don't understand how the build tool (Ant/Maven) is relevant in this
regard. Please help me understand.
Maybe then I don't completely understand how it works.
Cuke4Duke handles running cucumber, and jruby and everything.
As well as enabling step definitions in other languages.
The cuke4duke-maven-plugin also integrates it nicely with maven so
that we can just have it run as part of our integration test.
It doesn't require having an installation of Ruby (JRuby or otherwise)
on the system, which makes it easier to deal with Continuous
Integration servers.
The build tool stuff is mostly for context, we liked being able to
easily add in the ability to run cucumber features to our projects.
And our testers, as well as some of the developers, really like being
able to write the step definitions in ruby. We're using maven for all
of our java projects, potentially moving to Gradle at some point in
the future.
Is there a different way to do this easier that I've completely missed
out on? Hopefully I've made myself more clear. I guess I thought that
cucumber-jvm would basically be just like the existing way we're using
cuke4duke, but instead of calling out to ruby to run the cucumber
features, it'd just do it in native java.
We'll probably add JRuby (and Jython) support, in the same vein as the
other JVM languages already supported. Having Maven/Ant/Gradle/your
favourite build tool install gems/eggs is still going to be a little
tricky (see above). Hopefulley someone will contribute some nice
recipes for the cucumber-jvm wiki here...

Aslak
Post by David Kowis
Thanks,
David
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Cedric Lamalle
2011-08-18 20:08:59 UTC
Permalink
Hi,
Just a few more words about this transition, there is a plan to put cucumber
artifacts on Maven Central. With this using Cumcumber-JVM in a maven project
will be as simple as adding a dependency in the pom...

I've been a little away ultimately, but I'm still working on the Table
implementation. I'm trying to stay as close as possible to the original
specification (spec/cucumber/ast/table_spec.rb). I hope to have more time in
order to finish it until next week. This part is a little bigger than I
initially thought, but I'm not afraid!! For the diff part I've found an LCS
implementation based on Myers Algorithm for java[1], I'll see if the results
are different in this case from the Hunt–McIlroy algorithm used in Ruby
Cucumber.

Bye,
Cédric.

[1] http://code.google.com/p/java-diff-utils/ (Apache Software License v2)
Post by aslak hellesoy
TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.
When Cucumber (the original ruby implementation) become somewhat
mature a couple of years ago I was thinking: Cucumber can run on JRuby
as well, and with some glue code it should be possible to write Step
Definitions in various JVM languages such as Java, Groovy, Scala,
Clojure etc. So Cuke4Duke was born.
It has worked well for some, less well for others. Since day 1 it has
1) Hard to install. Cuke4Duke is based on JRuby, the Cucumber gem and
the Gherkin gem. Installing these in a Java environment is hard.
2) Slow. Every time you want to run a feature you have to wait for
JRuby to boot.
3) Hard to use. Maven makes it a little easier perhaps, but Maven
comes with its own warts.
4) Unstable. Consider the blocks that build up Cuke4Duke: JVM, JRuby,
RubyGems, Cucumber gem, Gherkin gem, Maven. For the sake of
simplicity, let's assume that each of those exists in 4 versions. That
means some 15.000 different combinations people might have on their
machines. And then there is Windows/Linux/OS X differences on top of
that.
5) Hard to test. Given the number of different permutations this
speaks for itself.
6) Hard to package and release. A hodge podge of Maven and Rake, plus
dealing with all of the dependencies.
The problems have been getting worse lately, and it's time to retire
the project because of its inherent flaws. As of today I will no
longer maintain Cuke4Duke. Instead I'll spend my time working on a
better replacement.
As some of you may know, I have been working on a pure JVM
implementation of Cucumber for a while. It incorporates the good parts
of Cuke4Duke, but not the bad ones (I hope). I think it's good enough
* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import statements
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or other
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby
There are no docs yet, that will come later. I'm looking for people
who have some small to medium sized Cuke4Duke projects who would like
to try switching over. This will expose what the missing features are,
what needs to be documented etc.
Cucumber-JVM is currently not released anywhere, so you'll have to
build it yourself: https://github.com/cucumber/cucumber-jvm
For those who try - don't expect everything to work. I do need your
help testing it out to make it stabilise faster and get the features
it needs. I'll be here answering any questions you might have. I'm
*very* excited about this project! And we need contributors! Show the
Ruby community that the Java/Groovy/Clojure/Scala people can
contribute to open source too!
Cheers,
Aslak
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
aslak hellesoy
2011-08-19 13:03:10 UTC
Permalink
On Thu, Aug 18, 2011 at 9:08 PM, Cedric Lamalle
Post by Cedric Lamalle
Hi,
Just a few more words about this transition, there is a plan to put cucumber
artifacts on Maven Central. With this using Cumcumber-JVM in a maven project
will be as simple as adding a dependency in the pom...
I've been a little away ultimately, but I'm still working on the Table
implementation. I'm trying to stay as close as possible to the original
specification (spec/cucumber/ast/table_spec.rb).
That's awesome Cedric. Let's take the time to discuss what we
like/dislike from Cucumber Ruby's (crb) table diffing so we can make
it even better.

Crb's diff attempts to do a diff of rows as well as columns. In
practice I have never found a need for column diffing, so I'm open for
removing that if it simplifies the implementation.
Another thing Crb's diff does is to require the presence of a header
row. This row is used to reorder columns in case we're comparing with
a table of hashes. This is a little too clever as well, and I'd like
to remove that too. So here are the changes I propose:

* No header row required (and now reordering of columns before diffing)
* No column diffing

Does anyone see any problems with this?
Post by Cedric Lamalle
I hope to have more time in
order to finish it until next week. This part is a little bigger than I
initially thought, but I'm not afraid!! For the diff part I've found an LCS
implementation based on Myers Algorithm for java[1], I'll see if the results
are different in this case from the Hunt–McIlroy algorithm used in Ruby
Cucumber.
If you don't have any luck with Myers, it should be fairly easy to
port the code from
https://github.com/halostatue/diff-lcs/blob/master/lib/diff/lcs.rb
There is a very short Diff LCS implementation here:
http://introcs.cs.princeton.edu/java/96optimization/ - haven't studied
it, so I don't know if it's the same algo (Hunt–McIlroy)

Aslak
Post by Cedric Lamalle
Bye,
Cédric.
[1] http://code.google.com/p/java-diff-utils/ (Apache Software License v2)
Post by aslak hellesoy
TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.
When Cucumber (the original ruby implementation) become somewhat
mature a couple of years ago I was thinking: Cucumber can run on JRuby
as well, and with some glue code it should be possible to write Step
Definitions in various JVM languages such as Java, Groovy, Scala,
Clojure etc. So Cuke4Duke was born.
It has worked well for some, less well for others. Since day 1 it has
1) Hard to install. Cuke4Duke is based on JRuby, the Cucumber gem and
the Gherkin gem. Installing these in a Java environment is hard.
2) Slow. Every time you want to run a feature you have to wait for
JRuby to boot.
3) Hard to use. Maven makes it a little easier perhaps, but Maven
comes with its own warts.
4) Unstable. Consider the blocks that build up Cuke4Duke: JVM, JRuby,
RubyGems, Cucumber gem, Gherkin gem, Maven. For the sake of
simplicity, let's assume that each of those exists in 4 versions. That
means some 15.000 different combinations people might have on their
machines. And then there is Windows/Linux/OS X differences on top of
that.
5) Hard to test. Given the number of different permutations this
speaks for itself.
6) Hard to package and release. A hodge podge of Maven and Rake, plus
dealing with all of the dependencies.
The problems have been getting worse lately, and it's time to retire
the project because of its inherent flaws. As of today I will no
longer maintain Cuke4Duke. Instead I'll spend my time working on a
better replacement.
As some of you may know, I have been working on a pure JVM
implementation of Cucumber for a while. It incorporates the good parts
of Cuke4Duke, but not the bad ones (I hope). I think it's good enough
* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import statements
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or other
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby
There are no docs yet, that will come later. I'm looking for people
who have some small to medium sized Cuke4Duke projects who would like
to try switching over. This will expose what the missing features are,
what needs to be documented etc.
Cucumber-JVM is currently not released anywhere, so you'll have to
build it yourself: https://github.com/cucumber/cucumber-jvm
For those who try - don't expect everything to work. I do need your
help testing it out to make it stabilise faster and get the features
it needs. I'll be here answering any questions you might have. I'm
*very* excited about this project! And we need contributors! Show the
Ruby community that the Java/Groovy/Clojure/Scala people can
contribute to open source too!
Cheers,
Aslak
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Cedric Lamalle
2011-08-21 13:10:01 UTC
Permalink
Post by aslak hellesoy
On Thu, Aug 18, 2011 at 9:08 PM, Cedric Lamalle
Post by Cedric Lamalle
Hi,
Just a few more words about this transition, there is a plan to put
cucumber
Post by Cedric Lamalle
artifacts on Maven Central. With this using Cumcumber-JVM in a maven
project
Post by Cedric Lamalle
will be as simple as adding a dependency in the pom...
I've been a little away ultimately, but I'm still working on the Table
implementation. I'm trying to stay as close as possible to the original
specification (spec/cucumber/ast/table_spec.rb).
That's awesome Cedric. Let's take the time to discuss what we
like/dislike from Cucumber Ruby's (crb) table diffing so we can make
it even better.
Crb's diff attempts to do a diff of rows as well as columns. In
practice I have never found a need for column diffing, so I'm open for
removing that if it simplifies the implementation.
Another thing Crb's diff does is to require the presence of a header
row. This row is used to reorder columns in case we're comparing with
a table of hashes. This is a little too clever as well, and I'd like
* No header row required (and now reordering of columns before diffing)
* No column diffing
I agree with this. The headers were useful to be sure to compare the same
column even if it wasn't in the same position.
How did you imagine this? Something like that:
Given the following table:
| name | email | phone |
| Aslak | aslak-***@public.gmane.org | 123 |
| Joe | joe-***@public.gmane.org | 234 |
| Bryan | bryan-***@public.gmane.org | 456 |
| Ni | ni-***@public.gmane.org | 654 |
When diffing it with the following table:
| name | email | phone |
| Aslak | aslak-***@public.gmane.org | 123 |
| Doe | joe-***@public.gmane.org | 234 |
| Foo | schnickens-462rYI6+***@public.gmane.org | 789 |
| Bryan | bryan-***@public.gmane.org | 456 |
Then the resulting diff should be:
| name | email | phone |
(~)| Aslak | (-)aslak-***@public.gmane.org (+)aslak-***@public.gmane.org | 123 |
(~)| (-)Joe (+)Doe | joe-***@public.gmane.org | 234 |
(+)| Foo | schnickens-***@public.gmane.org | 789 |
| Bryan | bryan-***@public.gmane.org | 456 |
(-)| Ni | ni-***@public.gmane.org | 654 |

Does anyone see any problems with this?
Post by aslak hellesoy
Post by Cedric Lamalle
I hope to have more time in
order to finish it until next week. This part is a little bigger than I
initially thought, but I'm not afraid!! For the diff part I've found an
LCS
Post by Cedric Lamalle
implementation based on Myers Algorithm for java[1], I'll see if the
results
Post by Cedric Lamalle
are different in this case from the Hunt–McIlroy algorithm used in Ruby
Cucumber.
If you don't have any luck with Myers, it should be fairly easy to
port the code from
https://github.com/halostatue/diff-lcs/blob/master/lib/diff/lcs.rb
http://introcs.cs.princeton.edu/java/96optimization/ - haven't studied
it, so I don't know if it's the same algo (Hunt–McIlroy)
From the tests I've done Myers' algorithm in java-diff-utils works well.
Cedric.
Post by aslak hellesoy
Aslak
Post by Cedric Lamalle
Bye,
Cédric.
[1] http://code.google.com/p/java-diff-utils/ (Apache Software License
v2)
Post by Cedric Lamalle
Post by aslak hellesoy
TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.
When Cucumber (the original ruby implementation) become somewhat
mature a couple of years ago I was thinking: Cucumber can run on JRuby
as well, and with some glue code it should be possible to write Step
Definitions in various JVM languages such as Java, Groovy, Scala,
Clojure etc. So Cuke4Duke was born.
It has worked well for some, less well for others. Since day 1 it has
1) Hard to install. Cuke4Duke is based on JRuby, the Cucumber gem and
the Gherkin gem. Installing these in a Java environment is hard.
2) Slow. Every time you want to run a feature you have to wait for
JRuby to boot.
3) Hard to use. Maven makes it a little easier perhaps, but Maven
comes with its own warts.
4) Unstable. Consider the blocks that build up Cuke4Duke: JVM, JRuby,
RubyGems, Cucumber gem, Gherkin gem, Maven. For the sake of
simplicity, let's assume that each of those exists in 4 versions. That
means some 15.000 different combinations people might have on their
machines. And then there is Windows/Linux/OS X differences on top of
that.
5) Hard to test. Given the number of different permutations this
speaks for itself.
6) Hard to package and release. A hodge podge of Maven and Rake, plus
dealing with all of the dependencies.
The problems have been getting worse lately, and it's time to retire
the project because of its inherent flaws. As of today I will no
longer maintain Cuke4Duke. Instead I'll spend my time working on a
better replacement.
As some of you may know, I have been working on a pure JVM
implementation of Cucumber for a while. It incorporates the good parts
of Cuke4Duke, but not the bad ones (I hope). I think it's good enough
* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import statements
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or other
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby
There are no docs yet, that will come later. I'm looking for people
who have some small to medium sized Cuke4Duke projects who would like
to try switching over. This will expose what the missing features are,
what needs to be documented etc.
Cucumber-JVM is currently not released anywhere, so you'll have to
build it yourself: https://github.com/cucumber/cucumber-jvm
For those who try - don't expect everything to work. I do need your
help testing it out to make it stabilise faster and get the features
it needs. I'll be here answering any questions you might have. I'm
*very* excited about this project! And we need contributors! Show the
Ruby community that the Java/Groovy/Clojure/Scala people can
contribute to open source too!
Cheers,
Aslak
--
You received this message because you are subscribed to the Google
Groups
Post by Cedric Lamalle
Post by aslak hellesoy
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
aslak hellesoy
2011-08-21 22:11:01 UTC
Permalink
Post by aslak hellesoy
Post by aslak hellesoy
On Thu, Aug 18, 2011 at 9:08 PM, Cedric Lamalle
Post by Cedric Lamalle
Hi,
Just a few more words about this transition, there is a plan to put cucumber
artifacts on Maven Central. With this using Cumcumber-JVM in a maven project
will be as simple as adding a dependency in the pom...
I've been a little away ultimately, but I'm still working on the Table
implementation. I'm trying to stay as close as possible to the original
specification (spec/cucumber/ast/table_spec.rb).
That's awesome Cedric. Let's take the time to discuss what we
like/dislike from Cucumber Ruby's (crb) table diffing so we can make
it even better.
Crb's diff attempts to do a diff of rows as well as columns. In
practice I have never found a need for column diffing, so I'm open for
removing that if it simplifies the implementation.
Another thing Crb's diff does is to require the presence of a header
row. This row is used to reorder columns in case we're comparing with
a table of hashes. This is a little too clever as well, and I'd like
* No header row required (and now reordering of columns before diffing)
* No column diffing
I agree with this. The headers were useful to be sure to compare the same
column even if it wasn't in the same position.
Correct. Let me give you the background. At some point I realised that
ActiveRecord could be viewed as an array of Hashes - [{},{}]
You can use this to create a bunch of records with
MyRecord.create!(table.hashes), and that was why I added the #hashes method.

Likewise, you can do a query to turn a bunch of AR objects into [{},{}] :
MyRecord.find(...).map(&:attributes)
This led me to implement diff so that you could pass a [{},{}] to diff
against. This required a top header so that the [{},{}] could be turned into
[[],[], []], using the keys as headers, and sorting them according to the
original table.

This was a bad decision on my part. It complicates the diff implementation
considerably, and for a bad reason. It would be much better to have an
external method, say SomeUtil.to_array([{},{}], :foo, :bar, :zap) to turn
this into an array of arrays.
Post by aslak hellesoy
| name | email | phone |
| name | email | phone |
| name | email | phone |
Something like that. One important detail is that the header row would not
be required. Also, when two rows are different I don't think we have to look
for individual cell differences - just list the rows as different:

| name | email | phone |
| Aslak | aslak-***@public.gmane.org | 123 |
- | Joe | joe-***@public.gmane.org | 234 |
+ | Joe | joe-***@public.gmane.org | 234 |
+ | Foo | shchinkens-***@public.gmane.org | 789 |
| Bryan | bryan-***@public.gmane.org | 456 |
- | Ni | ni-***@public.gmane.org | 654 |


WDYT?

Aslak
Post by aslak hellesoy
Post by aslak hellesoy
Does anyone see any problems with this?
Post by Cedric Lamalle
I hope to have more time in
order to finish it until next week. This part is a little bigger than I
initially thought, but I'm not afraid!! For the diff part I've found an LCS
implementation based on Myers Algorithm for java[1], I'll see if the results
are different in this case from the Hunt–McIlroy algorithm used in Ruby
Cucumber.
If you don't have any luck with Myers, it should be fairly easy to
port the code from
https://github.com/halostatue/diff-lcs/blob/master/lib/diff/lcs.rb
http://introcs.cs.princeton.edu/java/96optimization/ - haven't studied
it, so I don't know if it's the same algo (Hunt–McIlroy)
From the tests I've done Myers' algorithm in java-diff-utils works well.
Cedric.
Post by aslak hellesoy
Aslak
Post by Cedric Lamalle
Bye,
Cédric.
[1] http://code.google.com/p/java-diff-utils/ (Apache Software License v2)
Post by aslak hellesoy
TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.
When Cucumber (the original ruby implementation) become somewhat
mature a couple of years ago I was thinking: Cucumber can run on JRuby
as well, and with some glue code it should be possible to write Step
Definitions in various JVM languages such as Java, Groovy, Scala,
Clojure etc. So Cuke4Duke was born.
It has worked well for some, less well for others. Since day 1 it has
1) Hard to install. Cuke4Duke is based on JRuby, the Cucumber gem and
the Gherkin gem. Installing these in a Java environment is hard.
2) Slow. Every time you want to run a feature you have to wait for
JRuby to boot.
3) Hard to use. Maven makes it a little easier perhaps, but Maven
comes with its own warts.
4) Unstable. Consider the blocks that build up Cuke4Duke: JVM, JRuby,
RubyGems, Cucumber gem, Gherkin gem, Maven. For the sake of
simplicity, let's assume that each of those exists in 4 versions. That
means some 15.000 different combinations people might have on their
machines. And then there is Windows/Linux/OS X differences on top of
that.
5) Hard to test. Given the number of different permutations this
speaks for itself.
6) Hard to package and release. A hodge podge of Maven and Rake, plus
dealing with all of the dependencies.
The problems have been getting worse lately, and it's time to retire
the project because of its inherent flaws. As of today I will no
longer maintain Cuke4Duke. Instead I'll spend my time working on a
better replacement.
As some of you may know, I have been working on a pure JVM
implementation of Cucumber for a while. It incorporates the good parts
of Cuke4Duke, but not the bad ones (I hope). I think it's good enough
* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import statements
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or other
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby
There are no docs yet, that will come later. I'm looking for people
who have some small to medium sized Cuke4Duke projects who would like
to try switching over. This will expose what the missing features are,
what needs to be documented etc.
Cucumber-JVM is currently not released anywhere, so you'll have to
build it yourself: https://github.com/cucumber/cucumber-jvm
For those who try - don't expect everything to work. I do need your
help testing it out to make it stabilise faster and get the features
it needs. I'll be here answering any questions you might have. I'm
*very* excited about this project! And we need contributors! Show the
Ruby community that the Java/Groovy/Clojure/Scala people can
contribute to open source too!
Cheers,
Aslak
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Cedric Lamalle
2011-08-22 12:26:55 UTC
Permalink
Post by aslak hellesoy
Post by aslak hellesoy
Post by aslak hellesoy
On Thu, Aug 18, 2011 at 9:08 PM, Cedric Lamalle
Post by Cedric Lamalle
Hi,
Just a few more words about this transition, there is a plan to put cucumber
artifacts on Maven Central. With this using Cumcumber-JVM in a maven project
will be as simple as adding a dependency in the pom...
I've been a little away ultimately, but I'm still working on the Table
implementation. I'm trying to stay as close as possible to the
original
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
specification (spec/cucumber/ast/table_spec.rb).
That's awesome Cedric. Let's take the time to discuss what we
like/dislike from Cucumber Ruby's (crb) table diffing so we can make
it even better.
Crb's diff attempts to do a diff of rows as well as columns. In
practice I have never found a need for column diffing, so I'm open for
removing that if it simplifies the implementation.
Another thing Crb's diff does is to require the presence of a header
row. This row is used to reorder columns in case we're comparing with
a table of hashes. This is a little too clever as well, and I'd like
* No header row required (and now reordering of columns before diffing)
* No column diffing
I agree with this. The headers were useful to be sure to compare the same
column even if it wasn't in the same position.
Correct. Let me give you the background. At some point I realised that
ActiveRecord could be viewed as an array of Hashes - [{},{}]
You can use this to create a bunch of records with
MyRecord.create!(table.hashes), and that was why I added the #hashes method.
I have used the hashes method in a TableTransformer to transform each line
in a JavaBean in a similiar way. What do you think about this? I think it
will be helpful in particular in background and given steps.
Post by aslak hellesoy
MyRecord.find(...).map(&:attributes)
This led me to implement diff so that you could pass a [{},{}] to diff
against. This required a top header so that the [{},{}] could be turned into
[[],[], []], using the keys as headers, and sorting them according to the
original table.
This was a bad decision on my part. It complicates the diff implementation
considerably, and for a bad reason. It would be much better to have an
external method, say SomeUtil.to_array([{},{}], :foo, :bar, :zap) to turn
this into an array of arrays.
I was planning to create a TableDiffer class. One candidate for the Diff
would be raw() that returns List<LIst<String>> to do the diff. But it would
be better to use the mapped column, ie 1.000 is different of 1000 if
compared as a String, but I don't think this should be reported as a problem
if the column was mapped as an integer. What do you think about this? I'll
make a little modification in the code to allow mapping column to
transformers by position, besides the current one that maps using the
headers.
Post by aslak hellesoy
Post by aslak hellesoy
| name | email | phone |
| name | email | phone |
| name | email | phone |
Something like that. One important detail is that the header row would not
be required. Also, when two rows are different I don't think we have to look
| name | email | phone |
WDYT?
That way the implementation will be simpler and what's really important is
to know that the lines didn't match.
Post by aslak hellesoy
Aslak
Post by aslak hellesoy
Post by aslak hellesoy
Does anyone see any problems with this?
Post by Cedric Lamalle
I hope to have more time in
order to finish it until next week. This part is a little bigger than
I
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
initially thought, but I'm not afraid!! For the diff part I've found
an
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
LCS
implementation based on Myers Algorithm for java[1], I'll see if the results
are different in this case from the Hunt–McIlroy algorithm used in
Ruby
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Cucumber.
If you don't have any luck with Myers, it should be fairly easy to
port the code from
https://github.com/halostatue/diff-lcs/blob/master/lib/diff/lcs.rb
http://introcs.cs.princeton.edu/java/96optimization/ - haven't studied
it, so I don't know if it's the same algo (Hunt–McIlroy)
From the tests I've done Myers' algorithm in java-diff-utils works well.
Cedric.
Post by aslak hellesoy
Aslak
Post by Cedric Lamalle
Bye,
Cédric.
[1] http://code.google.com/p/java-diff-utils/ (Apache Software
License
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
v2)
Post by aslak hellesoy
TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.
When Cucumber (the original ruby implementation) become somewhat
mature a couple of years ago I was thinking: Cucumber can run on
JRuby
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
as well, and with some glue code it should be possible to write Step
Definitions in various JVM languages such as Java, Groovy, Scala,
Clojure etc. So Cuke4Duke was born.
It has worked well for some, less well for others. Since day 1 it has
1) Hard to install. Cuke4Duke is based on JRuby, the Cucumber gem and
the Gherkin gem. Installing these in a Java environment is hard.
2) Slow. Every time you want to run a feature you have to wait for
JRuby to boot.
3) Hard to use. Maven makes it a little easier perhaps, but Maven
comes with its own warts.
4) Unstable. Consider the blocks that build up Cuke4Duke: JVM, JRuby,
RubyGems, Cucumber gem, Gherkin gem, Maven. For the sake of
simplicity, let's assume that each of those exists in 4 versions.
That
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
means some 15.000 different combinations people might have on their
machines. And then there is Windows/Linux/OS X differences on top of
that.
5) Hard to test. Given the number of different permutations this
speaks for itself.
6) Hard to package and release. A hodge podge of Maven and Rake, plus
dealing with all of the dependencies.
The problems have been getting worse lately, and it's time to retire
the project because of its inherent flaws. As of today I will no
longer maintain Cuke4Duke. Instead I'll spend my time working on a
better replacement.
As some of you may know, I have been working on a pure JVM
implementation of Cucumber for a while. It incorporates the good
parts
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
of Cuke4Duke, but not the bad ones (I hope). I think it's good enough
* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import
statements
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or other
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby
There are no docs yet, that will come later. I'm looking for people
who have some small to medium sized Cuke4Duke projects who would like
to try switching over. This will expose what the missing features
are,
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
what needs to be documented etc.
Cucumber-JVM is currently not released anywhere, so you'll have to
build it yourself: https://github.com/cucumber/cucumber-jvm
For those who try - don't expect everything to work. I do need your
help testing it out to make it stabilise faster and get the features
it needs. I'll be here answering any questions you might have. I'm
*very* excited about this project! And we need contributors! Show the
Ruby community that the Java/Groovy/Clojure/Scala people can
contribute to open source too!
Cheers,
Aslak
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google
Groups
Post by aslak hellesoy
Post by aslak hellesoy
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Cedric Lamalle
2011-08-23 04:25:40 UTC
Permalink
Post by aslak hellesoy
Post by aslak hellesoy
Post by aslak hellesoy
On Thu, Aug 18, 2011 at 9:08 PM, Cedric Lamalle
Post by Cedric Lamalle
Hi,
Just a few more words about this transition, there is a plan to put cucumber
artifacts on Maven Central. With this using Cumcumber-JVM in a maven project
will be as simple as adding a dependency in the pom...
I've been a little away ultimately, but I'm still working on the Table
implementation. I'm trying to stay as close as possible to the
original
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
specification (spec/cucumber/ast/table_spec.rb).
That's awesome Cedric. Let's take the time to discuss what we
like/dislike from Cucumber Ruby's (crb) table diffing so we can make
it even better.
Crb's diff attempts to do a diff of rows as well as columns. In
practice I have never found a need for column diffing, so I'm open for
removing that if it simplifies the implementation.
Another thing Crb's diff does is to require the presence of a header
row. This row is used to reorder columns in case we're comparing with
a table of hashes. This is a little too clever as well, and I'd like
* No header row required (and now reordering of columns before diffing)
* No column diffing
I agree with this. The headers were useful to be sure to compare the same
column even if it wasn't in the same position.
Correct. Let me give you the background. At some point I realised that
ActiveRecord could be viewed as an array of Hashes - [{},{}]
You can use this to create a bunch of records with
MyRecord.create!(table.hashes), and that was why I added the #hashes method.
MyRecord.find(...).map(&:attributes)
This led me to implement diff so that you could pass a [{},{}] to diff
against. This required a top header so that the [{},{}] could be turned into
[[],[], []], using the keys as headers, and sorting them according to the
original table.
This was a bad decision on my part. It complicates the diff implementation
considerably, and for a bad reason. It would be much better to have an
external method, say SomeUtil.to_array([{},{}], :foo, :bar, :zap) to turn
this into an array of arrays.
Post by aslak hellesoy
| name | email | phone |
| name | email | phone |
| name | email | phone |
Something like that. One important detail is that the header row would not
be required. Also, when two rows are different I don't think we have to look
| name | email | phone |
I have implemented the table diffing as we discussed it above. I still need
to get rid of the header when calling rows(). I didn't find a way to know if
a table as header, so I think I'll add a rows() method with a boolean
parameter 'hasHeader', if this boolean is true rows() will skip the first
line (it's an header), else it will return all rows (transformed).
I'll have to merge master to make integration easier.
Cheers,
Cédric.
Post by aslak hellesoy
WDYT?
Aslak
Post by aslak hellesoy
Post by aslak hellesoy
Does anyone see any problems with this?
Post by Cedric Lamalle
I hope to have more time in
order to finish it until next week. This part is a little bigger than
I
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
initially thought, but I'm not afraid!! For the diff part I've found
an
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
LCS
implementation based on Myers Algorithm for java[1], I'll see if the results
are different in this case from the Hunt–McIlroy algorithm used in
Ruby
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Cucumber.
If you don't have any luck with Myers, it should be fairly easy to
port the code from
https://github.com/halostatue/diff-lcs/blob/master/lib/diff/lcs.rb
http://introcs.cs.princeton.edu/java/96optimization/ - haven't studied
it, so I don't know if it's the same algo (Hunt–McIlroy)
From the tests I've done Myers' algorithm in java-diff-utils works well.
Cedric.
Post by aslak hellesoy
Aslak
Post by Cedric Lamalle
Bye,
Cédric.
[1] http://code.google.com/p/java-diff-utils/ (Apache Software
License
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
v2)
Post by aslak hellesoy
TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.
When Cucumber (the original ruby implementation) become somewhat
mature a couple of years ago I was thinking: Cucumber can run on
JRuby
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
as well, and with some glue code it should be possible to write Step
Definitions in various JVM languages such as Java, Groovy, Scala,
Clojure etc. So Cuke4Duke was born.
It has worked well for some, less well for others. Since day 1 it has
1) Hard to install. Cuke4Duke is based on JRuby, the Cucumber gem and
the Gherkin gem. Installing these in a Java environment is hard.
2) Slow. Every time you want to run a feature you have to wait for
JRuby to boot.
3) Hard to use. Maven makes it a little easier perhaps, but Maven
comes with its own warts.
4) Unstable. Consider the blocks that build up Cuke4Duke: JVM, JRuby,
RubyGems, Cucumber gem, Gherkin gem, Maven. For the sake of
simplicity, let's assume that each of those exists in 4 versions.
That
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
means some 15.000 different combinations people might have on their
machines. And then there is Windows/Linux/OS X differences on top of
that.
5) Hard to test. Given the number of different permutations this
speaks for itself.
6) Hard to package and release. A hodge podge of Maven and Rake, plus
dealing with all of the dependencies.
The problems have been getting worse lately, and it's time to retire
the project because of its inherent flaws. As of today I will no
longer maintain Cuke4Duke. Instead I'll spend my time working on a
better replacement.
As some of you may know, I have been working on a pure JVM
implementation of Cucumber for a while. It incorporates the good
parts
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
of Cuke4Duke, but not the bad ones (I hope). I think it's good enough
* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import
statements
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or other
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby
There are no docs yet, that will come later. I'm looking for people
who have some small to medium sized Cuke4Duke projects who would like
to try switching over. This will expose what the missing features
are,
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
what needs to be documented etc.
Cucumber-JVM is currently not released anywhere, so you'll have to
build it yourself: https://github.com/cucumber/cucumber-jvm
For those who try - don't expect everything to work. I do need your
help testing it out to make it stabilise faster and get the features
it needs. I'll be here answering any questions you might have. I'm
*very* excited about this project! And we need contributors! Show the
Ruby community that the Java/Groovy/Clojure/Scala people can
contribute to open source too!
Cheers,
Aslak
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google
Groups
Post by aslak hellesoy
Post by aslak hellesoy
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Urs
2011-08-23 11:33:10 UTC
Permalink
Aslak,
this is great news.

I just gave it a whirl, and got up to the point where I try to run a
feature.
Afterwards it's
cucumber.runtime.CucumberException: Failed to scan jar[1]
Caused by: java.io.FileNotFoundException: C:\Dokumente%20und
%20Einstellungen\ur\.m2\repository\info\cukes\cucumber-java\1.0.0-
SNAPSHOT\cucumber-java-1.0.0-SNAPSHOT.jar,
but the file is definitely there.

I'm launching the test via IntelliJ IDEA 10.5.1 on WinXP, the
repository is a Maven3 repo.

Could you guess what I need to do to get this running?
Out of curiosity, why would Cucumber even need to scan its own .jar
file?

Regards
-Urs

[1]Full Stacktrace:
cucumber.runtime.CucumberException: Failed to scan jar
at cucumber.classpath.Classpath.scanJar(Classpath.java:134)
at cucumber.classpath.Classpath.scan(Classpath.java:54)
at cucumber.classpath.Classpath.getInstantiableClasses(Classpath.java:
35)
at
cucumber.classpath.Classpath.getInstantiableSubclassesOf(Classpath.java:
41)
at cucumber.classpath.Classpath.instantiateSubclasses(Classpath.java:
98)
at cucumber.runtime.Runtime.<init>(Runtime.java:25)
at cucumber.junit.Cucumber.runtime(Cucumber.java:29)
at cucumber.junit.Cucumber.<init>(Cucumber.java:43)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:
39)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:
27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at
org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:
31)
at
org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:
24)
at
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:
57)
at
org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:
29)
at
org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:
57)
at
org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:
24)
at
com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:
62)
Caused by: java.io.FileNotFoundException: C:\Dokumente%20und
%20Einstellungen\ur\.m2\repository\info\cukes\cucumber-java\1.0.0-
SNAPSHOT\cucumber-java-1.0.0-SNAPSHOT.jar (Das System kann den
angegebenen Pfad nicht finden)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:127)
at java.util.zip.ZipFile.<init>(ZipFile.java:88)
at cucumber.classpath.Classpath.scanJar(Classpath.java:124)
... 20 more
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
aslak hellesoy
2011-08-23 12:53:08 UTC
Permalink
Post by Alan Wostenberg
Aslak,
this is great news.
I just gave it a whirl,
Does this mean you have successfully run mvn install?
Post by Alan Wostenberg
and got up to the point where I try to run a
feature.
Afterwards it's
cucumber.runtime.CucumberException: Failed to scan jar[1]
Caused by: java.io.FileNotFoundException: C:\Dokumente%20und
%20Einstellungen\ur\.m2\repository\info\cukes\cucumber-java\1.0.0-
SNAPSHOT\cucumber-java-1.0.0-SNAPSHOT.jar,
but the file is definitely there.
Sounds like a Java-on-Windows bug that we need to add a workaround for.
Spaces in file names is a common source of bugs on Windows. It would be
great if you could help with a fix.
Post by Alan Wostenberg
I'm launching the test via IntelliJ IDEA 10.5.1 on WinXP, the
repository is a Maven3 repo.
Could you guess what I need to do to get this running?
Start by adding a new test to ClassPathTest that exposes the space-in-path
bug. When you have something that works, commit and send a pull request.
Post by Alan Wostenberg
Out of curiosity, why would Cucumber even need to scan its own .jar
file?
Cucumber-JVM isn't one jar file, but many. Any project will use a subset of
them, depending on the programming language at use. Cucumber-Core scans the
classpath for an implementation of Backend, and expects to find exactly one
(GroovyBackend, JavaBackend, JRubyBackend, ClojureBackend, ScalaBackend
etc). We could have forced users to explicitly tell Cucumber what backend to
use (with a --backend CLI switch, an annotation on your JUnit classes or
maybe a config file or a system property). That would just makes life a
little harder for users, so I decided to make this more intelligent.

The same scanning logic is used to discover Java step definitions and load
feature files from the classpath or filesystem. If there is a bug with
spaces it needs to be fixed. I have created a bug here (up for grabs):
https://github.com/cucumber/cucumber-jvm/issues/17

Aslak

Regards
Post by Alan Wostenberg
-Urs
cucumber.runtime.CucumberException: Failed to scan jar
at cucumber.classpath.Classpath.scanJar(Classpath.java:134)
at cucumber.classpath.Classpath.scan(Classpath.java:54)
at
35)
at
41)
at
98)
at cucumber.runtime.Runtime.<init>(Runtime.java:25)
at cucumber.junit.Cucumber.runtime(Cucumber.java:29)
at cucumber.junit.Cucumber.<init>(Cucumber.java:43)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at
39)
at
27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at
31)
at
24)
at
57)
at
29)
at
57)
at
24)
at
62)
Caused by: java.io.FileNotFoundException: C:\Dokumente%20und
%20Einstellungen\ur\.m2\repository\info\cukes\cucumber-java\1.0.0-
SNAPSHOT\cucumber-java-1.0.0-SNAPSHOT.jar (Das System kann den
angegebenen Pfad nicht finden)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:127)
at java.util.zip.ZipFile.<init>(ZipFile.java:88)
at cucumber.classpath.Classpath.scanJar(Classpath.java:124)
... 20 more
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Urs Reupke
2011-08-23 13:08:19 UTC
Permalink
Hey Aslak,

Does this mean you have successfully run mvn install?

That's what I meant, I have run 'mvn install' successfully and have also
added the dependency to my existing project, exchanged the annotations and
created a test class.

Sounds like a Java-on-Windows bug that we need to add a workaround for.
Post by aslak hellesoy
Spaces in file names is a common source of bugs on Windows. It would be
great if you could help with a fix.
Figured as much. I made some experiments earlier, but unfortunately it's not
as simple as I had hoped.
I'll spend some more time with it later.

Regards
-Urs
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
aslak hellesoy
2011-08-23 23:34:46 UTC
Permalink
Post by aslak hellesoy
Post by aslak hellesoy
Post by aslak hellesoy
On Thu, Aug 18, 2011 at 9:08 PM, Cedric Lamalle
Post by Cedric Lamalle
Hi,
Just a few more words about this transition, there is a plan to put cucumber
artifacts on Maven Central. With this using Cumcumber-JVM in a maven project
will be as simple as adding a dependency in the pom...
I've been a little away ultimately, but I'm still working on the
Table
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
implementation. I'm trying to stay as close as possible to the
original
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
specification (spec/cucumber/ast/table_spec.rb).
That's awesome Cedric. Let's take the time to discuss what we
like/dislike from Cucumber Ruby's (crb) table diffing so we can make
it even better.
Crb's diff attempts to do a diff of rows as well as columns. In
practice I have never found a need for column diffing, so I'm open for
removing that if it simplifies the implementation.
Another thing Crb's diff does is to require the presence of a header
row. This row is used to reorder columns in case we're comparing with
a table of hashes. This is a little too clever as well, and I'd like
* No header row required (and now reordering of columns before diffing)
* No column diffing
I agree with this. The headers were useful to be sure to compare the
same
Post by aslak hellesoy
column even if it wasn't in the same position.
Correct. Let me give you the background. At some point I realised that
ActiveRecord could be viewed as an array of Hashes - [{},{}]
You can use this to create a bunch of records with
MyRecord.create!(table.hashes), and that was why I added the #hashes method.
MyRecord.find(...).map(&:attributes)
This led me to implement diff so that you could pass a [{},{}] to diff
against. This required a top header so that the [{},{}] could be turned into
[[],[], []], using the keys as headers, and sorting them according to the
original table.
This was a bad decision on my part. It complicates the diff implementation
considerably, and for a bad reason. It would be much better to have an
external method, say SomeUtil.to_array([{},{}], :foo, :bar, :zap) to turn
this into an array of arrays.
Post by aslak hellesoy
| name | email | phone |
| name | email | phone |
| name | email | phone |
|
|
|
|
|
Something like that. One important detail is that the header row would not
be required. Also, when two rows are different I don't think we have to look
| name | email | phone |
I have implemented the table diffing as we discussed it above. I still
need to get rid of the header when calling rows(). I didn't find a way to
know if a table as header, so I think I'll add a rows() method with a
boolean parameter 'hasHeader', if this boolean is true rows() will skip the
first line (it's an header), else it will return all rows (transformed).
I'll have to merge master to make integration easier.
Awesome job Cédric!

I have merged the code to master and pushed. I simplified it a little to
take advantage of some small changes I made in a new Gherkin release:
https://github.com/cucumber/gherkin/compare/v2.4.14...v2.4.15#diff-8

I think it is important to be able to diff two tables without having a
header row. I'm not sure I see the value in diffing rows with converted
objects - I think diffing on the String level would be sufficient.

Diffing with converted objects could in theory be useful for something like
this:

List<Person> people = ...;
Table actual = new Table(people);
table.diff(actual)

However, I don't think that will be a common use case. You might as well do:

List<Person> people = ...;
Table peopleTable = toTable(people, table.getLocale()); // This could be a
static utility method that uses reflection to create List<List<String>>
internally.
table.diff(actual)

Most uses of table diffing I have seen compares data from a web page, where
everything is strings anyway, extracted from Selenium's DOM.

Unless I'm missing why diffing on converted objects is important I think we
should consider simplifying the diffing logic to work only on strings. What
do you think?

I love the code that turns rows into a list of beans! It would if it could
also set public fields (without getters or setters) as well as invoking
constructors (using the same argument order as the table), but that's
something we can add later.

Aslak
Cheers,
Cédric.
Post by aslak hellesoy
WDYT?
Aslak
Post by aslak hellesoy
Post by aslak hellesoy
Does anyone see any problems with this?
Post by Cedric Lamalle
I hope to have more time in
order to finish it until next week. This part is a little bigger than
I
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
initially thought, but I'm not afraid!! For the diff part I've found
an
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
LCS
implementation based on Myers Algorithm for java[1], I'll see if the results
are different in this case from the Hunt–McIlroy algorithm used in
Ruby
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Cucumber.
If you don't have any luck with Myers, it should be fairly easy to
port the code from
https://github.com/halostatue/diff-lcs/blob/master/lib/diff/lcs.rb
http://introcs.cs.princeton.edu/java/96optimization/ - haven't studied
it, so I don't know if it's the same algo (Hunt–McIlroy)
From the tests I've done Myers' algorithm in java-diff-utils works well.
Cedric.
Post by aslak hellesoy
Aslak
Post by Cedric Lamalle
Bye,
Cédric.
[1] http://code.google.com/p/java-diff-utils/ (Apache Software
License
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
v2)
Post by aslak hellesoy
TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.
When Cucumber (the original ruby implementation) become somewhat
mature a couple of years ago I was thinking: Cucumber can run on
JRuby
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
as well, and with some glue code it should be possible to write Step
Definitions in various JVM languages such as Java, Groovy, Scala,
Clojure etc. So Cuke4Duke was born.
It has worked well for some, less well for others. Since day 1 it
has
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
1) Hard to install. Cuke4Duke is based on JRuby, the Cucumber gem
and
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
the Gherkin gem. Installing these in a Java environment is hard.
2) Slow. Every time you want to run a feature you have to wait for
JRuby to boot.
3) Hard to use. Maven makes it a little easier perhaps, but Maven
comes with its own warts.
4) Unstable. Consider the blocks that build up Cuke4Duke: JVM,
JRuby,
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
RubyGems, Cucumber gem, Gherkin gem, Maven. For the sake of
simplicity, let's assume that each of those exists in 4 versions.
That
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
means some 15.000 different combinations people might have on their
machines. And then there is Windows/Linux/OS X differences on top of
that.
5) Hard to test. Given the number of different permutations this
speaks for itself.
6) Hard to package and release. A hodge podge of Maven and Rake,
plus
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
dealing with all of the dependencies.
The problems have been getting worse lately, and it's time to retire
the project because of its inherent flaws. As of today I will no
longer maintain Cuke4Duke. Instead I'll spend my time working on a
better replacement.
As some of you may know, I have been working on a pure JVM
implementation of Cucumber for a while. It incorporates the good
parts
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
of Cuke4Duke, but not the bad ones (I hope). I think it's good
enough
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import
statements
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or other
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby
There are no docs yet, that will come later. I'm looking for people
who have some small to medium sized Cuke4Duke projects who would
like
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
to try switching over. This will expose what the missing features
are,
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
what needs to be documented etc.
Cucumber-JVM is currently not released anywhere, so you'll have to
build it yourself: https://github.com/cucumber/cucumber-jvm
For those who try - don't expect everything to work. I do need your
help testing it out to make it stabilise faster and get the features
it needs. I'll be here answering any questions you might have. I'm
*very* excited about this project! And we need contributors! Show
the
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
Ruby community that the Java/Groovy/Clojure/Scala people can
contribute to open source too!
Cheers,
Aslak
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google
Groups
Post by aslak hellesoy
Post by aslak hellesoy
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google
Groups
Post by aslak hellesoy
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Cedric Lamalle
2011-08-24 03:04:06 UTC
Permalink
Post by aslak hellesoy
On Sun, Aug 21, 2011 at 2:10 PM, Cedric Lamalle <
Post by aslak hellesoy
Post by aslak hellesoy
On Thu, Aug 18, 2011 at 9:08 PM, Cedric Lamalle
Post by Cedric Lamalle
Hi,
Just a few more words about this transition, there is a plan to put cucumber
artifacts on Maven Central. With this using Cumcumber-JVM in a maven project
will be as simple as adding a dependency in the pom...
I've been a little away ultimately, but I'm still working on the
Table
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
implementation. I'm trying to stay as close as possible to the
original
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
specification (spec/cucumber/ast/table_spec.rb).
That's awesome Cedric. Let's take the time to discuss what we
like/dislike from Cucumber Ruby's (crb) table diffing so we can make
it even better.
Crb's diff attempts to do a diff of rows as well as columns. In
practice I have never found a need for column diffing, so I'm open for
removing that if it simplifies the implementation.
Another thing Crb's diff does is to require the presence of a header
row. This row is used to reorder columns in case we're comparing with
a table of hashes. This is a little too clever as well, and I'd like
* No header row required (and now reordering of columns before
diffing)
Post by aslak hellesoy
Post by aslak hellesoy
* No column diffing
I agree with this. The headers were useful to be sure to compare the
same
Post by aslak hellesoy
column even if it wasn't in the same position.
Correct. Let me give you the background. At some point I realised that
ActiveRecord could be viewed as an array of Hashes - [{},{}]
You can use this to create a bunch of records with
MyRecord.create!(table.hashes), and that was why I added the #hashes method.
MyRecord.find(...).map(&:attributes)
This led me to implement diff so that you could pass a [{},{}] to diff
against. This required a top header so that the [{},{}] could be turned into
[[],[], []], using the keys as headers, and sorting them according to the
original table.
This was a bad decision on my part. It complicates the diff
implementation considerably, and for a bad reason. It would be much better
to have an external method, say SomeUtil.to_array([{},{}], :foo, :bar, :zap)
to turn this into an array of arrays.
Post by aslak hellesoy
| name | email | phone |
| name | email | phone |
| name | email | phone
|
|
|
|
|
|
Something like that. One important detail is that the header row would
not be required. Also, when two rows are different I don't think we have to
| name | email | phone |
I have implemented the table diffing as we discussed it above. I still
need to get rid of the header when calling rows(). I didn't find a way to
know if a table as header, so I think I'll add a rows() method with a
boolean parameter 'hasHeader', if this boolean is true rows() will skip the
first line (it's an header), else it will return all rows (transformed).
I'll have to merge master to make integration easier.
Awesome job Cédric!
I have merged the code to master and pushed. I simplified it a little to
https://github.com/cucumber/gherkin/compare/v2.4.14...v2.4.15#diff-8
I think it is important to be able to diff two tables without having a
header row. I'm not sure I see the value in diffing rows with converted
objects - I think diffing on the String level would be sufficient.
Diffing table without headers is the next item on my list.
Diffing with converted objects could in theory be useful for something like
Post by aslak hellesoy
List<Person> people = ...;
Table actual = new Table(people);
table.diff(actual)
List<Person> people = ...;
Table peopleTable = toTable(people, table.getLocale()); // This could be
a static utility method that uses reflection to create List<List<String>>
internally.
table.diff(actual)
Most uses of table diffing I have seen compares data from a web page, where
everything is strings anyway, extracted from Selenium's DOM.
Unless I'm missing why diffing on converted objects is important I think we
should consider simplifying the diffing logic to work only on strings. What
do you think?
The idea was, as you stated above, to be able to compare with an expected
list of object. That way it will be possible to format the resulting diff,
instead of an assertEquals(expectedList, actualList) which doesn't show
where are the differences. Maybe this won't be as useful as I thought.
Post by aslak hellesoy
I love the code that turns rows into a list of beans! It would if it could
also set public fields (without getters or setters) as well as invoking
constructors (using the same argument order as the table), but that's
something we can add later.
Glad to know you like this part. I've seen your comment about passing list
of beans and created a feature request:
https://github.com/cucumber/cucumber-jvm/issues/19. This will be very handy.

Cédric.
Post by aslak hellesoy
Aslak
Cheers,
Cédric.
WDYT?
Aslak
Post by aslak hellesoy
Post by aslak hellesoy
Does anyone see any problems with this?
Post by Cedric Lamalle
I hope to have more time in
order to finish it until next week. This part is a little bigger
than I
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
initially thought, but I'm not afraid!! For the diff part I've found
an
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
LCS
implementation based on Myers Algorithm for java[1], I'll see if the results
are different in this case from the Hunt–McIlroy algorithm used in
Ruby
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Cucumber.
If you don't have any luck with Myers, it should be fairly easy to
port the code from
https://github.com/halostatue/diff-lcs/blob/master/lib/diff/lcs.rb
http://introcs.cs.princeton.edu/java/96optimization/ - haven't
studied
Post by aslak hellesoy
Post by aslak hellesoy
it, so I don't know if it's the same algo (Hunt–McIlroy)
From the tests I've done Myers' algorithm in java-diff-utils works
well.
Post by aslak hellesoy
Cedric.
Post by aslak hellesoy
Aslak
Post by Cedric Lamalle
Bye,
Cédric.
[1] http://code.google.com/p/java-diff-utils/ (Apache Software
License
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
v2)
Post by aslak hellesoy
TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.
When Cucumber (the original ruby implementation) become somewhat
mature a couple of years ago I was thinking: Cucumber can run on
JRuby
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
as well, and with some glue code it should be possible to write
Step
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
Definitions in various JVM languages such as Java, Groovy, Scala,
Clojure etc. So Cuke4Duke was born.
It has worked well for some, less well for others. Since day 1 it
has
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
1) Hard to install. Cuke4Duke is based on JRuby, the Cucumber gem
and
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
the Gherkin gem. Installing these in a Java environment is hard.
2) Slow. Every time you want to run a feature you have to wait for
JRuby to boot.
3) Hard to use. Maven makes it a little easier perhaps, but Maven
comes with its own warts.
4) Unstable. Consider the blocks that build up Cuke4Duke: JVM,
JRuby,
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
RubyGems, Cucumber gem, Gherkin gem, Maven. For the sake of
simplicity, let's assume that each of those exists in 4 versions.
That
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
means some 15.000 different combinations people might have on their
machines. And then there is Windows/Linux/OS X differences on top
of
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
that.
5) Hard to test. Given the number of different permutations this
speaks for itself.
6) Hard to package and release. A hodge podge of Maven and Rake,
plus
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
dealing with all of the dependencies.
The problems have been getting worse lately, and it's time to
retire
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
the project because of its inherent flaws. As of today I will no
longer maintain Cuke4Duke. Instead I'll spend my time working on a
better replacement.
As some of you may know, I have been working on a pure JVM
implementation of Cucumber for a while. It incorporates the good
parts
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
of Cuke4Duke, but not the bad ones (I hope). I think it's good
enough
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import
statements
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or
other
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby
There are no docs yet, that will come later. I'm looking for people
who have some small to medium sized Cuke4Duke projects who would
like
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
to try switching over. This will expose what the missing features
are,
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
what needs to be documented etc.
Cucumber-JVM is currently not released anywhere, so you'll have to
build it yourself: https://github.com/cucumber/cucumber-jvm
For those who try - don't expect everything to work. I do need your
help testing it out to make it stabilise faster and get the
features
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
it needs. I'll be here answering any questions you might have. I'm
*very* excited about this project! And we need contributors! Show
the
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
Ruby community that the Java/Groovy/Clojure/Scala people can
contribute to open source too!
Cheers,
Aslak
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google
Groups
Post by aslak hellesoy
Post by aslak hellesoy
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google
Groups
Post by aslak hellesoy
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
aslak hellesoy
2011-08-24 07:37:55 UTC
Permalink
Post by Cedric Lamalle
Post by aslak hellesoy
On Sun, Aug 21, 2011 at 2:10 PM, Cedric Lamalle <
Post by aslak hellesoy
Post by aslak hellesoy
On Thu, Aug 18, 2011 at 9:08 PM, Cedric Lamalle
Post by Cedric Lamalle
Hi,
Just a few more words about this transition, there is a plan to put
cucumber
artifacts on Maven Central. With this using Cumcumber-JVM in a
maven
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
project
will be as simple as adding a dependency in the pom...
I've been a little away ultimately, but I'm still working on the
Table
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
implementation. I'm trying to stay as close as possible to the
original
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
specification (spec/cucumber/ast/table_spec.rb).
That's awesome Cedric. Let's take the time to discuss what we
like/dislike from Cucumber Ruby's (crb) table diffing so we can make
it even better.
Crb's diff attempts to do a diff of rows as well as columns. In
practice I have never found a need for column diffing, so I'm open
for
Post by aslak hellesoy
Post by aslak hellesoy
removing that if it simplifies the implementation.
Another thing Crb's diff does is to require the presence of a header
row. This row is used to reorder columns in case we're comparing with
a table of hashes. This is a little too clever as well, and I'd like
* No header row required (and now reordering of columns before
diffing)
Post by aslak hellesoy
Post by aslak hellesoy
* No column diffing
I agree with this. The headers were useful to be sure to compare the
same
Post by aslak hellesoy
column even if it wasn't in the same position.
Correct. Let me give you the background. At some point I realised that
ActiveRecord could be viewed as an array of Hashes - [{},{}]
You can use this to create a bunch of records with
MyRecord.create!(table.hashes), and that was why I added the #hashes method.
Likewise, you can do a query to turn a bunch of AR objects into [{},{}]
: MyRecord.find(...).map(&:attributes)
This led me to implement diff so that you could pass a [{},{}] to diff
against. This required a top header so that the [{},{}] could be turned into
[[],[], []], using the keys as headers, and sorting them according to the
original table.
This was a bad decision on my part. It complicates the diff
implementation considerably, and for a bad reason. It would be much better
to have an external method, say SomeUtil.to_array([{},{}], :foo, :bar, :zap)
to turn this into an array of arrays.
Post by aslak hellesoy
| name | email | phone |
| name | email | phone |
| name | email | phone
|
|
|
|
|
|
Something like that. One important detail is that the header row would
not be required. Also, when two rows are different I don't think we have to
| name | email | phone |
I have implemented the table diffing as we discussed it above. I still
need to get rid of the header when calling rows(). I didn't find a way to
know if a table as header, so I think I'll add a rows() method with a
boolean parameter 'hasHeader', if this boolean is true rows() will skip the
first line (it's an header), else it will return all rows (transformed).
I'll have to merge master to make integration easier.
Awesome job Cédric!
I have merged the code to master and pushed. I simplified it a little to
https://github.com/cucumber/gherkin/compare/v2.4.14...v2.4.15#diff-8
I think it is important to be able to diff two tables without having a
header row. I'm not sure I see the value in diffing rows with converted
objects - I think diffing on the String level would be sufficient.
Diffing table without headers is the next item on my list.
Do you mean support both with and without headers? -Or always ignore
headers. (I hope the latter). IMO headers should only be used for bean
conversion - not for diffing.
Post by Cedric Lamalle
Diffing with converted objects could in theory be useful for something like
Post by aslak hellesoy
List<Person> people = ...;
Table actual = new Table(people);
table.diff(actual)
List<Person> people = ...;
Table peopleTable = toTable(people, table.getLocale()); // This could be
a static utility method that uses reflection to create List<List<String>>
internally.
table.diff(actual)
Most uses of table diffing I have seen compares data from a web page,
where everything is strings anyway, extracted from Selenium's DOM.
Unless I'm missing why diffing on converted objects is important I think
we should consider simplifying the diffing logic to work only on
strings. What do you think?
The idea was, as you stated above, to be able to compare with an expected
list of object. That way it will be possible to format the resulting diff,
instead of an assertEquals(expectedList, actualList) which doesn't show
where are the differences. Maybe this won't be as useful as I thought.
Gherkin's Pretty formatter knows how to do this now:

https://github.com/cucumber/cucumber-jvm/commit/e03380be3b2a2a58f78f983b4f46056383334ee9#L10R46

We can tweak it a little so that the diff is a String that is part of the
DiffException. That way it would show up when using JUnit (no pretty
formatter) too.
Post by Cedric Lamalle
Post by aslak hellesoy
I love the code that turns rows into a list of beans! It would if it could
also set public fields (without getters or setters) as well as invoking
constructors (using the same argument order as the table), but that's
something we can add later.
Glad to know you like this part. I've seen your comment about passing list
https://github.com/cucumber/cucumber-jvm/issues/19. This will be very handy.
Cédric.
Post by aslak hellesoy
Aslak
Cheers,
Cédric.
WDYT?
Aslak
Post by aslak hellesoy
Post by aslak hellesoy
Does anyone see any problems with this?
Post by Cedric Lamalle
I hope to have more time in
order to finish it until next week. This part is a little bigger
than I
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
initially thought, but I'm not afraid!! For the diff part I've
found an
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
LCS
implementation based on Myers Algorithm for java[1], I'll see if
the
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
results
are different in this case from the Hunt–McIlroy algorithm used in
Ruby
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Cucumber.
If you don't have any luck with Myers, it should be fairly easy to
port the code from
https://github.com/halostatue/diff-lcs/blob/master/lib/diff/lcs.rb
http://introcs.cs.princeton.edu/java/96optimization/ - haven't
studied
Post by aslak hellesoy
Post by aslak hellesoy
it, so I don't know if it's the same algo (Hunt–McIlroy)
From the tests I've done Myers' algorithm in java-diff-utils works
well.
Post by aslak hellesoy
Cedric.
Post by aslak hellesoy
Aslak
Post by Cedric Lamalle
Bye,
Cédric.
[1] http://code.google.com/p/java-diff-utils/ (Apache Software
License
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
v2)
Post by aslak hellesoy
TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.
When Cucumber (the original ruby implementation) become somewhat
mature a couple of years ago I was thinking: Cucumber can run on
JRuby
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
as well, and with some glue code it should be possible to write
Step
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
Definitions in various JVM languages such as Java, Groovy, Scala,
Clojure etc. So Cuke4Duke was born.
It has worked well for some, less well for others. Since day 1 it
has
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
1) Hard to install. Cuke4Duke is based on JRuby, the Cucumber gem
and
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
the Gherkin gem. Installing these in a Java environment is hard.
2) Slow. Every time you want to run a feature you have to wait for
JRuby to boot.
3) Hard to use. Maven makes it a little easier perhaps, but Maven
comes with its own warts.
4) Unstable. Consider the blocks that build up Cuke4Duke: JVM,
JRuby,
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
RubyGems, Cucumber gem, Gherkin gem, Maven. For the sake of
simplicity, let's assume that each of those exists in 4 versions.
That
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
means some 15.000 different combinations people might have on
their
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
machines. And then there is Windows/Linux/OS X differences on top
of
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
that.
5) Hard to test. Given the number of different permutations this
speaks for itself.
6) Hard to package and release. A hodge podge of Maven and Rake,
plus
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
dealing with all of the dependencies.
The problems have been getting worse lately, and it's time to
retire
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
the project because of its inherent flaws. As of today I will no
longer maintain Cuke4Duke. Instead I'll spend my time working on a
better replacement.
As some of you may know, I have been working on a pure JVM
implementation of Cucumber for a while. It incorporates the good
parts
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
of Cuke4Duke, but not the bad ones (I hope). I think it's good
enough
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import
statements
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or
other
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby
There are no docs yet, that will come later. I'm looking for
people
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
who have some small to medium sized Cuke4Duke projects who would
like
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
to try switching over. This will expose what the missing features
are,
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
what needs to be documented etc.
Cucumber-JVM is currently not released anywhere, so you'll have to
build it yourself: https://github.com/cucumber/cucumber-jvm
For those who try - don't expect everything to work. I do need
your
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
help testing it out to make it stabilise faster and get the
features
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
it needs. I'll be here answering any questions you might have. I'm
*very* excited about this project! And we need contributors! Show
the
Post by aslak hellesoy
Post by aslak hellesoy
Post by Cedric Lamalle
Post by aslak hellesoy
Ruby community that the Java/Groovy/Clojure/Scala people can
contribute to open source too!
Cheers,
Aslak
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google
Groups
Post by aslak hellesoy
Post by aslak hellesoy
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google
Groups
Post by aslak hellesoy
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
John Lonergan
2011-08-18 21:44:28 UTC
Permalink
Hi did a clean install of cuke jvm but got some errors ...

looksUpInstantiableSubclassesOnClassPath(cucumber.runtime.ClasspathTest)
looksUpFilesByDir(cucumber.runtime.ClasspathTest)
looksUpFilesByFile(cucumber.runtime.ClasspathTest)
Post by aslak hellesoy
TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.
When Cucumber (the original ruby implementation) become somewhat
mature a couple of years ago I was thinking: Cucumber can run on JRuby
as well, and with some glue code it should be possible to write Step
Definitions in various JVM languages such as Java, Groovy, Scala,
Clojure etc. So Cuke4Duke was born.
It has worked well for some, less well for others. Since day 1 it has
1) Hard to install. Cuke4Duke is based on JRuby, the Cucumber gem and
the Gherkin gem. Installing these in a Java environment is hard.
2) Slow. Every time you want to run a feature you have to wait for
JRuby to boot.
3) Hard to use. Maven makes it a little easier perhaps, but Maven
comes with its own warts.
4) Unstable. Consider the blocks that build up Cuke4Duke: JVM, JRuby,
RubyGems, Cucumber gem, Gherkin gem, Maven. For the sake of
simplicity, let's assume that each of those exists in 4 versions. That
means some 15.000 different combinations people might have on their
machines. And then there is Windows/Linux/OS X differences on top of
that.
5) Hard to test. Given the number of different permutations this
speaks for itself.
6) Hard to package and release. A hodge podge of Maven and Rake, plus
dealing with all of the dependencies.
The problems have been getting worse lately, and it's time to retire
the project because of its inherent flaws. As of today I will no
longer maintain Cuke4Duke. Instead I'll spend my time working on a
better replacement.
As some of you may know, I have been working on a pure JVM
implementation of Cucumber for a while. It incorporates the good parts
of Cuke4Duke, but not the bad ones (I hope). I think it's good enough
* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import statements
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or other
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby
There are no docs yet, that will come later. I'm looking for people
who have some small to medium sized Cuke4Duke projects who would like
to try switching over. This will expose what the missing features are,
what needs to be documented etc.
Cucumber-JVM is currently not released anywhere, so you'll have to
build it yourself: https://github.com/cucumber/cucumber-jvm
For those who try - don't expect everything to work. I do need your
help testing it out to make it stabilise faster and get the features
it needs. I'll be here answering any questions you might have. I'm
*very* excited about this project! And we need contributors! Show the
Ruby community that the Java/Groovy/Clojure/Scala people can
contribute to open source too!
Cheers,
Aslak
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Aslak Hellesøy
2011-08-18 23:45:09 UTC
Permalink
On Aug 18, 2011, at 22:44, John Lonergan <john.lonergan-***@public.gmane.org> wrote:

Hi did a clean install of cuke jvm but got some errors ...

looksUpInstantiableSubclassesOnClassPath(cucumber.runtime.ClasspathTest)
looksUpFilesByDir(cucumber.runtime.ClasspathTest)
looksUpFilesByFile(cucumber.runtime.ClasspathTest)



What:

Stack trace?
OS?
Java version?

Aslak
Post by aslak hellesoy
TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.
When Cucumber (the original ruby implementation) become somewhat
mature a couple of years ago I was thinking: Cucumber can run on JRuby
as well, and with some glue code it should be possible to write Step
Definitions in various JVM languages such as Java, Groovy, Scala,
Clojure etc. So Cuke4Duke was born.
It has worked well for some, less well for others. Since day 1 it has
1) Hard to install. Cuke4Duke is based on JRuby, the Cucumber gem and
the Gherkin gem. Installing these in a Java environment is hard.
2) Slow. Every time you want to run a feature you have to wait for
JRuby to boot.
3) Hard to use. Maven makes it a little easier perhaps, but Maven
comes with its own warts.
4) Unstable. Consider the blocks that build up Cuke4Duke: JVM, JRuby,
RubyGems, Cucumber gem, Gherkin gem, Maven. For the sake of
simplicity, let's assume that each of those exists in 4 versions. That
means some 15.000 different combinations people might have on their
machines. And then there is Windows/Linux/OS X differences on top of
that.
5) Hard to test. Given the number of different permutations this
speaks for itself.
6) Hard to package and release. A hodge podge of Maven and Rake, plus
dealing with all of the dependencies.
The problems have been getting worse lately, and it's time to retire
the project because of its inherent flaws. As of today I will no
longer maintain Cuke4Duke. Instead I'll spend my time working on a
better replacement.
As some of you may know, I have been working on a pure JVM
implementation of Cucumber for a while. It incorporates the good parts
of Cuke4Duke, but not the bad ones (I hope). I think it's good enough
* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import statements
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or other
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby
There are no docs yet, that will come later. I'm looking for people
who have some small to medium sized Cuke4Duke projects who would like
to try switching over. This will expose what the missing features are,
what needs to be documented etc.
Cucumber-JVM is currently not released anywhere, so you'll have to
build it yourself: https://github.com/cucumber/cucumber-jvm
For those who try - don't expect everything to work. I do need your
help testing it out to make it stabilise faster and get the features
it needs. I'll be here answering any questions you might have. I'm
*very* excited about this project! And we need contributors! Show the
Ruby community that the Java/Groovy/Clojure/Scala people can
contribute to open source too!
Cheers,
Aslak
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to
cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.

<TEST-cucumber.runtime.ClasspathTest.xml>
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
a***@public.gmane.org
2011-08-19 00:53:39 UTC
Permalink
Aslak,
I will start using cucumber jvm.I tried building it last week, but I was getting many errors. Could have been pbkc errors, I admit as this is my third week with java/maven.
Can I use a fit style table structure with cucumber jvm...is there a capybara equivalent.
Arti
Sent from my BlackBerry device on the Rogers Wireless Network

-----Original Message-----
From: aslak hellesoy <aslak.hellesoy-***@public.gmane.org>
Sender: cukes-/***@public.gmane.org
Date: Thu, 18 Aug 2011 16:01:24
To: Cucumber Users<cukes-/***@public.gmane.org>
Reply-To: cukes-/***@public.gmane.org
Subject: [Cucumber:8727] Transitioning from Cuke4Duke to Cucumber-JVM

TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.

When Cucumber (the original ruby implementation) become somewhat
mature a couple of years ago I was thinking: Cucumber can run on JRuby
as well, and with some glue code it should be possible to write Step
Definitions in various JVM languages such as Java, Groovy, Scala,
Clojure etc. So Cuke4Duke was born.

It has worked well for some, less well for others. Since day 1 it has
had several inherent problems:

1) Hard to install. Cuke4Duke is based on JRuby, the Cucumber gem and
the Gherkin gem. Installing these in a Java environment is hard.
2) Slow. Every time you want to run a feature you have to wait for
JRuby to boot.
3) Hard to use. Maven makes it a little easier perhaps, but Maven
comes with its own warts.
4) Unstable. Consider the blocks that build up Cuke4Duke: JVM, JRuby,
RubyGems, Cucumber gem, Gherkin gem, Maven. For the sake of
simplicity, let's assume that each of those exists in 4 versions. That
means some 15.000 different combinations people might have on their
machines. And then there is Windows/Linux/OS X differences on top of
that.
5) Hard to test. Given the number of different permutations this
speaks for itself.
6) Hard to package and release. A hodge podge of Maven and Rake, plus
dealing with all of the dependencies.

The problems have been getting worse lately, and it's time to retire
the project because of its inherent flaws. As of today I will no
longer maintain Cuke4Duke. Instead I'll spend my time working on a
better replacement.

As some of you may know, I have been working on a pure JVM
implementation of Cucumber for a while. It incorporates the good parts
of Cuke4Duke, but not the bad ones (I hope). I think it's good enough
that some people can start playing with it. Here is where it's at:

* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import statements
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or other
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby

There are no docs yet, that will come later. I'm looking for people
who have some small to medium sized Cuke4Duke projects who would like
to try switching over. This will expose what the missing features are,
what needs to be documented etc.

Cucumber-JVM is currently not released anywhere, so you'll have to
build it yourself: https://github.com/cucumber/cucumber-jvm

For those who try - don't expect everything to work. I do need your
help testing it out to make it stabilise faster and get the features
it needs. I'll be here answering any questions you might have. I'm
*very* excited about this project! And we need contributors! Show the
Ruby community that the Java/Groovy/Clojure/Scala people can
contribute to open source too!

Cheers,
Aslak
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
aslak hellesoy
2011-08-19 09:35:26 UTC
Permalink
Post by Alan Wostenberg
Aslak,
     I will start using cucumber jvm.I tried building it last week, but I was getting many errors.
We can only fix errors if we know what they are.
Post by Alan Wostenberg
Could have been pbkc errors, I admit as this is my third week with java/maven.
Can I use a fit style table structure with cucumber jvm...
Yes, featuers are still written in Gherkin - that won't change.
Post by Alan Wostenberg
is there a capybara equivalent.
Yes - Selenium
Post by Alan Wostenberg
Arti
Sent from my BlackBerry device on the Rogers Wireless Network
-----Original Message-----
Date: Thu, 18 Aug 2011 16:01:24
Subject: [Cucumber:8727] Transitioning from Cuke4Duke to Cucumber-JVM
TL;DR: Cuke4Duke is dead. Viva Cucumber-JVM.
When Cucumber (the original ruby implementation) become somewhat
mature a couple of years ago I was thinking: Cucumber can run on JRuby
as well, and with some glue code it should be possible to write Step
Definitions in various JVM languages such as Java, Groovy, Scala,
Clojure etc. So Cuke4Duke was born.
It has worked well for some, less well for others. Since day 1 it has
1) Hard to install. Cuke4Duke is based on JRuby, the Cucumber gem and
the Gherkin gem. Installing these in a Java environment is hard.
2) Slow. Every time you want to run a feature you have to wait for
JRuby to boot.
3) Hard to use. Maven makes it a little easier perhaps, but Maven
comes with its own warts.
4) Unstable. Consider the blocks that build up Cuke4Duke: JVM, JRuby,
RubyGems, Cucumber gem, Gherkin gem, Maven. For the sake of
simplicity, let's assume that each of those exists in 4 versions. That
means some 15.000 different combinations people might have on their
machines. And then there is Windows/Linux/OS X differences on top of
that.
5) Hard to test. Given the number of different permutations this
speaks for itself.
6) Hard to package and release. A hodge podge of Maven and Rake, plus
dealing with all of the dependencies.
The problems have been getting worse lately, and it's time to retire
the project because of its inherent flaws. As of today I will no
longer maintain Cuke4Duke. Instead I'll spend my time working on a
better replacement.
As some of you may know, I have been working on a pure JVM
implementation of Cucumber for a while. It incorporates the good parts
of Cuke4Duke, but not the bad ones (I hope). I think it's good enough
* Mostly API compatible with Cuke4Duke
* Gherkin features can remain unchanged
* Step Definitions and Hooks will have to change some import statements
* The Java implementation is tested better than the other JVM
languages like Groovy etc, but they are there too.
* Scala has no support yet, will add that later.
* You can run features with JUnit
* A (JUnit-free) CLI is in progress (handy for e.g. Clojure or other
languages that don't use JUnit)
* It will be a lot faster
* Not a single line of Ruby and no JRuby
There are no docs yet, that will come later. I'm looking for people
who have some small to medium sized Cuke4Duke projects who would like
to try switching over. This will expose what the missing features are,
what needs to be documented etc.
Cucumber-JVM is currently not released anywhere, so you'll have to
build it yourself: https://github.com/cucumber/cucumber-jvm
For those who try - don't expect everything to work. I do need your
help testing it out to make it stabilise faster and get the features
it needs. I'll be here answering any questions you might have. I'm
*very* excited about this project! And we need contributors! Show the
Ruby community that the Java/Groovy/Clojure/Scala people can
contribute to open source too!
Cheers,
Aslak
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Bill Ross
2011-08-21 19:43:34 UTC
Permalink
Post by Cedric Lamalle
| name | email | phone |
Does anyone see any problems with this?
Parsing longer cell diffs might call for an eye-friendly cell-by-cell
format option. A stab at this:

| name
| email
| phone |
(~)| Aslak
| (-)aslak-***@public.gmane.org_alternate_that_wraps_80_chars_by_dint_of_corporate_necessity.com
(+)aslak-***@public.gmane.org
| 123 |

Bill
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Christian Gleissner
2011-11-10 17:55:13 UTC
Permalink
Cucumber-JVM's JUnit integration breaks when run in parallel mode using
Maven 3, JUnit 4.10 and Surefire 2.10. In our set-up, we are using the
parallel=classes and 4 threads. When the Cucumber JUnit runner starts, it
discovers that there are no step definitions for feature files. This only
occurs when running in parallel. The sequential run is fine.

Looking at the Cucumber runner, I noticed the following static fields:

public class Cucumber extends Suite {

private static final Runtime runtime = new Runtime();

private static JUnitReporter jUnitReporter;

I started patching this class by turning the above fields into thread-local
fields, but that didn't yet resolve the issue. Are there any plans to get
Cucumber-JVM to work in a concurrent test scenario?
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To view this discussion on the web visit https://groups.google.com/d/msg/cukes/-/aoQqL1sOrRIJ.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
aslak hellesoy
2011-11-10 18:23:57 UTC
Permalink
On Thu, Nov 10, 2011 at 5:55 PM, Christian Gleissner
Post by Christian Gleissner
Cucumber-JVM's JUnit integration breaks when run in parallel mode using
Maven 3, JUnit 4.10 and Surefire 2.10.  In our set-up, we are using the
parallel=classes and 4 threads. When the Cucumber JUnit runner starts, it
discovers that there are no step definitions for feature files. This only
occurs when running in parallel. The sequential run is fine.
public class Cucumber extends Suite {
    private static final Runtime runtime = new Runtime();
    private static JUnitReporter jUnitReporter;
I started patching this class by turning the above fields into thread-local
fields, but that didn't yet resolve the issue. Are there any plans to get
Cucumber-JVM to work in a concurrent test scenario?
There are currently no plans, but it would obviously be great if it
worked. I have created an issue for this:
https://github.com/cucumber/cucumber-jvm/issues/86

I'm currently focussed on Milestone-1:
https://github.com/cucumber/cucumber-jvm/issues?milestone=1&state=open

Aslak
Post by Christian Gleissner
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/cukes/-/aoQqL1sOrRIJ.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+***@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
Christian Gleissner
2011-11-10 18:39:37 UTC
Permalink
Hi Aslak,

thanks for your reply.

I created a little test project which can be used to demonstrate and
resolve this issue. One can enable a parallel test by activating a Maven
profile on this project.

Would you like me to attach a ZIP of this Maven 3 project to the issue you
created?

Thanks
Christian
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To view this discussion on the web visit https://groups.google.com/d/msg/cukes/-/yTFYxVeB1A4J.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
aslak hellesoy
2011-11-10 18:48:28 UTC
Permalink
On Thu, Nov 10, 2011 at 6:39 PM, Christian Gleissner
Post by Christian Gleissner
Hi Aslak,
thanks for your reply.
I created a little test project which can be used to demonstrate and resolve
this issue. One can enable a parallel test by activating a Maven profile on
this project.
Would you like me to attach a ZIP of this Maven 3 project to the issue you
created?
It would be better if you could fork cucumber-jvm, clone it, create a
branch called parallel and add it under examples. Then push to your
fork. Zip files are too hard to deal with. Having it all in git is
better. In case you're new to git:

* press the fork button
* git clone ..your fork url..
* cd cucumber-jvm
* git checkout -b parallel
* Put your code under examples
* git add .
* git commit -m "Example to demonstrate parallel is broken"
* git push

Aslak
Post by Christian Gleissner
Thanks
Christian
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/cukes/-/yTFYxVeB1A4J.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
--
You received this message because you are subscribed to the Google Groups "Cukes" group.
To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
To unsubscribe from this group, send email to cukes+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org
For more options, visit this group at http://groups.google.com/group/cukes?hl=en.
biswajit panda
2012-05-09 12:58:42 UTC
Permalink
Is Cucumber - JVM fully developed now???If yes then plz provide some
documentations and will it support TestNG?

Thnx in Advance
Post by aslak hellesoy
On Thu, Nov 10, 2011 at 6:39 PM, Christian Gleissner
Post by Christian Gleissner
Hi Aslak,
thanks for your reply.
I created a little test project which can be used to demonstrate and
resolve
Post by Christian Gleissner
this issue. One can enable a parallel test by activating a Maven profile
on
Post by Christian Gleissner
this project.
Would you like me to attach a ZIP of this Maven 3 project to the issue
you
Post by Christian Gleissner
created?
It would be better if you could fork cucumber-jvm, clone it, create a
branch called parallel and add it under examples. Then push to your
fork. Zip files are too hard to deal with. Having it all in git is
* press the fork button
* git clone ..your fork url..
* cd cucumber-jvm
* git checkout -b parallel
* Put your code under examples
* git add .
* git commit -m "Example to demonstrate parallel is broken"
* git push
Aslak
Post by Christian Gleissner
Thanks
Christian
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/cukes/-/yTFYxVeB1A4J.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
-- There are two rules:

1) Please prefix the subject with [Ruby], [JVM] or [JS]. This allows people to filter messages.
2) Please use interleaved answers http://en.wikipedia.org/wiki/Posting_style#Interleaved_style

You received this message because you are subscribed to the Google Groups Cukes group. To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org To unsubscribe from this group, send email to cukes+***@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/cukes?hl=en
Thomas Sundberg
2012-05-09 14:15:48 UTC
Permalink
Post by biswajit panda
Is Cucumber - JVM fully developed now???If yes then plz provide some
documentations and will it support TestNG?
Cucumber-jvm is released. Documentation will be available when it is
done. Cucumber is an open source project and as all open source
projects, it depends on people developing it on their spare time. I
assume that support for TestNG is available if you use the command
line runner.

There are examples available at Github, https://github.com/cucumber/cucumber-jvm

Happy Cuking!
Thomas
Post by biswajit panda
Thnx in Advance
Post by aslak hellesoy
On Thu, Nov 10, 2011 at 6:39 PM, Christian Gleissner
Post by Christian Gleissner
Hi Aslak,
thanks for your reply.
I created a little test project which can be used to demonstrate and resolve
this issue. One can enable a parallel test by activating a Maven profile on
this project.
Would you like me to attach a ZIP of this Maven 3 project to the issue you
created?
It would be better if you could fork cucumber-jvm, clone it, create a
branch called parallel and add it under examples. Then push to your
fork. Zip files are too hard to deal with. Having it all in git is
* press the fork button
* git clone ..your fork url..
* cd cucumber-jvm
* git checkout -b parallel
* Put your code under examples
* git add .
* git commit -m "Example to demonstrate parallel is broken"
* git push
Aslak
Post by Christian Gleissner
Thanks
Christian
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/cukes/-/yTFYxVeB1A4J.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
1) Please prefix the subject with [Ruby], [JVM] or [JS]. This allows people
to filter messages.
2) Please use interleaved answers
http://en.wikipedia.org/wiki/Posting_style#Interleaved_style
You received this message because you are subscribed to the Google Groups
unsubscribe from this group, send email to
https://groups.google.com/d/forum/cukes?hl=en
--
Thomas Sundberg
M. Sc. in Computer Science

Mobile: +46 70 767 33 15
Blog: http://thomassundberg.wordpress.com/
Twitter: @thomassundberg

Better software through faster feedback

-- There are two rules:

1) Please prefix the subject with [Ruby], [JVM] or [JS]. This allows people to filter messages.
2) Please use interleaved answers http://en.wikipedia.org/wiki/Posting_style#Interleaved_style

You received this message because you are subscribed to the Google Groups Cukes group. To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org To unsubscribe from this group, send email to cukes+***@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/cukes?hl=en
biswajit panda
2012-05-10 05:31:01 UTC
Permalink
thanx
Post by Thomas Sundberg
Post by biswajit panda
Is Cucumber - JVM fully developed now???If yes then plz provide some
documentations and will it support TestNG?
Cucumber-jvm is released. Documentation will be available when it is
done. Cucumber is an open source project and as all open source
projects, it depends on people developing it on their spare time. I
assume that support for TestNG is available if you use the command
line runner.
There are examples available at Github,
https://github.com/cucumber/cucumber-jvm
Happy Cuking!
Thomas
Post by biswajit panda
Thnx in Advance
Post by aslak hellesoy
On Thu, Nov 10, 2011 at 6:39 PM, Christian Gleissner
Post by Christian Gleissner
Hi Aslak,
thanks for your reply.
I created a little test project which can be used to demonstrate and resolve
this issue. One can enable a parallel test by activating a Maven
profile
Post by biswajit panda
Post by aslak hellesoy
Post by Christian Gleissner
on
this project.
Would you like me to attach a ZIP of this Maven 3 project to the
issue
Post by biswajit panda
Post by aslak hellesoy
Post by Christian Gleissner
you
created?
It would be better if you could fork cucumber-jvm, clone it, create a
branch called parallel and add it under examples. Then push to your
fork. Zip files are too hard to deal with. Having it all in git is
* press the fork button
* git clone ..your fork url..
* cd cucumber-jvm
* git checkout -b parallel
* Put your code under examples
* git add .
* git commit -m "Example to demonstrate parallel is broken"
* git push
Aslak
Post by Christian Gleissner
Thanks
Christian
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/cukes/-/yTFYxVeB1A4J.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
1) Please prefix the subject with [Ruby], [JVM] or [JS]. This allows
people
Post by biswajit panda
to filter messages.
2) Please use interleaved answers
http://en.wikipedia.org/wiki/Posting_style#Interleaved_style
You received this message because you are subscribed to the Google
Groups
To
Post by biswajit panda
unsubscribe from this group, send email to
at
Post by biswajit panda
https://groups.google.com/d/forum/cukes?hl=en
--
Thomas Sundberg
M. Sc. in Computer Science
Mobile: +46 70 767 33 15
Blog: http://thomassundberg.wordpress.com/
Better software through faster feedback
-- There are two rules:

1) Please prefix the subject with [Ruby], [JVM] or [JS]. This allows people to filter messages.
2) Please use interleaved answers http://en.wikipedia.org/wiki/Posting_style#Interleaved_style

You received this message because you are subscribed to the Google Groups Cukes group. To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org To unsubscribe from this group, send email to cukes+***@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/cukes?hl=en
biswajit panda
2012-05-10 05:42:25 UTC
Permalink
How to set up cucumber-jvm in eclipse in order to run it from the IDE ?
Please guide me through this.

Thanx in advance
Post by aslak hellesoy
On Thu, Nov 10, 2011 at 6:39 PM, Christian Gleissner
Post by Christian Gleissner
Hi Aslak,
thanks for your reply.
I created a little test project which can be used to demonstrate and
resolve
Post by Christian Gleissner
this issue. One can enable a parallel test by activating a Maven profile
on
Post by Christian Gleissner
this project.
Would you like me to attach a ZIP of this Maven 3 project to the issue
you
Post by Christian Gleissner
created?
It would be better if you could fork cucumber-jvm, clone it, create a
branch called parallel and add it under examples. Then push to your
fork. Zip files are too hard to deal with. Having it all in git is
* press the fork button
* git clone ..your fork url..
* cd cucumber-jvm
* git checkout -b parallel
* Put your code under examples
* git add .
* git commit -m "Example to demonstrate parallel is broken"
* git push
Aslak
Post by Christian Gleissner
Thanks
Christian
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/cukes/-/yTFYxVeB1A4J.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
-- There are two rules:

1) Please prefix the subject with [Ruby], [JVM] or [JS]. This allows people to filter messages.
2) Please use interleaved answers http://en.wikipedia.org/wiki/Posting_style#Interleaved_style

You received this message because you are subscribed to the Google Groups Cukes group. To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org To unsubscribe from this group, send email to cukes+***@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/cukes?hl=en
Richard Paul
2012-05-10 09:25:05 UTC
Permalink
Biswajit,

Have a look at the example projects,
specifically https://github.com/cucumber/cucumber-jvm/blob/master/examples/java-calculator/
You can annotate a basic java class to tie the Cucumber features into a
JUnit runner in Eclipse:
https://github.com/cucumber/cucumber-jvm/blob/master/examples/java-calculator/src/test/java/cucumber/examples/java/calculator/RunCukesTest.java

Hope that helps,
Richard
Post by biswajit panda
How to set up cucumber-jvm in eclipse in order to run it from the IDE ?
Please guide me through this.
Thanx in advance
Post by aslak hellesoy
On Thu, Nov 10, 2011 at 6:39 PM, Christian Gleissner
Post by Christian Gleissner
Hi Aslak,
thanks for your reply.
I created a little test project which can be used to demonstrate and
resolve
Post by Christian Gleissner
this issue. One can enable a parallel test by activating a Maven
profile on
Post by Christian Gleissner
this project.
Would you like me to attach a ZIP of this Maven 3 project to the issue
you
Post by Christian Gleissner
created?
It would be better if you could fork cucumber-jvm, clone it, create a
branch called parallel and add it under examples. Then push to your
fork. Zip files are too hard to deal with. Having it all in git is
* press the fork button
* git clone ..your fork url..
* cd cucumber-jvm
* git checkout -b parallel
* Put your code under examples
* git add .
* git commit -m "Example to demonstrate parallel is broken"
* git push
Aslak
Post by Christian Gleissner
Thanks
Christian
--
You received this message because you are subscribed to the Google
Groups
Post by Christian Gleissner
"Cukes" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/cukes/-/yTFYxVeB1A4J.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
-- There are two rules:

1) Please prefix the subject with [Ruby], [JVM] or [JS]. This allows people to filter messages.
2) Please use interleaved answers http://en.wikipedia.org/wiki/Posting_style#Interleaved_style

You received this message because you are subscribed to the Google Groups Cukes group. To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org To unsubscribe from this group, send email to cukes+***@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/cukes?hl=en
biswajit panda
2012-05-10 10:56:45 UTC
Permalink
thnx very much
Post by Richard Paul
Biswajit,
Have a look at the example projects, specifically
https://github.com/cucumber/cucumber-jvm/blob/master/examples/java-calculator/
You can annotate a basic java class to tie the Cucumber features into a
https://github.com/cucumber/cucumber-jvm/blob/master/examples/java-calculator/src/test/java/cucumber/examples/java/calculator/RunCukesTest.java
Hope that helps,
Richard
Post by biswajit panda
How to set up cucumber-jvm in eclipse in order to run it from the IDE ?
Please guide me through this.
Thanx in advance
Post by aslak hellesoy
On Thu, Nov 10, 2011 at 6:39 PM, Christian Gleissner
Post by Christian Gleissner
Hi Aslak,
thanks for your reply.
I created a little test project which can be used to demonstrate and
resolve
Post by Christian Gleissner
this issue. One can enable a parallel test by activating a Maven
profile on
Post by Christian Gleissner
this project.
Would you like me to attach a ZIP of this Maven 3 project to the issue
you
Post by Christian Gleissner
created?
It would be better if you could fork cucumber-jvm, clone it, create a
branch called parallel and add it under examples. Then push to your
fork. Zip files are too hard to deal with. Having it all in git is
* press the fork button
* git clone ..your fork url..
* cd cucumber-jvm
* git checkout -b parallel
* Put your code under examples
* git add .
* git commit -m "Example to demonstrate parallel is broken"
* git push
Aslak
Post by Christian Gleissner
Thanks
Christian
--
You received this message because you are subscribed to the Google
Groups
Post by Christian Gleissner
"Cukes" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/cukes/-/yTFYxVeB1A4J.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
-- There are two rules:

1) Please prefix the subject with [Ruby], [JVM] or [JS]. This allows people to filter messages.
2) Please use interleaved answers http://en.wikipedia.org/wiki/Posting_style#Interleaved_style

You received this message because you are subscribed to the Google Groups Cukes group. To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org To unsubscribe from this group, send email to cukes+***@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/cukes?hl=en
biswajit panda
2012-05-16 15:57:10 UTC
Permalink
How TestNG can be used in Cucumber JVM.Please help me wit this.
Post by aslak hellesoy
On Thu, Nov 10, 2011 at 6:39 PM, Christian Gleissner
Post by Christian Gleissner
Hi Aslak,
thanks for your reply.
I created a little test project which can be used to demonstrate and
resolve
Post by Christian Gleissner
this issue. One can enable a parallel test by activating a Maven profile
on
Post by Christian Gleissner
this project.
Would you like me to attach a ZIP of this Maven 3 project to the issue
you
Post by Christian Gleissner
created?
It would be better if you could fork cucumber-jvm, clone it, create a
branch called parallel and add it under examples. Then push to your
fork. Zip files are too hard to deal with. Having it all in git is
* press the fork button
* git clone ..your fork url..
* cd cucumber-jvm
* git checkout -b parallel
* Put your code under examples
* git add .
* git commit -m "Example to demonstrate parallel is broken"
* git push
Aslak
Post by Christian Gleissner
Thanks
Christian
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/cukes/-/yTFYxVeB1A4J.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
-- There are two rules:

1) Please prefix the subject with [Ruby], [JVM] or [JS]. This allows people to filter messages.
2) Please use interleaved answers http://en.wikipedia.org/wiki/Posting_style#Interleaved_style

You received this message because you are subscribed to the Google Groups Cukes group. To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org To unsubscribe from this group, send email to cukes+***@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/cukes?hl=en
biswajit panda
2012-05-10 10:57:35 UTC
Permalink
Do you know how to use cucumber in testNG??
Post by aslak hellesoy
On Thu, Nov 10, 2011 at 5:55 PM, Christian Gleissner
Post by Christian Gleissner
Cucumber-JVM's JUnit integration breaks when run in parallel mode using
Maven 3, JUnit 4.10 and Surefire 2.10. In our set-up, we are using the
parallel=classes and 4 threads. When the Cucumber JUnit runner starts, it
discovers that there are no step definitions for feature files. This only
occurs when running in parallel. The sequential run is fine.
public class Cucumber extends Suite {
private static final Runtime runtime = new Runtime();
private static JUnitReporter jUnitReporter;
I started patching this class by turning the above fields into
thread-local
Post by Christian Gleissner
fields, but that didn't yet resolve the issue. Are there any plans to get
Cucumber-JVM to work in a concurrent test scenario?
There are currently no plans, but it would obviously be great if it
https://github.com/cucumber/cucumber-jvm/issues/86
https://github.com/cucumber/cucumber-jvm/issues?milestone=1&state=open
Aslak
Post by Christian Gleissner
--
You received this message because you are subscribed to the Google Groups
"Cukes" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/cukes/-/aoQqL1sOrRIJ.
To unsubscribe from this group, send email to
For more options, visit this group at
http://groups.google.com/group/cukes?hl=en.
-- There are two rules:

1) Please prefix the subject with [Ruby], [JVM] or [JS]. This allows people to filter messages.
2) Please use interleaved answers http://en.wikipedia.org/wiki/Posting_style#Interleaved_style

You received this message because you are subscribed to the Google Groups Cukes group. To post to this group, send email to cukes-/JYPxA39Uh5TLH3MbocFF+G/***@public.gmane.org To unsubscribe from this group, send email to cukes+***@googlegroups.com. For more options, visit this group at https://groups.google.com/d/forum/cukes?hl=en
Loading...