feat(package): migrator: ! sqlite support

This commit is contained in:
2025-12-17 03:24:59 +00:00
parent bb2ae34758
commit 956239ab79
79 changed files with 608 additions and 59 deletions

View File

@@ -1,37 +1,41 @@
{ inputs, self, pkgs, system, ... }: let
lib = inputs.nixpkgs.lib;
# turn anything under ./test into a derivation that exposes $out/run.sh
mkTestDrv = name: type:
# turn anything under test directory into a derivation that exposes $out/run.sh
mkTestDrv = folder: name: type:
if type == "directory" then
pkgs.runCommand "test-${name}" {} ''
if ! [ -f ${./test + "/${name}" + /run.sh} ]; then
if ! [ -f ${"${folder}/${name}/run.sh"} ]; then
echo no run.sh in test/${name}
exit 1
fi
mkdir -p "$out"
cp -r ${./test + "/${name}"}/* "$out/"
cp -r ${"${folder}/${name}"}/* "$out/"
chmod +x "$out/run.sh"
''
else if lib.hasSuffix ".sh" name then
pkgs.runCommand "test-${lib.removeSuffix ".sh" name}" {} ''
mkdir -p "$out"
install -Dm755 ${./test + "/${name}"} "$out/run.sh"
install -Dm755 ${"${folder}/${name}"} "$out/run.sh"
''
else
null;
testDir = builtins.readDir ./test;
testDir = folder: builtins.readDir folder;
# attrset: testName -> drv with run.sh
testDrvs =
testDrvs = folder:
lib.mapAttrs' (n: v:
lib.nameValuePair (lib.removeSuffix ".sh" n) v
) (lib.filterAttrs (_: v: v != null)
(lib.mapAttrs (n: t: mkTestDrv n t) testDir));
(lib.mapAttrs (n: t: mkTestDrv folder n t) (testDir folder)));
postgresqlTestDrvs = testDrvs ./test/postgresql;
sqliteTestDrvs = testDrvs ./test/sqlite;
migrator = self.packages.${system}.migrator;
mkPgTest = testName: testDrv: pkgs.runCommand "migrator-test-${testName}"
{
nativeBuildInputs = [ pkgs.coreutils pkgs.gnugrep pkgs.gnused ];
@@ -41,10 +45,26 @@
test=${testDrv}
export HECTIC_LOG=trace
${builtins.readFile ./util.sh}
${builtins.readFile ./lauch.sh}
${builtins.readFile ./lauch-postgresql.sh}
# success marker for Nix
# shellcheck disable=SC2154
mkdir -p "$out"
'';
in lib.mapAttrs (name: drv: mkPgTest name drv) testDrvs
mkSqliteTest = testName: testDrv: pkgs.runCommand "migrator-test-${testName}"
{
nativeBuildInputs = [ pkgs.coreutils pkgs.gnugrep pkgs.gnused ];
buildInputs = [ pkgs.which migrator pkgs.sqlite ];
} ''
${builtins.readFile self.legacyPackages.${system}.helpers.posix-shell.log}
test=${testDrv}
export HECTIC_LOG=trace
${builtins.readFile ./util.sh}
${builtins.readFile ./lauch-sqlite.sh}
# success marker for Nix
# shellcheck disable=SC2154
mkdir -p "$out"
'';
in (lib.mapAttrs (name: drv: mkPgTest name drv) postgresqlTestDrvs) // (lib.mapAttrs (name: drv: mkSqliteTest name drv) sqliteTestDrvs)