From 668852398d14f1b7b7367b2f1ecef6a4dfab76bd Mon Sep 17 00:00:00 2001
From: Florian Atteneder <florian.atteneder@uni-jena.de>
Date: Tue, 20 Aug 2024 14:54:17 +0200
Subject: [PATCH] implement select_reftest helper

---
 plot/movie.jl | 37 +++++++++++++++++++++++++++++++++----
 1 file changed, 33 insertions(+), 4 deletions(-)

diff --git a/plot/movie.jl b/plot/movie.jl
index 6733590d..9744e5ed 100644
--- a/plot/movie.jl
+++ b/plot/movie.jl
@@ -6,6 +6,7 @@ import REPL: TerminalMenus
 using Printf
 GLMakie.activate!()
 using dg1d
+using TOML
 
 
 function moving_average(y::AbstractVector; w=40)
@@ -30,11 +31,13 @@ function moving_average(y::AbstractVector; w=40)
 end
 
 
-function select(dir; display_basename=true)
+function select(dir; display_basename=true, filter_previous=true)
   dir = abspath(normpath(dir))
   root, subdirs, _ = first(walkdir(dir))
-  filter!(subdirs) do d
-    !endswith(d, ".previous")
+  if filter_previous
+    filter!(subdirs) do d
+      !endswith(d, ".previous")
+    end
   end
   TerminalMenus.Config(; charset=:unicode, scroll_wrap=true)
   menu = TerminalMenus.MultiSelectMenu(subdirs)
@@ -43,10 +46,36 @@ function select(dir; display_basename=true)
 end
 
 
+function select_reftest(dir)
+  dir = abspath(normpath(dir))
+  testdir = normpath(joinpath(dir, "..", "tests"))
+  testconfig = joinpath(dir, "testconfig.toml")
+  if !isfile(testconfig)
+    error("$dir is not a directory with reftests")
+  end
+  config = TOML.parsefile(testconfig)
+  filter!(config) do (k,v)
+    !startswith(k, "default_")
+  end
+  avail_tests = collect(keys(config))
+  filter(avail_tests) do test
+    isfile(joinpath(dir, test)) && isfile(joinpath(testdir, test))
+  end
+  sort!(avail_tests)
+  TerminalMenus.Config(; charset=:unicode, scroll_wrap=true)
+  menu = TerminalMenus.RadioMenu(avail_tests)
+  selected = TerminalMenus.request("Select reftest:", menu)
+  reftestname = avail_tests[selected]
+  reftest = joinpath(dir, reftestname)
+  newresult = joinpath(testdir, reftestname)
+  return [ reftest, newresult ]
+end
+
+
 function get_parameter_file(dir)
   dir = abspath(dir)
   @assert isdir(dir) "'$dir' is not a directory name"
-  dirname = dirname_path(dir)
+  dirname = dg1d.dirname_path(dir)
   filename = if endswith(dirname, ".previous")
     joinpath(dir, "$(splitext(dirname)[1]).toml")
   else
-- 
GitLab