Code Monkey home page Code Monkey logo

Comments (7)

enkessler avatar enkessler commented on September 18, 2024

These are the direct dependency versions in my environment:

I'm not sure how you're running the tests, in that case, because those dependencies are not compatible with each other. If you drop gem 'cucumber-gherkin', "26.0.3" and gem 'cucumber', "8.0.0" into your gemfile, Bundler won't even get past installation because cucumber does not currently support any version of cucumber-gherkin past 23.x.

I was puzzled about the 'cucumber', 2.2.0' specification in the Gemfile, so I've patched it to be >= 2.2.0 and tried running the default rake target, and to my surprises it runs fine

The usage of 2.2.0 is conditional. It depends on which version of cucumber-gherkin you want to use when running the tests.

gherkin_major_version_used = 26

Will CukeModeler run with any version of Cucumber? Yes. Will Cucumber run with any version of Gherkin? No. Cucumber 2.2.0 is special because it uses a version of Gherkin that doesn't use the Gherkin namespace, thus allowing it to not conflict with the namespace of whatever version of cucumber-gherkin is being tested.

from cuke_modeler.

Apteryks avatar Apteryks commented on September 18, 2024

Hello! Thanks for the clarifications. I think I'm able to use cucumber 8 with gherkin 26 because I must have tweaked the gemspec files a bit to allow that, and generally do not use Bundler (as the Gemfiles often include extraneous dependencies that'd need to be patched out and the environment is already managed by Guix). I try running the test suites where practicable, so I have at least some confidence that the components fit together. I wonder why cucumber can't use the latest gherkin.

from cuke_modeler.

enkessler avatar enkessler commented on September 18, 2024

I wonder why cucumber can't use the latest gherkin.

It's less an issue of "can't" and more an issue of "won't".

cucumber/cucumber-ruby#1688

Keeping the cucumber-gherkin dependency up to date may be so trivial as to be able to be done by a bot but that does not mean that the maintainers are inclined to make a new release when those updates happen. Additionally, they have a habit of skipping dependency versions. So, rather than the next release going from being compatible with Gherkin 23.x to being compatible with 23.x-26.x, they may decide to just lock it to only 26.x, leaving anyone who needs 24.x or 25.x out in the cold.

from cuke_modeler.

Apteryks avatar Apteryks commented on September 18, 2024

OK. I see the referenced PR has been merged so cucumber 8 can use gherking 26 as long as it's < 26.0.3, and as of 4 days ago they've bumped it again to < 26.1.1. They could probably use the compatible operator instead, something like ~>26.0, which seems to me like would be less tedious and create less friction. I've asked here if it's something they could consider: cucumber/cucumber-ruby#1701.

from cuke_modeler.

luke-hill avatar luke-hill commented on September 18, 2024

The reason we keep cucumber gherkin so tightly pinned was debated a while back and answered. The long and the short of it is they should be thought of as package private for the inter-dependency to cucumber. People who use gherkin elsewhere can pin their own dependency rules (Such as for spinach).

from cuke_modeler.

Apteryks avatar Apteryks commented on September 18, 2024

@luke-hill Thanks for taking the time answer the question! The problem I'd see with this is when using e.g. spinach and cucumber in the same project; they might disagree on the version of gherkin to use, which would be less likely with a 'compatible' specification, but I guess this was discussed already.

from cuke_modeler.

enkessler avatar enkessler commented on September 18, 2024

... I guess this was discussed already.

@Apteryks There was a rather lengthy discussion on the topic, yes. With some of the same people involved and the same conclusion reached, even.

from cuke_modeler.

Related Issues (7)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.