defmodule BattleSnake.GameServer.SupervisorTest do
  alias BattleSnake.{
    GameServer,
  }

  use BattleSnake.Case, async: false

  @sup_name GameServer.Supervisor

  describe "GameServer.Supervisor.start_game_server/1" do
    import GameServer.Supervisor, only: [start_game_server: 1]

    test "does not link the GameServer to the calling process" do
      {:ok, game_server} = start_game_server([%GameServer.State{}])
      assert not self() in (game_server |> Process.info() |> Keyword.get(:links))
    end

    test "starts a game server process" do
      {:ok, game_server} = start_game_server([build(:state)])
      assert is_pid game_server
      assert %{active: 1, workers: 1} = Supervisor.count_children(@sup_name)
    end

    test "does not restart processes that have died" do
      {:ok, game_server} = start_game_server([%GameServer.State{}])
      GenServer.stop(game_server, :normal)
      ref = Process.monitor(game_server)
      assert_receive {:DOWN, ^ref, _, _, _}
      assert %{active: 0} = Supervisor.count_children(@sup_name)
    end
  end
end

defmodule BattleSnake.GameServer.SupervisorTest do
  alias BattleSnake.GameServer.Supervisor

  use BattleSnake.Case, async: false

  describe "Supervisor.start_game_server/1" do
    test "starts a game server process" do
      {:ok, game_server} = Supervisor.start_game_server([build(:state)])
      assert is_pid game_server
    end
  end
end

Remove bad tests from supervisor
Remove bad tests from supervisor

These tests suck. They don't add value to the project.
They test the behavior of OTP.
The only thing that needs to be tested here is that a pid is returned.

Dkendal/battle_snake,Dkendal/battle_snake,Dkendal/battle_snake,Dkendal/battle_snake,Dkendal/battle_snake