   test patterns, the test paths, and the opts from the test task.
   """
   def require_and_run(matched_test_files, test_paths, elixirc_opts, opts) do
+    elixirc_opts = Keyword.merge([docs: false, debug_info: false], elixirc_opts)
+    previous_opts = Code.compiler_options(elixirc_opts)
+
+    try do
+      require_and_run(matched_test_files, test_paths, opts)
+    after
+      Code.compiler_options(previous_opts)
+    end
+  end
+
+  defp require_and_run(matched_test_files, test_paths, opts) do
     stale = opts[:stale]
 
     {test_files, stale_manifest_pid, parallel_require_callbacks} =

        after
          agent_stop(stale_manifest_pid)
        end
    end
  end

  defp require(files, require_opts, elixirc_opts) do
    elixirc_opts = Keyword.merge([docs: false, debug_info: false], elixirc_opts)
    previous_opts = Code.compiler_options(elixirc_opts)

    try do
      Kernel.ParallelCompiler.require(files, require_opts)
    after
      Code.compiler_options(previous_opts)
    end
  end



        try do
          failed? =
            case Kernel.ParallelCompiler.require(test_files, parallel_require_callbacks) do
              {:ok, _, [_ | _]} when warnings_as_errors? -> true
              {:ok, _, _} -> false
              {:error, _, _} -> exit({:shutdown, 1})
