Sha256: 7a17c0ec922a23f58e46c20ff7ec0fc9885f610223402d64f4b5992ee3aae44f

Contents?: true

Size: 1.24 KB

Versions: 3

Compression:

Stored size: 1.24 KB

Contents

#!/usr/bin/env ruby

require "yaml"
require "pathname"
require "net/imap"

path = Pathname.new(__dir__) / "../test/net/imap/fixtures/response_parser"
files = path.glob("*.yml")
tests = files.flat_map {|file|
  file.to_s
    .then { YAML.unsafe_load_file _1 }
    .fetch(:tests)
    .select {|test_name, test|
      :parser_assert_equal == test.fetch(:test_type) {
        test.key?(:expected) ? :parser_assert_equal : :parser_pending
      }
    }
    .map {|test_name, _|
      [
        file.relative_path_from(__dir__).to_s,
        test_name.to_s,
      ]
    }
}

init = <<RUBY
  require "yaml"
  require "net/imap"

  def load_response(file, name)
    YAML.unsafe_load_file(file).dig(:tests, name, :response)
      .force_encoding "ASCII-8BIT" \\
      or abort "ERRORO: missing %p fixture data in %p" % [name, file]
  end

  parser   = Net::IMAP::ResponseParser.new
RUBY

prelude = <<RUBY
  response = load_response(%p,
                           %p)
RUBY
script = "parser.parse(response)"

benchmarks = tests.map {|file, fixture_name|
  name = fixture_name.delete_prefix("test_")
  {name:, prelude: prelude % [file, fixture_name], script:}
    .transform_keys(&:to_s)
}
  .sort_by { _1["name"] }

puts YAML.dump({"prelude" => init, "benchmark" => benchmarks})

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
net-imap-0.4.2 benchmarks/generate_parser_benchmarks
net-imap-0.4.1 benchmarks/generate_parser_benchmarks
net-imap-0.4.0 benchmarks/generate_parser_benchmarks