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 >