Skip to content

Latest commit

 

History

History
667 lines (533 loc) · 47.1 KB

CHANGELOG.md

File metadata and controls

667 lines (533 loc) · 47.1 KB

Changelog

All notable changes to this project will be documented in this file.

This project adheres to Semantic Versioning.

This document is formatted according to the principles of Keep A CHANGELOG.

26.0.1 - 2022-12-17

Fixed

  • [Go] Fix module names

26.0.0 - 2022-12-17

Added

  • [Java] Enabled reproducible builds

Changed

  • Upgraded messages to v21
  • [.NET] Update target frameworks fo .NET 6, .NET Framework 4.6.2, .NET Standard 2.0

Fixed

  • Link to the correct repository in various package meta-data.
  • [Perl] Specify version range for Cucumber::Messages dependency (#50)

25.0.2 - 2022-11-09

Fixed

  • Fix half-glyph in Georgian translations (#44)

25.0.1 - 2022-11-09

Fixed

  • Fix release process for perl and elixir

25.0.0 - 2022-11-09

Added

  • Additional ja (Japanese) translations for and, but
  • Added amh (Amharic) translation
  • Add Фича and Шаблон примера as more convenient translations (#2078)

Changed

  • ja (Japanese) Rule translation changed from Rule to ルール

Deprecated

Fixed

  • Translations fixed for ka (Georgian) locale

Removed

24.1.0 - 2022-10-10

Added

  • [Java] Added support for reading directly from input (files, streams, paths, ect)
  • [C] The C implementation re-enabled and made up to date. (#1989)

Fixed

  • [Javascript] Include tags from rules in scenario outlines (#2091)
  • [Python] Fix gherkin-python for compiling example values with trailing backslash (#2048, #1954)
  • [PHP] Disallow installation of Messages 18.x (#2034)

24.0.0 - 2022-05-31

Added

  • [Java], [JavaScript], [PHP], [Perl], [Python], [Go], [C], [DotNet], [Ruby] Support new messages keyword types fields an added with #1966 (#1741)

Changed

  • [Java] the GherkinDialect constructor is no longer public (it's only used internally)
  • [Go] the gherkin.GherkinDialectsBuildin id renamed to gherkin.DialectsBuiltin
  • [Go] the gherkin.GherkinDialect id renamed to gherkin.Dialect
  • [Go] the gherkin.GherkinDialectProvider id renamed to gherkin.DialectProvider
  • The ne (Nepali) and translation changed from अनी to अनि
  • The uz (Uzbek) given translation changed from Агар to Belgilangan
  • The en-old (Old English) when translation changed from Tha / Þa / Ða to Bæþsealf / Bæþsealfa / Bæþsealfe / Ciricæw / Ciricæwe / Ciricæwa

Fixed

  • [Java] remove shaded dependency on com.eclipsesource.minimal-json:minimal-json (#1957 #1959)

23.0.1 - 2022-03-31

Fixed

  • [PhP] Fix dependency of messages (#1943)

23.0.0 - 2022-03-30

Changed

  • Update messages to v18.0.0
  • [Java] Replaced Gherkin with a GherkinParser that uses a builder to construct.
  • [Java] Made all internal classes package private
  • [Java] Removed unused stopAtFirstError property from Parser
  • [PHP] Implemented Gherkin
  • [JavaScript] @cucumber/message-streams has been removed from the dependencies. If you are using @cucumber/gherkin-streams v5.0.0 or later, you have to add @cucumber/message-streams in your dependencies in addition to @cucumber/gherkin.

Removed

  • [Java] the io.cucumber.gherkin.Main class is no longer part of the jar.

22.0.0 - 2021-09-23

Added

Changed

  • [Perl] Changed API to pass around Cucumber::Messages instead of hashesand increased minimum Perl version in accordance with Cucumber::Messages(to 5.14; from 5.12) (#1735ehuelsmann)

Fixed

  • [Perl] Failure to include CHANGELOG.md in the release tarball (#1728 ehuelsmann)

21.0.0 - 2021-09-01

Added

  • [JavaScript] Expose Errors object.

Changed

Fixed

Removed

20.0.1 - 2021-07-19

Changed

  • Update messages to v17.0.1

20.0.0 - 2021-07-08

Changed

  • Update messages to v17.0.0
  • Update rule polish translation (#1579 l310)
  • Add US Texan translations. (#1625 willmac321)
  • [Go] Move module paths to point to monorepo (#1550)
  • [Ruby] Usage of Message DTOs instead of plain ruby hashes (#1603)

Fixed

  • [Ruby] Rules weren't inheriting the relevant tags during the Gherkin Query stage (Where it caches the NodeID) (#1593 luke-hill)
  • MDG parser correctly removes leading space from content in DocStrings

19.0.3 - 2021-05-24

Fixed

  • MDG files must use the .feature.md extension.
  • Data Tables and Examples Tables in Markdown must be indented 2-5 spaces in order tobe recognised.

19.0.2 - 2021-05-19

Fixed

  • Upgrade to @cucumber/message-streams ^2.0.0
  • Upgrade berp to 1.3.0 (parser behavior not changed) (#1542 gasparnagy)

19.0.1 - 2021-05-17

Fixed

19.0.0 - 2021-05-15

Added

Changed

  • [DotNet] Replaced Utf8Json with source-embedded TinyJson. (#511 gasparnagy)
  • Update Dutch translation of the "Rule" keyword. (#1513 OrhanTozan)
  • Update Russian translation of the "Scenario Outline" keyword. (#1499 hkosova)
  • Update Hungarian translation of the "Rule" keyword. (#1518 gasparnagy)
  • [Go, Java, JavaScript, Ruby] Upgrade to messages 16.0.0: this may have a big impact on APIs.Please see messages/CHANGELOG.md for more details.

Fixed

Removed

  • [Elixir] The package was not released - it needs to be updated to pass acceptance tests.
  • [Perl] The package was not released - it needs to be updated to pass acceptance tests.

18.1.1 - 2021-04-22

Fixed

  • [python] Run gherkin as a module. (#1480 #1475 [brasmusson] [aurelien-reeves])

18.1.0 - 2021-04-06

Added

  • Python implementation re-enabled, with support for Rule keyword. (#1449 brasmusson)

Fixed

18.0.0 - 2021-03-24

Added

  • [Perl] New APIs to spawn message streams: Gherkin->from_paths and Gherkin->from_source (#1359 ehuelsmann)
  • [All] Rules can be tagged. Scenarios that belong to the rule "inherit" the rule tags. (#1356 [sebrose], gasparnagy, brasmusson, WannesFransen1994)
  • [Perl] DOS line endings support on all platforms (not just DOS/Windows) (ehuelsmann)

Changed

  • [Perl] Release engineering changes to make it non-interactive, update CHANGELOG.md correctly (#1350) ehuelsmann

Removed

  • [JavaScript] the GherkinStreams export has moved from @cucumber/gherkin to @cucumber/gherkin-streams
  • [JavaScript] the gherkin-javascript executable has moved to the new @cucumber/gherkin-streams npm module

17.0.2 - 2021-02-16

Fixed

  • [Perl] Release archive too large (8MB -> ) (#1350) ehuelsmann
  • [Perl] Minimum Perl version (5.10.1) incorrectly declared, leading to CPANTESTERS failures (#1350) ehuelsmann
  • [Perl] Kwalitee (Perl release quality checker) complaints/errors (#1350) ehuelsmann

17.0.1 - 2021-02-08

Fixed

17.0.0 - 2021-02-07

Changed

  • [JavaScript] the GherkinStreams object is not longer loaded by default. This makes it possible to use the library in a browser without a polyfill. To upgrade, use import GherkinStreams from '@cucumber/gherkin/dist/src/stream/GherkinStreams' instead of import { GherkinStreams } from 'gherkin'. (#1333)
  • [Perl] Fully overhauled implementation, moving it up from 4.0.0 (#711, #1286) ehuelsmann

Fixed

  • Use Spanish translation for the "Rule" keyword and for the "Feature" synonym keywords (#1360 sergioforerogomez)
  • Use Italian translation for the "Rule" keyword and for the "Feature" synonym keywords (#1318 mgiustiniani)
  • Use Swedish translation for the "Rule" keyword (#1297 johnknoop)
  • Elixir implementation - make sure the gherkin_languages.json is added with the release package. (#1293 WannesFransen1994)
  • [JavaScript] removed circular dependencies. (#1292 davidjgoss)

Removed

  • [JavaScript] remove IGherkinOptions#createReadStream. This function was introduced in 9.1.0 in order to decouple this lib from the Node.js fs library. This decoupling was improved in #1333 which made it obsolete. (Fixes #1284

16.0.0 - 2020-12-10

Added

Changed

  • Telugu now uses the correct 639-1 code - te instead of tl. (#1238 #1221 nvmkpk)

Removed

  • [JavaScript] The Query class has been removed from this library, and has been added to @cucumber/gherkin-utils

15.0.2 - 2020-08-17

Fixed

  • Revert removal of Gherkin keywords from 15.0.1

15.0.1 - 2020-08-12

Changed

  • Do not use this release. The removal of Gherkin keywords breaks backwards compatibility for Creole and French, and this should have been released as a major release. The keywords are restored in 15.0.2, and we'll remove them again in a future major release.

Removed

  • Remove keyword aliases that only differ by letter case (French, Creole). The reason for this is that Cucumber-JVM generates annotation classes for each step keyword, and some file systems are case insensitive. This led to inconsistencies in the classes that were generated during the build. Removing these keywords fixes this problem. Theoretically this should trigger a new major release, but because the change is so minor and will affect very few users we've made this a patch release.

15.0.0 - 2020-08-07

Changed

  • Update messages to 13.0.1

14.2.0 - 2020-07-31

Changed

  • Update messages to 12.4.0

14.1.0 - 2020-07-29

Changed

  • Update messages to 12.3.2

14.0.2 - 2020-06-29

Fixed

  • [JavaScript] Actually merge #1094 - it wasn't done in 14.0.1
  • [JavaScript] Throw NoSuchLanguageException when language is unknown #1102 (#1102 mpkorstanje)

14.0.1 - 2020-06-29

Fixed

14.0.0 - 2020-06-27

Added

  • [Java] Enable consumers to find our version at runtime using clazz.getPackage().getImplementationVersion() by upgrading to cucumber-parent:2.1.0 (#976 aslakhellesoy)
  • [Java/Ruby/Go/Javascript] Add tests to ensure we do not delete whitespace inside a table cell (#769 mpkorstanje)

Changed

  • Upgrade to messages 12.2.0
  • [Ruby] gherkin-query: if a feature file is empty, do not update anything. (cucumber-ruby#1427 vincent-psarga)
  • [JavaScript] Change gherkinQuery API: * getPickleIds: now takes a URI and an astNodeId to find the pickle ids instead of a line number * getPickleStepIds: now takes an astNodeId parameter instead of a URL and a line number to locate the pickle step id * expose parse and parseAndCompile utilities
  • Fixed Estonian translation of "Rule" (#973 ookull)
  • Fixed Estonian translation of "Scenario Outline" (#972 ookull)

Fixed

  • [JavaScript] Update gherkin-languages.json, which hadn't been updated for a few versions (not sure for how long!)
  • [Ruby] Fix the default constructor of Gherkin::Parser (#1074 aslakhellesoy)
  • [Ruby] Use require_relative for internal requires (#1010 deivid-rodriguez)
  • [Javascript] Escape regex characters in table header (#1077 mpkorstanje)

13.0.0 - 2020-04-14

Changed

  • Upgrade to messages 12.0.0

12.0.0 - 2020-03-31

Added

  • [JavaScript] New exports: * Parser * compile (#924 davidjgoss)
  • [JavaScript] Add Query#getPickles()
  • [JavaScript] Export compile function for compiling Pickles

Changed

  • Upgrade to messages 11.x
  • [JavaScript] The default export has been removed. Replaced with: * import { GherkinStreams } from 'gherkin' to use the fromPaths, fromStream and fromSources functions * import { dialects } from 'gherkin' to access dialects
  • [JavaScript] Dialect properties are read only
  • [JavaScript] fromPaths, fromStream and fromSources now use ReadOnlyArray to prevent modifying the passed array.

Fixed

11.0.0 - 2020-03-02

Changed

  • [JavaScript] Renamed GherkinQuery to Query

Fixed

  • Update Indonesian Gherkin Language (#872 [#KniveX])

Removed

  • [JavaScript] Removed StrictMap and StrictArrayMultiMap

10.0.0 - 2020-02-13

Changed

  • Upgrade to messages v10.0.1

Fixed

  • [Java/JavaScript/Go/Ruby] Fix parsing of commented tags (880, 721 mpkorstanje)
  • [JavaScript] Gherkin#fromPaths emits an error if a path can't be read (for example if it is a directory)
  • [Java/JavaScript/Ruby/Go] Escape triple backticks in alternative docstring (#889 mpkorstanje)

9.2.0 - 2020-01-22

Added

  • [JavaScript] Add getGherkinDocuments(): messages.IGherkinDocument[]
  • [JavaScript] Add `getPickleStepIds(uri: string, lineNumber: number): string[]``

Changed

  • [JavaScript] Change signature of getPickleIds(uri: string, lineNumber?: number): string[] - lineNumber is optional
  • [JavaScript] getPickleIds only operates on pickles, and not on pickle steps

9.1.0 - 2020-01-10

Added

Changed

  • Upgrade to messages 9.0.1
  • [JavaScript] the Gherkin#fromStream, Gherkin#fromPaths and Gherkin#fromSources functions' options argument is no longer optional, and it must have a createReadStream property. The reason for this is to decouple the library from Node's fs module so it can be packaged with Webpack and be used in a browser.

9.0.0 - 2019-12-10

Changed

  • Renamed --json command line option to --format protobuf|ndjson
  • Upgrade to cucumber-messages 8.0.0

8.2.1 - 2019-11-22

Fixed

8.2.0 - 2019-11-14

Fixed

8.1.1 - 2019-10-17

Fixed

  • [Ruby] Replace internal ProtobufMessageStream with ProtobufIoEnumerator

8.1.0 - 2019-10-16

Added

Changed

Fixed

Removed

  • [JavaScript] - GherkinExe (after it was fixed)

8.0.0 - 2019-10-03

Added

Changed

  • Upgrade cucumber-messages to 6.0.1
  • [JavaScript] restore native JavaScript parser (#709 #689 badeball)
  • [Ruby] restore native ruby parser (#702 brasmusson)

Fixed

7.0.4 - 2019-08-29

Changed

  • Upgrade to cucumber-messages 5.0.1

7.0.3 - 2019-08-15

Fixed

  • [Ruby] Fix inclusion of gherkin executables

7.0.2 - 2019-08-14

Changed

  • Upgrade to c21e 2.0.0

7.0.1 - 2019-08-14

Fixed

  • The 7.0.0 release failed

7.0.0 - 2019-08-14

Added

  • [TypeScript] dialect support (#597 charlierudolph)
  • Populate the Pickle#id field with a SHA1 hash of the source + line + column.

Fixed

6.0.17 - 2019-03-31

Changed

  • Upgrade to cucumber-messages 2.1.2

6.0.15 - 2018-10-31

Added

  • (Go) Executables are uploaded to GitHub releases.

Fixed

  • Fix bug where leading tabs prevented parser from identifying keywords (#512 [VjacheslavVytjagov])
  • [JavaScript] Fix JavaScript build (#499 noisygerman)

6.0.13 - 2018-09-25

Added

  • (TypeScript) - Added TypeScript definitions (.d.ts) for Gherkin.
  • Added Rule keyword (#250 aslakhellesoy)
  • Added Example as synonym for Scenario in English and many other languages. This is to align Gherkin with BDD and Example Mapping terminology. (aslakhellesoy)
  • Added Ukoliko as an additional synonym for Given, in Croatian. (#480 banovotz)

Changed

  • This major release aligns Gherkin with Example Mapping, a collaborative technique for designing scenarios and discovering details about rules and behaviour. A new Rule keyword has been introduced, and acts as a grouping of one or more Examples - a new synonym for Scenario. The Scenario Outline keyword can now be interchanged with the Scenario keyword, which makes Gherkin a little less confusing, especially to beginners. These are the first major change to the Gherkin grammar in 8 years or so, and we're pretty excited about them. We hope they will guide people towards thinking of scenarios as examples of business rules rather than a series of form submissions and link clicking. This rule-focused style engages product owners, and can act as amazing living documentation of your product. It opens up for the true benefits of BDD - a business-friendly format for describing and agreeing on software behaviour, and a guide to development. Developers will code against this spec, and produce better (simpler) software faster. The software will do what it says on the tin. The new Gherkin grammar is backwards compatible, meaning that existing Gherkin documents are still valid. The library API however is not backwards compatible. It is now a stream-like API which produces a stream of messages (source, AST and pickle messages). Internally, each library shells out to a go executable (embedded in the library for all major OSes and processor architectures), and communicates via STDIN/STDOUT using protocol buffers. The rationale behind this architectural change is to reduce the maintenance burden (a single parser rather than a dozen), but also to make it quicker and easier to implement a Gherkin library in a new language. Just generate some protobuf classes/structs and write a small program that shells out and communicates using those messages. Our preliminary benchmarks suggest that performance is comparable to the native implementations, or better. There is a small hit in startup cost, but this is offset against a higher throughput of the parser. At the time of this writing Gherkin 6 is nearly integrated in Cucumber-JVM and Cucumber-Ruby. Integration with Cucumber.js has not started and we would really welcome some help with that. The message protocol will continue to evolve to represent runtime information such as results, parameter types, cucumber expressions and other metadata. This will make it easier for the community to build plugins for Cucumber. One HTML Gherkin formatter to rule them all. Statistic plugins and more.
  • (JavaScript,Java,Ruby) The native parsers are removed. Parsing is done by gherkin-go executables which are bundled with the published libraries. (aslakhellesoy, [jaysonesmith])
  • (JavaScript,Java,Ruby,Go) Scenario keyword (or Example keyword) can be used to create Scenario Outline. (#353 aslakhellesoy)

Fixed

Removed

5.1.0 - 2018-05-30

Added

  • (.NET) - Better .NET Core support
  • Support for Aragonese (#298 danilat)
  • (C) build a shared libgherkin.so library which allows Gherkin to be used as a library. (Cucumber.ml currently uses this.) (cucumber/gherkin-c#6 cyocum)

Changed

  • Pass the content type of a docstring down into its pickle string form (#292 rjwittams)
  • Fixed Russian equivalents of Given and Then. (#369 cerebellum13)

Fixed

5.0.0 - 2017-10-13

Added

  • Ability to specify an initial language for the parser, so that the # language header isn't required (#288 by charlierudolph and aslakhellesoy)
  • A better wording for the Greek translation of Scenario Outline (Περίγραμμα Σεναρίου) (#185 by pmatsinopoulos)
  • Added female, singular Given in Romanian (Dată fiind) (#202 by tsundberg)
  • (C) CMake support (#2 #3 by Pwera)

Changed

4.1.3 - 2017-05-04

Added

Fixed

4.1.2 - 2017-05-03

Changed

  • Something went wrong during this release - do not use

4.1.1 - 2017-03-16

Added

Fixed

4.1.0 - 2017-03-16

Added

  • (.NET, Java, JavaScript, Ruby, Python) Streaming API and command line client. (#240)
  • (Java): Add accessors for languages and dialect keywords. (#248 by brasmusson)
  • (All): Add the language to the Pickles (#251 by brasmusson)
  • (C): New parser and compiler in C (#187 by brasmusson)
  • (I18n) mk-Cyrl/mk-Latn: Added Macedonian language (#249 by nikolovski)
  • (Build) Automate the version update for the sub-projects (#211 by brasmusson)
  • (Java) Make the jar a bundle to support execution in OSGi containers (#221 by brasmusson)
  • (Java) Using full path when loading gherkin-languages.json (#225 by mauriciotogneri)
  • (I18n) ru: Added word "Затем" as a synonym for when steps (#246 by dobiedad)
  • (I18n) Georgian language (#218 by Pr-Mex)
  • (I18n) nl: Added "Wanneer" as a synonym for when steps (#218 by jmezach)
  • (I18n) ast: Add Asturian translation (#209 by ajspadial)
  • (I18n) az: Add Azerbaijani translation (#218 by nalekberov)
  • (Java) Add a getter for the tags of a pickle by brasmusson)

Changed

Fixed

4.0.0 - 2016-04-10

Added

Changed

  • This is a major release because of two backwards-incompatible changes. First, the AST returned by the parser is a GherkinDocument node, with a feature property pointing to a Feature node. Prior to this release the parser would return a Feature node. Second, the Feature node now has an array/list of children that are Background, Scenario or ScenarioOutline. Other noteworthy changes is several minor improvements to bring the grammar closer to Gherkin 2.
  • (All) Allow emtpy Feature files (#189 by aslakhellesoy, brasmusson, enkessler)
  • (All) Rename Feature.scenarioDefinitions to Feature.children (by aslakhellesoy)
  • (All) Background as part of Feature.children (#174 by aslakhellesoy)
  • (All) Remove scenario keyword from pickles (#176 by charlierudolph)
  • (All) Don't make pickles out of step-less scenarios (#175 by enkessler)
  • (Ruby) More consistent AST node types (#158 by enkessler)
  • (All) Allow incomplete scenario outlines (#160, #170 by brasmusson)

Fixed

  • (Ruby) Use require instead of require_relative (#173 by maximeg)
  • (JavaScript) Fixed undefined reference to stopOnFirstError on ES6 (by aslakhellesoy)
  • (Python) Add the gherkin.pickles package to the Python installation (#157, #156 by Zearin)
  • (Ruby, Java) Make parser work even when system encoding ($LANG) is not UTF-8. (#151 by aslakhellesoy)

Removed

3.2.0 - 2016-01-12

Added

Changed

  • (All) changed package/module/repo name from gherkin3 to gherkin. (Python package is called gherkin-official)
  • (I18n) Improved Malay translation of Gherkin (#132 by gabanz)
  • (I18n) Improved Irish translation of Gherkin (#135 by merrua)
  • (All) Escape only '|', 'n' and '' in table cells (#114 by brasmusson)
  • (I18n) Support stricter French grammar (#134 by moreau-nicolas)
  • (All) the AST's DocString contentType property is not defined rather than an empty string when the Gherkin doc doesn't specify the type after three backticks. (by aslakhellesoy)

Fixed

  • (Python) Fix i18n support when parsing features from strings. (by brasmusson)
  • (All) Do not change escaped docstring separators in descriptions (#115 by brasmusson)
  • (Travis CI) Build Objective-C on Travis. Fix Travis language settings. (#122, #118, by brasmusson)
  • (Python) Don't monkey-patch io.StringIO in token_scanner.py (#121 by zbmott)
  • (JavaScript) Interpolate replaces globally (#108 by charlierudolph)
  • (JavaScript) Make parser work on Node 0.10 and 4.1 (by aslakhellesoy)
  • (Go) Fix lookahead bug in the parser (by brasmusson)

3.1.2 - 2015-10-04

Added

  • (All) TokenMatcher now accepts a default language (previously, only JavaScript had this behavior) (#78 by brasmusson)
  • (Ruby) Parser.parse now accepts a String, StringIO, IO or TokenScanner (#100 by maxmeyer)
  • (JavaScript) Add browserified dist/gherkin.js and dist/gherkin.min.js (by aslakhellesoy)

Changed

  • (Python) Use @properties in Dialect class (#86 by Zearin)
  • (Ruby) Parser.parse now treats String as source (not a file path)

Fixed

3.1.1 - 2015-09-03

Added

  • (All) Add Bosnian (#48 by paigehf)
  • (All) Add support for \n, '|', and '' in table cells (#40, #71, by koterpillar)
  • (JavaScript) Default arguments for Parser(builder) and Parser.parse(scanner, matcher) (by aslakhellesoy)
  • (JavaScript) It's now possible to pass a string directly to Parser.parse()
  • (Python) It's now possible to pass a string directly to Parser.parse() (by aslakhellesoy)

Changed

  • (Java) Improved build process
  • (Python) Use new-style classes (#72 by Zearin)

Fixed

  • (Python) File descriptors are now explicitly closed (#74 by Zearin)

3.1.0 - 2015-08-16

Added

  • (.NET) Release Nuget package (#57, #58)

Changed

  • (Java) Change Maven groupId artifact from info.cukes to io.cucumber

Fixed

  • (All) Multiple calls to parse() cannot use the same instance of AstBuilder (#62)
  • (Python) gherkin-languages.json not packaged (#63)

Removed

  • (JavaScript) Remove tea-error dependency

3.0.0 - 2015-07-16

Changed

  • First release