Skip to content

Commit

Permalink
chore: use mimic to fix flaky tests
Browse files Browse the repository at this point in the history
  • Loading branch information
kybishop committed Feb 20, 2025
1 parent 6f0dc69 commit 0451d3c
Show file tree
Hide file tree
Showing 16 changed files with 101 additions and 142 deletions.
5 changes: 0 additions & 5 deletions lib/quokka/config.ex
Original file line number Diff line number Diff line change
Expand Up @@ -102,11 +102,6 @@ defmodule Quokka.Config do
)
end

def set_for_test!(key, value) do
current_vals = :persistent_term.get(@key, %{})
:persistent_term.put(@key, Map.put(current_vals, key, value))
end

def get(key) do
@key
|> :persistent_term.get()
Expand Down
3 changes: 2 additions & 1 deletion mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,9 @@ defmodule Quokka.MixProject do

defp deps() do
[
{:credo, "~> 1.7", runtime: true},
{:ex_doc, "~> 0.31", runtime: false, only: :dev},
{:credo, "~> 1.7", runtime: true}
{:mimic, "~> 1.7", only: :test}
]
end

Expand Down
2 changes: 2 additions & 0 deletions mix.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@
"earmark_parser": {:hex, :earmark_parser, "1.4.39", "424642f8335b05bb9eb611aa1564c148a8ee35c9c8a8bba6e129d51a3e3c6769", [:mix], [], "hexpm", "06553a88d1f1846da9ef066b87b57c6f605552cfbe40d20bd8d59cc6bde41944"},
"ex_doc": {:hex, :ex_doc, "0.34.2", "13eedf3844ccdce25cfd837b99bea9ad92c4e511233199440488d217c92571e8", [:mix], [{:earmark_parser, "~> 1.4.39", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "5ce5f16b41208a50106afed3de6a2ed34f4acfd65715b82a0b84b49d995f95c1"},
"file_system": {:hex, :file_system, "1.0.1", "79e8ceaddb0416f8b8cd02a0127bdbababe7bf4a23d2a395b983c1f8b3f73edd", [:mix], [], "hexpm", "4414d1f38863ddf9120720cd976fce5bdde8e91d8283353f0e31850fa89feb9e"},
"ham": {:hex, :ham, "0.3.0", "7cd031b4a55fba219c11553e7b13ba73bd86eab4034518445eff1e038cb9a44d", [:mix], [], "hexpm", "7d6c6b73d7a6a83233876cc1b06a4d9b5de05562b228effda4532f9a49852bf6"},
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
"makeup": {:hex, :makeup, "1.1.1", "fa0bc768698053b2b3869fa8a62616501ff9d11a562f3ce39580d60860c3a55e", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "5dc62fbdd0de44de194898b6710692490be74baa02d9d108bc29f007783b0b48"},
"makeup_elixir": {:hex, :makeup_elixir, "0.16.1", "cc9e3ca312f1cfeccc572b37a09980287e243648108384b97ff2b76e505c3555", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e127a341ad1b209bd80f7bd1620a15693a9908ed780c3b763bccf7d200c767c6"},
"makeup_erlang": {:hex, :makeup_erlang, "0.1.3", "d684f4bac8690e70b06eb52dad65d26de2eefa44cd19d64a8095e1417df7c8fd", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "b78dc853d2e670ff6390b605d807263bf606da3c82be37f9d7f68635bd886fc9"},
"mimic": {:hex, :mimic, "1.11.0", "49b126687520b6e179acab305068ad7d72bfea8abe94908a6c0c8ca0a5b7bdc7", [:mix], [{:ham, "~> 0.2", [hex: :ham, repo: "hexpm", optional: false]}], "hexpm", "8b16b1809ca947cffbaede146cd42da8c1c326af67a84b59b01c204d54e4f1a2"},
"nimble_parsec": {:hex, :nimble_parsec, "1.4.0", "51f9b613ea62cfa97b25ccc2c1b4216e81df970acd8e16e8d1bdc58fef21370d", [:mix], [], "hexpm", "9c565862810fb383e9838c1dd2d7d2c437b3d13b267414ba6af33e50d2d1cf28"},
}
7 changes: 5 additions & 2 deletions test/style/blocks_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@
# governing permissions and limitations under the License.

defmodule Quokka.Style.BlocksTest do
use Quokka.StyleCase, async: false
use Quokka.StyleCase, async: true
use Mimic

setup do
Quokka.Config.set_for_test!(:zero_arity_parens, true)
stub(Quokka.Config, :zero_arity_parens?, fn -> true end)

:ok
end

describe "with" do
Expand Down
27 changes: 16 additions & 11 deletions test/style/configs_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,25 @@

defmodule Quokka.Style.ConfigsTest do
@moduledoc false
use Quokka.StyleCase, async: false, filename: "config/config.exs"
use Quokka.StyleCase, async: true, filename: "config/config.exs"
use Mimic

alias Quokka.Style.Configs

setup do
Quokka.Config.set_for_test!(:strict_module_layout_order, [
:shortdoc,
:moduledoc,
:behaviour,
:use,
:import,
:alias,
:require
])
stub(Quokka.Config, :strict_module_layout_order, fn ->
[
:shortdoc,
:moduledoc,
:behaviour,
:use,
:import,
:alias,
:require
]
end)

:ok
end

test "only runs on exs files in config folders" do
Expand Down Expand Up @@ -368,7 +373,7 @@ defmodule Quokka.Style.ConfigsTest do
end

test "respects custom strict_module_layout_order" do
Quokka.Config.set_for_test!(:strict_module_layout_order, [:alias, :import, :moduledoc])
stub(Quokka.Config, :strict_module_layout_order, fn -> [:alias, :import, :moduledoc] end)

assert_style(
"""
Expand Down
7 changes: 5 additions & 2 deletions test/style/defs_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,13 @@
# governing permissions and limitations under the License.

defmodule Quokka.Style.DefsTest do
use Quokka.StyleCase, async: false
use Quokka.StyleCase, async: true
use Mimic

setup do
Quokka.Config.set_for_test!(:zero_arity_parens, true)
stub(Quokka.Config, :zero_arity_parens?, fn -> true end)

:ok
end

describe "run" do
Expand Down
2 changes: 1 addition & 1 deletion test/style/deprecations_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
# governing permissions and limitations under the License.

defmodule Quokka.Style.DeprecationsTest do
use Quokka.StyleCase, async: false
use Quokka.StyleCase, async: true

test "Logger.warn to Logger.warning" do
assert_style("Logger.warn(foo)", "Logger.warning(foo)")
Expand Down
53 changes: 17 additions & 36 deletions test/style/module_directives/alias_lifting_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,14 @@

defmodule Quokka.Style.ModuleDirectives.AliasLiftingTest do
@moduledoc false
use Quokka.StyleCase, async: false
use Quokka.StyleCase, async: true
use Mimic

setup do
Quokka.Config.set_for_test!(:lift_alias, true)
Quokka.Config.set_for_test!(:lift_alias_depth, 2)
Quokka.Config.set_for_test!(:lift_alias_frequency, 1)
Quokka.Config.set_for_test!(:zero_arity_parens, true)

on_exit(fn ->
Quokka.Config.set!([])
end)
stub(Quokka.Config, :lift_alias?, fn -> true end)
stub(Quokka.Config, :lift_alias_depth, fn -> 2 end)
stub(Quokka.Config, :lift_alias_frequency, fn -> 1 end)
stub(Quokka.Config, :zero_arity_parens?, fn -> true end)

:ok
end
Expand Down Expand Up @@ -239,7 +236,7 @@ defmodule Quokka.Style.ModuleDirectives.AliasLiftingTest do
end

test "sorts in ascii order when sort_order is :ascii" do
Quokka.Config.set_for_test!(:sort_order, :ascii)
stub(Quokka.Config, :sort_order, fn -> :ascii end)

assert_style(
"""
Expand All @@ -265,8 +262,6 @@ defmodule Quokka.Style.ModuleDirectives.AliasLiftingTest do
end
"""
)

Quokka.Config.set_for_test!(:sort_order, :alpha)
end

describe "comments stay put" do
Expand Down Expand Up @@ -314,7 +309,7 @@ defmodule Quokka.Style.ModuleDirectives.AliasLiftingTest do

describe "it doesn't lift" do
test "when flag is off" do
Quokka.Config.set_for_test!(:lift_alias, false)
stub(Quokka.Config, :lift_alias?, fn -> false end)

assert_style(
"""
Expand Down Expand Up @@ -375,7 +370,7 @@ defmodule Quokka.Style.ModuleDirectives.AliasLiftingTest do
end

test "collisions with configured modules" do
Quokka.Config.set_for_test!(:lift_alias_excluded_lastnames, MapSet.new([:C]))
stub(Quokka.Config, :lift_alias_excluded_lastnames, fn -> MapSet.new([:C]) end)

assert_style """
alias Foo.Bar
Expand All @@ -394,12 +389,10 @@ defmodule Quokka.Style.ModuleDirectives.AliasLiftingTest do
F.foo()
F.foo()
"""

Quokka.Config.set_for_test!(:lift_alias_excluded_lastnames, MapSet.new())
end

test "collisions with configured regexes" do
Quokka.Config.set_for_test!(:lift_alias_excluded_namespaces, MapSet.new([:Name]))
stub(Quokka.Config, :lift_alias_excluded_namespaces, fn -> MapSet.new([:Name]) end)

assert_style(
"""
Expand Down Expand Up @@ -429,8 +422,6 @@ defmodule Quokka.Style.ModuleDirectives.AliasLiftingTest do
end
"""
)

Quokka.Config.set_for_test!(:lift_alias_excluded_namespaces, MapSet.new())
end

test "collisions with std lib" do
Expand Down Expand Up @@ -634,7 +625,7 @@ defmodule Quokka.Style.ModuleDirectives.AliasLiftingTest do
end

test "lifts all aliases when lift_alias_depth is 0" do
Quokka.Config.set_for_test!(:lift_alias_depth, 0)
stub(Quokka.Config, :lift_alias_depth, fn -> 0 end)

assert_style(
"""
Expand Down Expand Up @@ -670,7 +661,7 @@ defmodule Quokka.Style.ModuleDirectives.AliasLiftingTest do

describe "lift_alias_frequency configuration" do
test "only lifts aliases that meet frequency threshold" do
Quokka.Config.set_for_test!(:lift_alias_frequency, 2)
stub(Quokka.Config, :lift_alias_frequency, fn -> 2 end)

assert_style(
"""
Expand Down Expand Up @@ -703,7 +694,7 @@ defmodule Quokka.Style.ModuleDirectives.AliasLiftingTest do
end

test "lifts all aliases when frequency is 0" do
Quokka.Config.set_for_test!(:lift_alias_frequency, 0)
stub(Quokka.Config, :lift_alias_frequency, fn -> 0 end)

assert_style(
"""
Expand Down Expand Up @@ -734,8 +725,8 @@ defmodule Quokka.Style.ModuleDirectives.AliasLiftingTest do

describe "alias lifting within use" do
test "lifts aliases when use is after alias" do
Quokka.Config.set_for_test!(:lift_alias_frequency, 0)
Quokka.Config.set_for_test!(:strict_module_layout_order, [:alias, :use])
stub(Quokka.Config, :strict_module_layout_order, fn -> [:alias, :use] end)
stub(Quokka.Config, :lift_alias_frequency, fn -> 0 end)

assert_style("""
defmodule MyApp.Schemas.MySchema do
Expand All @@ -751,8 +742,8 @@ defmodule Quokka.Style.ModuleDirectives.AliasLiftingTest do
end

test "doesn't lift aliases when use is before alias" do
Quokka.Config.set_for_test!(:lift_alias_frequency, 0)
Quokka.Config.set_for_test!(:strict_module_layout_order, [:use, :alias])
stub(Quokka.Config, :strict_module_layout_order, fn -> [:use, :alias] end)
stub(Quokka.Config, :lift_alias_frequency, fn -> 0 end)

assert_style(
"""
Expand All @@ -778,16 +769,6 @@ defmodule Quokka.Style.ModuleDirectives.AliasLiftingTest do
end
"""
)

Quokka.Config.set_for_test!(:strict_module_layout_order, [
:shortdoc,
:moduledoc,
:behaviour,
:use,
:import,
:alias,
:require
])
end
end
end
39 changes: 18 additions & 21 deletions test/style/module_directives_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -11,24 +11,23 @@

defmodule Quokka.Style.ModuleDirectivesTest do
@moduledoc false
use Quokka.StyleCase, async: false

setup_all do
Quokka.Config.set_for_test!(:rewrite_multi_alias, true)
Quokka.Config.set_for_test!(:zero_arity_parens, true)

Quokka.Config.set_for_test!(:strict_module_layout_order, [
:shortdoc,
:moduledoc,
:behaviour,
:use,
:import,
:alias,
:require
])

on_exit(fn ->
Quokka.Config.set_for_test!(:rewrite_multi_alias, false)
use Quokka.StyleCase, async: true
use Mimic

setup do
stub(Quokka.Config, :rewrite_multi_alias?, fn -> true end)
stub(Quokka.Config, :zero_arity_parens?, fn -> true end)

stub(Quokka.Config, :strict_module_layout_order, fn ->
[
:shortdoc,
:moduledoc,
:behaviour,
:use,
:import,
:alias,
:require
]
end)

:ok
Expand Down Expand Up @@ -436,7 +435,7 @@ defmodule Quokka.Style.ModuleDirectivesTest do
end

test "respects rewrite_multi_alias false" do
Quokka.Config.set_for_test!(:rewrite_multi_alias, false)
stub(Quokka.Config, :rewrite_multi_alias?, fn -> false end)

assert_style("""
alias A.{B, C}
Expand All @@ -446,8 +445,6 @@ defmodule Quokka.Style.ModuleDirectivesTest do
alias A.D
alias A.{B, E, C}
""")

Quokka.Config.set_for_test!(:rewrite_multi_alias, true)
end
end

Expand Down
Loading

0 comments on commit 0451d3c

Please sign in to comment.