DBD::mysql::st execute failed: Duplicate entry 'cEMggO40gdPLhcVXbpry8x0izO8lHr8NafFIBJwm0D1HgiXA57YR0a0VVxhQBzvn' for key 'userid' [for Statement "INSERT INTO `borrowers` ( `branchcode`, `categorycode`, `flags`, `surname`, `userid`) VALUES ( ?, ?, ?, ?, ? )" with ParamValues: 0='N2ElsY9', 1='Kk8G', 2=80, 3='Test Surname', 4='cEMggO40gdPLhcVXbpry8x0izO8lHr8NafFIBJwm0D1HgiXA57YR0a0VVxhQBzvnnbgezJqmxqwz'] at /usr/share/perl5/DBIx/Class/Storage/DBI.pm line 1832. DBIx::Class::Storage::DBI::_dbh_execute(): Duplicate entry 'cEMggO40gdPLhcVXbpry8x0izO8lHr8NafFIBJwm0D1HgiXA57YR0a0VVxhQBzvn' for key 'userid' at /kohadevbox/koha/Koha/Object.pm line 121 # Looks like your test exited with 255 before it could output anything. [18:52:19] t/db_dependent/api/v1/holds.t Reading the code I guess it happens if TestBuilder generates a userid with the size of borrowers.userid (75 chars). In that case the following lines are wrong: $borrower->userid($nopermission->{ userid }."z"); $borrower2->userid($nopermission->{ userid }."x"); $borrower3->userid($nopermission->{ userid }."y"); The 3 patrons will have the same userid.
Created attachment 67578 [details] [review] Bug 19405: Prevent api/v1/holds.t to fail randomly DBD::mysql::st execute failed: Duplicate entry 'cEMggO40gdPLhcVXbpry8x0izO8lHr8NafFIBJwm0D1HgiXA57YR0a0VVxhQBzvn' for key 'userid' [for Statement "INSERT INTO `borrowers` ( `branchcode`, `categorycode`, `flags`, `surname`, `userid`) VALUES ( ?, ?, ?, ?, ? )" with ParamValues: 0='N2ElsY9', 1='Kk8G', 2=80, 3='Test Surname', 4='cEMggO40gdPLhcVXbpry8x0izO8lHr8NafFIBJwm0D1HgiXA57YR0a0VVxhQBzvnnbgezJqmxqwz'] at /usr/share/perl5/DBIx/Class/Storage/DBI.pm line 1832. DBIx::Class::Storage::DBI::_dbh_execute(): Duplicate entry 'cEMggO40gdPLhcVXbpry8x0izO8lHr8NafFIBJwm0D1HgiXA57YR0a0VVxhQBzvn' for key 'userid' at /kohadevbox/koha/Koha/Object.pm line 121 [18:52:19] t/db_dependent/api/v1/holds.t Reading the code I guess it happens if TestBuilder generates a userid with the size of borrowers.userid (75 chars). In that case the following lines are wrong: $borrower->userid($nopermission->{ userid }."z"); $borrower2->userid($nopermission->{ userid }."x"); $borrower3->userid($nopermission->{ userid }."y"); The 3 patrons will have the same userid. Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Pushed to master for 17.11.
Pushed to 17.05.x, will be in 17.05.06.
Tests fail when this is applied to 16.11.x, skipping. Test Summary Report ------------------- t/db_dependent/api/v1/holds.t (Wstat: 65280 Tests: 0 Failed: 0) Non-zero exit status: 255 Parse errors: Bad plan. You planned 4 tests but ran 0. Files=1, Tests=0, 2 wallclock secs ( 0.02 usr 0.00 sys + 1.25 cusr 0.35 csys = 1.62 CPU) Result: FAIL kohadev-koha@kohadevbox:/home/vagrant/kohaclone$ prove -v t/db_dependent/api/v1/holds.t t/db_dependent/api/v1/holds.t .. 1..4 Can't locate object method "build_object" via package "t::lib::TestBuilder" at t/db_dependent/api/v1/holds.t line 67. # Looks like your test exited with 255 before it could output anything. Dubious, test returned 255 (wstat 65280, 0xff00) Failed 4/4 subtests Test Summary Report ------------------- t/db_dependent/api/v1/holds.t (Wstat: 65280 Tests: 0 Failed: 0) Non-zero exit status: 255 Parse errors: Bad plan. You planned 4 tests but ran 0.