From 92f9490bacd5926694b1acecf224e5841a288e96 Mon Sep 17 00:00:00 2001 From: ruslandoga <67764432+ruslandoga@users.noreply.github.com> Date: Sat, 31 Aug 2024 10:12:37 +0700 Subject: [PATCH] add 'no pending migration' --- lib/plausible_release.ex | 14 ++++++++------ test/plausible/release_test.exs | 24 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/lib/plausible_release.ex b/lib/plausible_release.ex index f268925f9528..3015b0881d27 100644 --- a/lib/plausible_release.ex +++ b/lib/plausible_release.ex @@ -118,12 +118,16 @@ defmodule Plausible.Release do def pending_streaks(repos \\ repos()) do prepare() - IO.puts("Collecting pending migrations..\n") + IO.puts("Collecting pending migrations..") pending = all_pending_migrations(repos) - streaks = migration_streaks(pending) - print_migration_streaks(streaks, pending) + if pending == [] do + IO.puts("No pending migrations!") + else + streaks = migration_streaks(pending) + print_migration_streaks(streaks, pending) + end end defp print_migration_streaks([{repo, up_to_version} | streaks], pending) do @@ -133,12 +137,10 @@ defmodule Plausible.Release do end) IO.puts( - "#{inspect(repo)} [#{Path.relative_to_cwd(Ecto.Migrator.migrations_path(repo))}] streak up to version #{up_to_version}:" + "\n#{inspect(repo)} [#{Path.relative_to_cwd(Ecto.Migrator.migrations_path(repo))}] streak up to version #{up_to_version}:" ) Enum.each(streak, fn {_repo, version, name} -> IO.puts(" * #{version}_#{name}") end) - IO.puts("") - print_migration_streaks(streaks, pending) end diff --git a/test/plausible/release_test.exs b/test/plausible/release_test.exs index 767e7efb80bb..1664c744eea8 100644 --- a/test/plausible/release_test.exs +++ b/test/plausible/release_test.exs @@ -89,6 +89,17 @@ defmodule Plausible.ReleaseTest do :ok end + defp last_migration(repo) do + {:ok, {_status, version, name}, _started} = + Ecto.Migrator.with_repo(repo, fn repo -> + repo + |> Ecto.Migrator.migrations() + |> List.last() + end) + + "#{version}_#{name}" + end + defp fake_migrate(repo, up_to_migration) do {up_to_version, _name} = Integer.parse(up_to_migration) @@ -220,6 +231,19 @@ defmodule Plausible.ReleaseTest do Plausible.ReleaseTest.PostgreSQL [_build/test/lib/plausible/priv/repo/migrations] streak up to version \ """ <> _future = pending_streaks + + fake_migrate(PostgreSQL, last_migration(PostgreSQL)) + fake_migrate(ClickHouse, last_migration(ClickHouse)) + + no_streaks = capture_io(fn -> Release.pending_streaks([PostgreSQL, ClickHouse]) end) + + assert no_streaks == """ + Loading plausible.. + Starting dependencies.. + Starting repos.. + Collecting pending migrations.. + No pending migrations! + """ end end end