From eba1a8e029d6bc1f1ee17ec1e48d501eb289c7d9 Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Wed, 18 Dec 2024 10:59:54 -0800 Subject: [PATCH] Make PostgreSQL specs pass when PostgreSQL is not built with libxml support This seems an uncommon way to build PostgreSQL, considering that nobody has reported this issue, but since libxml is not required to build PostgreSQL, Sequel's specs should work without it. --- spec/adapters/postgres_spec.rb | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/spec/adapters/postgres_spec.rb b/spec/adapters/postgres_spec.rb index d61620e35..a274b36f7 100644 --- a/spec/adapters/postgres_spec.rb +++ b/spec/adapters/postgres_spec.rb @@ -3214,7 +3214,18 @@ def c.get_last_result; end column :o, 'oidvector[]' end @tp.call.must_equal [:xml_array, :money_array, :bit_array, :varbit_array, :uuid_array, :xid_array, :cid_array, :name_array, :oidvector_array] - @ds.insert(Sequel.pg_array([''], :xml), + + begin + @db.transaction(:rollback=>:always) do + @ds.insert(:x=>Sequel.pg_array([''], :xml)) + end + rescue Sequel::DatabaseError + else + xml_insert_value = Sequel.pg_array([''], :xml) + xml_expected_value = [''] + end + + @ds.insert(xml_insert_value, Sequel.pg_array(['1'], :money), Sequel.pg_array(['1'], :bit), Sequel.pg_array(['10'], :varbit), @@ -3230,10 +3241,12 @@ def c.get_last_result; end m.class.must_equal(Sequel::Postgres::PGArray) m.to_a.must_be_kind_of(Array) m.first.must_be_kind_of(String) - r.must_be(:==, :x=>[''], :b=>['1'], :vb=>['10'], :u=>['c0f24910-39e7-11e4-916c-0800200c9a66'], :xi=>['12'], :c=>['12'], :n=>['N'], :o=>['1 2']) - rs.first.values.each{|v| v.class.must_equal(Sequel::Postgres::PGArray)} - rs.first.values.each{|v| v.to_a.must_be_kind_of(Array)} + r.must_be(:==, :x=>xml_expected_value, :b=>['1'], :vb=>['10'], :u=>['c0f24910-39e7-11e4-916c-0800200c9a66'], :xi=>['12'], :c=>['12'], :n=>['N'], :o=>['1 2']) + x = r.delete(:x) + r.values.each{|v| v.class.must_equal(Sequel::Postgres::PGArray)} + r.values.each{|v| v.to_a.must_be_kind_of(Array)} r[:m] = m + r[:x] = x @ds.delete @ds.insert(r) @ds.all.must_equal rs