2008/8/4 Ovid <[EMAIL PROTECTED]>:
> There's a nasty bug in the latest development version of Test::Differences.
> By applying a patch which allows this to pass (it currently won't):
>
> eq_or_diff { foo => 1 }, { foo => '1' };
>
> It also allows this to pass:
>
> eq_or_diff [ { foo => 1 } ], { foo => '1' };
>
> Ow, ow, ow. This is terrible. Fortunately, that's what development versions
> are for.
>
> I'm thinking about rewriting Test::Differences to use &Test::More::is_deeply
> for the test and only diff if there are differences. Currently it uses
> Data::Dumper or its own internal flattening and and compares the string
> outputs.
>
> There are two side-effects I can think of. First, the string/numeric value
> comparison will work correctly. Second, the 'Array of HashRef' diff output
> will change dramatically. There's an internal hack which assumes and an AoH
> is a table (likely pulled from DBI, I assume), and this:
>
> eq_or_diff [ { name => 'Bob', id => 1 } ],
> [ { name => 'Bob', id => 2 } ], 'aoh';
>
> Generates this:
>
> # Failed test 'aoh'
> # at eq_or_diff.t line 13.
> # +----+---------+----------+
> # | Elt|Got |Expected |
> # +----+---------+----------+
> # | 0|id,name |id,name |
> # * 1|1,Bob |2,Bob *
> # +----+---------+----------+
>
> I find this mcch harder to read, but others may appreciate the hash keys
> being pulled out as headers.
>
> Does anyone object to me breaking this? Are there any problems that I
> haven't thought of? (There usually are)
perl -MTest::More=no_plan -e 'is_deeply({}, bless({}, "foo"))'
ok 1
1..1
I'm not familiar with Test::Differences but if it considers blessed
part of equality then using is_deeply will lose that.
Also even for "good" changes, changing the meaning of equality for a
widely used testing tool could cause a lot of problems,
F
> Cheers,
> Ovid
> --
> Buy the book - http://www.oreilly.com/catalog/perlhks/
> Tech blog - http://use.perl.org/~Ovid/journal/
> Twitter - http://twitter.com/OvidPerl
> Official Perl 6 Wiki - http://www.perlfoundation.org/perl6
>