   |> Enum.each(&Code.require_file/1)
 
   setup_all do
-    themes =
-      [
-        null: nil,
-        dummy: Serum.DummyTheme,
-        failing: Serum.FailingTheme,
-        weird: Serum.WeirdTheme,
-        super_weird_1: Serum.SuperWeirdTheme1,
-        super_weird_2: Serum.SuperWeirdTheme2,
-        empty: Serum.EmptyTheme
-      ]
-      |> Enum.map(fn {k, v} -> {k, load(v)} end)
-      |> Enum.map(fn {k, {:ok, theme}} -> {k, theme} end)
-
     {:ok, io_opts} = IOProxy.config()
 
     IOProxy.config(mute_err: false)
     on_exit(fn -> IOProxy.config(Keyword.new(io_opts)) end)
 
-    {:ok, themes}
+    :ok
   end
 
   describe "load/1" do

      assert paths === expected_paths
    end

    test "fails if the returned value is not a list", ctx do
      assert {:error, msg} = get_templates(ctx.super_weird_1)
      assert String.contains?(msg, "Serum.SuperWeirdTheme1.get_templates")
      assert String.contains?(msg, inspect("/foo/bar/baz.html.eex"))
    end

    test "fails if the returned list has non-binary values", ctx do
      assert {:error, msg} = get_templates(ctx.super_weird_2)
      assert String.contains?(msg, "Serum.SuperWeirdTheme2.get_templates")
      assert String.contains?(msg, inspect(42))
    end

    test "may also fail in some other cases", ctx do
      assert {:error, msg} = get_templates(ctx.failing)
      assert String.contains?(msg, "test error from get_templates/0")
    end

    test "does nothing if the theme module is nil", ctx do
      assert {:ok, %{}} === get_templates(ctx.null)
    end
  end

  describe "get_assets/1" do
    test "successfully retrieves a path", ctx do
      tmp_path = get_tmp_dir("serum_test_")
      {:ok, agent} = Agent.start_link(fn -> tmp_path end, name: Serum.TestAgent)

      File.mkdir_p!(tmp_path)
      assert {:ok, tmp_path} === get_assets(ctx.dummy)
      File.rm_rf!(tmp_path)

      :ok = Agent.stop(agent)
    end

    test "returns false to indicate that no asset will be copied", ctx do
      assert {:ok, false} === get_assets(ctx.empty)
    end

    test "fails if the returned path is not a directory", ctx do
      tmp_path = get_tmp_dir("serum_test_")
      {:ok, agent} = Agent.start_link(fn -> tmp_path end, name: Serum.TestAgent)
      expected = {:error, {:enotdir, tmp_path, 0}}

      File.touch!(tmp_path)
      assert expected === get_assets(ctx.weird)
      File.rm_rf!(tmp_path)

      :ok = Agent.stop(agent)
    end

    test "fails if the returned value is not a binary", ctx do
      assert {:error, msg} = get_assets(ctx.super_weird_1)
      assert String.contains?(msg, inspect(42))
    end

    test "may also fail in some other cases", ctx do
      assert {:error, msg} = get_assets(ctx.failing)
      assert String.contains?(msg, "test error from get_assets/0")
    end

    test "does nothing if the theme module is nil", ctx do
      assert {:ok, false} === get_assets(ctx.null)
    end
  end
end

      assert paths === expected_paths
    end

    test "ignores invalid items" do
      {:ok, _theme} = load(Serum.WeirdTheme)
      {:ok, %{} = paths} = get_includes()

      expected_paths = %{
        "nav" => "/foo/bar/includes/nav.html.eex",
