class RubyMemcheck::Configuration
def initialize(
def initialize( binary_name: nil, ruby: FileUtils::RUBY, valgrind: DEFAULT_VALGRIND, valgrind_options: DEFAULT_VALGRIND_OPTIONS, valgrind_suppressions_dir: DEFAULT_VALGRIND_SUPPRESSIONS_DIR, valgrind_generate_suppressions: false, skipped_ruby_functions: DEFAULT_SKIPPED_RUBY_FUNCTIONS, temp_dir: Dir.mktmpdir, output_io: $stderr, filter_all_errors: false, use_only_ruby_free_at_exit: RUBY_FREE_AT_EXIT_SUPPORTED ) @binary_name = binary_name @ruby = ruby @valgrind = valgrind @valgrind_options = valgrind_options @valgrind_suppression_files = get_valgrind_suppression_files(File.join(__dir__, "../../suppressions")) + get_valgrind_suppression_files(valgrind_suppressions_dir) @valgrind_generate_suppressions = valgrind_generate_suppressions @skipped_ruby_functions = skipped_ruby_functions @output_io = output_io @filter_all_errors = filter_all_errors temp_dir = File.expand_path(temp_dir) FileUtils.mkdir_p(temp_dir) @temp_dir = temp_dir @valgrind_options += [ "--xml=yes", # %p will be replaced with the PID # This prevents forking and shelling out from generating a corrupted XML # See --log-file from https://valgrind.org/docs/manual/manual-core.html "--xml-file=#{File.join(temp_dir, "%p.xml")}", ] @loaded_features_file = Tempfile.create("", @temp_dir) @use_only_ruby_free_at_exit = use_only_ruby_free_at_exit end