# frozen_string_literal: true

if ENV["DISCOURSE_DUMP_HEAP"] == "1"
  require "objspace"
  ObjectSpace.trace_object_allocations_start
end

require "rubygems"

# Set up gems listed in the Gemfile.
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", __FILE__)

require "bundler/setup" if File.exist?(ENV["BUNDLE_GEMFILE"])

if (ENV["DISABLE_BOOTSNAP"] != "1")
  begin
    require "bootsnap/setup"
  rescue LoadError
    # not a strong requirement
  end
end

# Parallel spec system
if ENV["RAILS_ENV"] == "test" && ENV["TEST_ENV_NUMBER"]
  if ENV["TEST_ENV_NUMBER"] == ""
    n = 1
  else
    n = ENV["TEST_ENV_NUMBER"].to_i
  end

  port = 10_000 + n

  STDERR.puts "Setting up parallel test mode - starting Redis #{n} on port #{port}"

  `rm -rf tmp/test_data_#{n} && mkdir -p tmp/test_data_#{n}/redis`
  pid =
    Process.spawn("redis-server --dir tmp/test_data_#{n}/redis --port #{port}", out: "/dev/null")

  ENV["DISCOURSE_REDIS_PORT"] = port.to_s
  ENV["RAILS_DB"] = "discourse_test_#{n}"

  at_exit do
    Process.kill("SIGTERM", pid)
    Process.wait
  end
end