Cucumber's table diffing does not play nice with Spreewald's `patiently do`

Updated . Posted . Visible to the public.

Turns out, Cucumber::MultilineArgument::DataTable#diff! caches some stuff. Code of the following form will not work as intended:

Then('some table should look like') do |expected_table|
  patiently do
    actual_table = calculate_actual_table
    expected_table.diff!(actual_table) # not actually patient, will keep failing if it failed the first time
  end
end

Instead, simply use

expected_table.dup.diff!(actual_table)
Profile picture of Tobias Kraze
Tobias Kraze
Last edit
Michael Leimstädtner
Keywords
dup, diff
License
Source code in this card is licensed under the MIT License.
Posted by Tobias Kraze to makandra dev (2020-04-15 14:59)