cucumber / cucumber-cpp

Support for writing Cucumber step definitions in C++
MIT License
304 stars 131 forks source link

Getting rid of ruby dependency #290

Closed AnarchoSystems closed 5 months ago

AnarchoSystems commented 7 months ago

Hello!

Thanks for getting rid of the boost dependency, that simplified things a lot.

Is there any plan to also get rid of cucumber ruby and use a gherkin parser instead?

A gherkin parser library for cpp can be found, e.g., here:

https://github.com/cucumber/gherkin

(in the cpp folder)

ursfassler commented 7 months ago

Hi, and thanks for the feedback :relaxed:.

There is no plan to go to a C++ only solution. I personally don't know what it would mean, but from the experience from others it takes quite some effort to maintain the whole thing. It is an ongoing discussion if the already existing different implementation (Ruby, Java, ...) can be merged back to reduce maintenance.

The idea is to test and maybe improve the interface between cucumber-cpp and cucumber-ruby, see #284.

What is the motivation for the question? I.e. is there a problem you face with the current solution or a simplification if it is C++ only?

AnarchoSystems commented 7 months ago

Motivation: I'm working with cucumber-ruby 2.0 because I'm facing difficulties installing any later versions on the old CentOS versions we still maintain. I am facing instabilities on the ruby side that are somewhat inexplicable and very non-deterministic. Something about "no method [] for nil class" that randomly pops up. I hoped a C++ only solution might at least give me more clarity what is going wrong (if it's anything in my code).

ursfassler commented 7 months ago

Is this the same problem as #226? The error message is slightly different but sounds close. If it is the same it hints to an C++ exception in an BEFORE or AFTER hook.

I fear that we break compatibility with such old cucumber-ruby version once we have to implement changes for #284. Maybe there is a way for you to update the distribution, run cucumber-ruby in a docker container or on a different machine?

AnarchoSystems commented 7 months ago

I've definitely seen this type of error when there were problems in BEFORE, so yes. But I don't understand how my code isn't deterministic.

Ok, I'll have to try to work around the issue then. Maybe using a c++ gherkin parser is more of a long term nice to have.

luke-hill commented 6 months ago

Hi @AnarchoSystems

Yes we know that previously c++ was tied to cucumber 2.0

It "should" in theory be possible to use the latest cucumber. This is because the wire plugin (Sort of the intermediary between cpp and ruby), is now updated and should be fully conformant.

There is a ticket here: https://github.com/cucumber/cucumber-cpp/issues/284 that should see us use the latest version of wire (And accordingly ruby).

This would be considered by me as fairly high priority, if this isn't working

ursfassler commented 5 months ago

Closing it because we will keep the setup with Cucumber -> cucumber-cpp. Will work instead on the conformance of this interaction, i.e. #284.