Bug 12409 - The test t/db_dependent/Record.t fails with Perl 5.18.2
Summary: The test t/db_dependent/Record.t fails with Perl 5.18.2
Status: CLOSED FIXED
Alias: None
Product: Koha
Classification: Unclassified
Component: Test Suite (show other bugs)
Version: Main
Hardware: All All
: P5 - low normal
Assignee: Jonathan Druart
QA Contact: Galen Charlton
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-06-12 08:32 UTC by Yohann Dufour
Modified: 2015-06-04 23:30 UTC (History)
3 users (show)

See Also:
Change sponsored?: ---
Patch complexity: Small patch
Documentation contact:
Documentation submission:
Text to go in the release notes:
Version(s) released in:
Circulation function:


Attachments
Bug 14391: Fix fields order on exporting to bibtex (4.83 KB, patch)
2014-06-12 09:11 UTC, Jonathan Druart
Details | Diff | Splinter Review
[SIGNED-OFF] Bug 12409: Fix fields order on exporting to bibtex (5.35 KB, patch)
2014-06-13 15:47 UTC, Bernardo Gonzalez Kriegel
Details | Diff | Splinter Review
[PASSED QA] Bug 12409: Fix fields order on exporting to bibtex (5.49 KB, patch)
2014-07-06 19:04 UTC, Katrin Fischer
Details | Diff | Splinter Review
Bug 12409: Follow up - Reflect from hash to array in comments (1.08 KB, patch)
2014-07-06 19:05 UTC, Katrin Fischer
Details | Diff | Splinter Review

Note You need to log in before you can comment on or make changes to this bug.
Description Yohann Dufour 2014-06-12 08:32:04 UTC
When I execute the test command : prove t/db_dependent/Record.t , the test fails with the message :

t/db_dependent/Record.t .. 1/11 
#   Failed test 'testing bibtex'
#   at t/db_dependent/Record.t line 107.
#          got: '@book{testID,
# 	author = {Rowling, J.K.},
# 	title = {Harry potter},
# 	year = {2001},
# 	publisher = {Scholastic}
# }
# '
#     expected: '@book{testID,
# 	author = {Rowling, J.K.},
# 	title = {Harry potter},
# 	publisher = {Scholastic},
# 	year = {2001}
# }
# '

#   Failed test 'testing bibtex with RDA 264 field'
#   at t/db_dependent/Record.t line 120.
#          got: '@book{testID,
# 	publisher = {Reprints},
# 	year = {2011},
# 	author = {Rowling, J.K.},
# 	title = {Harry potter}
# }
# '
#     expected: '@book{testID,
# 	author = {Rowling, J.K.},
# 	title = {Harry potter},
# 	publisher = {Reprints},
# 	year = {2011}
# }
# '
# Looks like you failed 2 tests of 11.
t/db_dependent/Record.t .. Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/11 subtests 

Test Summary Report
-------------------
t/db_dependent/Record.t (Wstat: 512 Tests: 11 Failed: 2)
  Failed tests:  9-10
  Non-zero exit status: 2
Files=1, Tests=11,  1 wallclock secs ( 0.03 usr  0.01 sys +  1.33 cusr  0.08 csys =  1.45 CPU)
Result: FAIL


My OS is Ubuntu 14.04 and my perl version is 5.18.2. It seems to be linked with hash key order randomization.
Comment 1 Jonathan Druart 2014-06-12 09:11:03 UTC Comment hidden (obsolete)
Comment 2 Bernardo Gonzalez Kriegel 2014-06-13 15:47:58 UTC Comment hidden (obsolete)
Comment 3 Jonathan Druart 2014-06-18 15:33:55 UTC
(In reply to Bernardo Gonzalez Kriegel from comment #2)
> On array asignment "a => b" is equivalent to "a, b",
> but the former is usually used on hashes, so a
> replacement of '=>' by ',' could clarify what are we storing.

It was deliberate. In my opinion, it is more readable like that.
Comment 4 Jonathan Druart 2014-06-18 15:35:02 UTC
But I really don't matter :)
Comment 5 Katrin Fischer 2014-07-06 19:04:53 UTC
Created attachment 29529 [details] [review]
[PASSED QA] Bug 12409: Fix fields order on exporting to bibtex

The C4::Record::marc2bibtex subroutine supposes hashref keys are sorted
which is wrong with perl 5.18

Note that the t/db_dependent/Record.t fails without this patch.

Test plan (for perl >= 5.18 only):
1/ prove t/db_dependent/Record.t should return green
2/ Try to export a record to bibtex and verify the order is correct
(should be author, title, year, published, etc.).

http://bugs.koha-community.org/show_bug.cgi?id=12409

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>

Wrong Bug number on heading.
Work as described, test pass, no koha-qa errors.

The problem is to think that a hash returns
keys in a particular order, that's not true
and no matter which perl version.

Code as was left is... misleading.
Comments talks about a hash, which is no more.
On array asignment "a => b" is equivalent to "a, b",
but the former is usually used on hashes, so a
replacement of '=>' by ',' could clarify what are we storing.

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Fixing the comments in a follow-up patch.
Tests pass now without problems and records export ok.
Comment 6 Katrin Fischer 2014-07-06 19:05:03 UTC
Created attachment 29530 [details] [review]
Bug 12409: Follow up - Reflect from hash to array in comments
Comment 7 Tomás Cohen Arazi (tcohen) 2014-07-07 13:20:32 UTC
Patch pushed to master.

Thanks Yohann!
Comment 8 Galen Charlton 2014-07-23 21:34:47 UTC
Pushed to 3.16.x for inclusion in 3.16.2.