Sha256: 9efa443cc8f483c79cbfc5f75274ce9251e20d443b43602d731d6b8bb987d134

Contents?: true

Size: 1.15 KB

Versions: 12

Compression:

Stored size: 1.15 KB

Contents

#include <nokogiri.h>
#include "libxml/xmlerror.h"

static VALUE foreign_error_handler_block = Qnil;

static void foreign_error_handler(void* user_data, xmlErrorPtr c_error)
{
  rb_funcall(foreign_error_handler_block, rb_intern("call"), 0);
}

/*
 * call-seq:
 *   __foreign_error_handler { ... } -> nil
 *
 * Override libxml2's global error handlers to call the block. This method thus has very little
 * value except to test that Nokogiri is properly setting error handlers elsewhere in the code. See
 * test/helper.rb for how this is being used.
 */
static VALUE
rb_foreign_error_handler(VALUE klass)
{
  rb_need_block();
  foreign_error_handler_block = rb_block_proc();
  xmlSetStructuredErrorFunc(NULL, foreign_error_handler);
  return Qnil;
}

/*
 *  Document-module: Nokogiri::Test
 *
 *  The Nokogiri::Test module should only be used for testing Nokogiri.
 *  Do NOT use this outside of the Nokogiri test suite.
 */
void
init_test_global_handlers()
{
  VALUE mNokogiri = rb_define_module("Nokogiri");
  VALUE mNokogiriTest = rb_define_module_under(mNokogiri, "Test");

  rb_define_singleton_method(mNokogiriTest, "__foreign_error_handler", rb_foreign_error_handler, 0);
}

Version data entries

12 entries across 10 versions & 2 rubygems

Version Path
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/tdiary-5.1.5/vendor/bundle/ruby/3.0.0/gems/nokogiri-1.11.1-x86_64-linux/ext/nokogiri/test_global_handlers.c
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/tdiary-5.1.5/vendor/bundle/ruby/2.7.0/gems/nokogiri-1.11.1-x86_64-linux/ext/nokogiri/test_global_handlers.c
tdiary-5.1.5 vendor/bundle/ruby/2.7.0/gems/nokogiri-1.11.1-x86_64-linux/ext/nokogiri/test_global_handlers.c
tdiary-5.1.5 vendor/bundle/ruby/3.0.0/gems/nokogiri-1.11.1-x86_64-linux/ext/nokogiri/test_global_handlers.c
nokogiri-1.11.1 ext/nokogiri/test_global_handlers.c
nokogiri-1.11.1-x86_64-linux ext/nokogiri/test_global_handlers.c
nokogiri-1.11.1-x86_64-darwin ext/nokogiri/test_global_handlers.c
nokogiri-1.11.1-x86-mingw32 ext/nokogiri/test_global_handlers.c
nokogiri-1.11.1-x86-linux ext/nokogiri/test_global_handlers.c
nokogiri-1.11.1-x64-mingw32 ext/nokogiri/test_global_handlers.c
nokogiri-1.11.1-java ext/nokogiri/test_global_handlers.c
nokogiri-1.11.1-arm64-darwin ext/nokogiri/test_global_handlers.c