diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml deleted file mode 100644 index 60713d4..0000000 --- a/.github/workflows/pytest.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: pytest - -on: - workflow_dispatch: - push: - branches: - - main - pull_request: - branches: - - main - -jobs: - pytest: - runs-on: self-hosted - - steps: - - uses: actions/checkout@v4 - - name: Run tests - run: nix develop .#devShells.x86_64-linux.default -c pytest tests diff --git a/common/optional/zfs/snapshot.nix b/common/optional/zfs/snapshot.nix index b2c4168..d4b908f 100644 --- a/common/optional/zfs/snapshot.nix +++ b/common/optional/zfs/snapshot.nix @@ -1,4 +1,5 @@ { + inputs, pkgs, lib, config, @@ -6,6 +7,11 @@ }: let cfg = config.services.snapshot_manager; + snapshotManagerPackages = + ps: with ps; [ + apprise + typer + ]; in { options = { @@ -36,15 +42,39 @@ in config = lib.mkIf cfg.enable { nixpkgs.overlays = [ (final: _prev: { - snapshot_manager_python = final.python314.withPackages ( - ps: with ps; [ - apprise - typer - ] + snapshot_manager_python = final.python314.withPackages snapshotManagerPackages; + snapshot_manager_test_python = final.python314.withPackages ( + ps: + snapshotManagerPackages ps + ++ (with ps; [ + pyfakefs + pytest + pytest-asyncio + pytest-mock + pytest-xdist + ]) ); + snapshot_manager_tests = + final.runCommand "snapshot-manager-tests" + { + nativeBuildInputs = [ final.snapshot_manager_test_python ]; + } + '' + export HOME="$TMPDIR" + cd ${inputs.self} + pytest \ + -o cache_dir="$TMPDIR/pytest-cache" \ + tests/test_common.py \ + tests/test_signal_alert.py \ + tests/test_snapshot_manager.py \ + tests/test_zfs.py + touch "$out" + ''; }) ]; + system.checks = [ pkgs.snapshot_manager_tests ]; + systemd = { services.snapshot_manager = { description = "ZFS Snapshot Manager"; diff --git a/python/gitea_flake_lock.py b/python/gitea_flake_lock.py index 24f45ef..bb05673 100644 --- a/python/gitea_flake_lock.py +++ b/python/gitea_flake_lock.py @@ -14,7 +14,7 @@ DEFAULT_BASE_BRANCH = "main" DEFAULT_BRANCH = "automation/update-flake-lock" DEFAULT_GITEA_URL = "https://gitea.tmmworkshop.com" PR_LABELS = ["dependencies", "automated", "flake_lock_update"] -PR_CHECK_WORKFLOWS = ["build_systems.yml", "treefmt.yml", "pytest.yml"] +PR_CHECK_WORKFLOWS = ["build_systems.yml", "treefmt.yml"] PR_TITLE = "Update flake.lock" PR_BODY = "Automated flake.lock update." diff --git a/systems/jeeves/services/gems.nix b/systems/jeeves/services/gems.nix index a7893d0..31b57bc 100644 --- a/systems/jeeves/services/gems.nix +++ b/systems/jeeves/services/gems.nix @@ -6,24 +6,47 @@ let vars = import ../vars.nix; stateDir = "${vars.services}/gems"; + gemsPackages = + ps: with ps; [ + fastapi + jinja2 + pydantic + pydantic-settings + python-multipart + typer + uvicorn + ]; in { nixpkgs.overlays = [ (final: _prev: { - gems_python = final.python314.withPackages ( - ps: with ps; [ - fastapi - jinja2 - pydantic - pydantic-settings - python-multipart - typer - uvicorn - ] + gems_python = final.python314.withPackages gemsPackages; + gems_test_python = final.python314.withPackages ( + ps: + gemsPackages ps + ++ (with ps; [ + httpx + pytest + pytest-asyncio + pytest-xdist + ]) ); + gems_tests = + final.runCommand "gems-tests" + { + nativeBuildInputs = [ final.gems_test_python ]; + } + '' + export HOME="$TMPDIR" + cd ${inputs.self} + pytest -o cache_dir="$TMPDIR/pytest-cache" tests/gems + touch "$out" + ''; }) ]; + system.checks = [ pkgs.gems_tests ]; + users.groups.gems = { }; users.users.gems = { isSystemUser = true;