From d5825fd57464e3d8122006cf47672d3109d1782d Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Fri, 25 Nov 2022 08:19:09 +0000 Subject: [PATCH] Bug 32350: Die on unrecognised column passed to testbuilder This should prevent mis-matches between tests and database fields in the future and reduce our chances of hitting random test failures. However, it may have a performance impact on the test suite. --- t/lib/TestBuilder.pm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/t/lib/TestBuilder.pm b/t/lib/TestBuilder.pm index d065835ded..bac6e3818e 100644 --- a/t/lib/TestBuilder.pm +++ b/t/lib/TestBuilder.pm @@ -12,6 +12,7 @@ use Bytes::Random::Secure; use Carp qw( carp ); use Module::Load qw( load ); use String::Random; +use List::Util qw( any ); use constant { SIZE_BARCODE => 20, # Not perfect but avoid to fetch the value when creating a new item @@ -280,6 +281,11 @@ sub _buildColumnValues { my @columns = $self->schema->source($source)->columns; my %unique_constraints = $self->schema->source($source)->unique_constraints(); + for my $key ( keys %{$original_value} ) { + die "value passed for unrecognised column: $key" + if !( any { $key eq $_ } @columns ); + } + my $build_value = 5; # we try max $build_value times if there are unique constraints BUILD_VALUE: while ( $build_value ) { -- 2.20.1