Home / Input Output / foliage
Feb 18, 5-6 PM (0)
Feb 18, 6-7 PM (0)
Feb 18, 7-8 PM (0)
Feb 18, 8-9 PM (0)
Feb 18, 9-10 PM (0)
Feb 18, 10-11 PM (0)
Feb 18, 11-12 AM (0)
Feb 19, 12-1 AM (0)
Feb 19, 1-2 AM (0)
Feb 19, 2-3 AM (0)
Feb 19, 3-4 AM (1)
Feb 19, 4-5 AM (0)
Feb 19, 5-6 AM (0)
Feb 19, 6-7 AM (0)
Feb 19, 7-8 AM (0)
Feb 19, 8-9 AM (0)
Feb 19, 9-10 AM (0)
Feb 19, 10-11 AM (0)
Feb 19, 11-12 PM (0)
Feb 19, 12-1 PM (0)
Feb 19, 1-2 PM (0)
Feb 19, 2-3 PM (0)
Feb 19, 3-4 PM (0)
Feb 19, 4-5 PM (0)
Feb 19, 5-6 PM (0)
Feb 19, 6-7 PM (0)
Feb 19, 7-8 PM (1)
Feb 19, 8-9 PM (0)
Feb 19, 9-10 PM (1)
Feb 19, 10-11 PM (0)
Feb 19, 11-12 AM (0)
Feb 20, 12-1 AM (0)
Feb 20, 1-2 AM (0)
Feb 20, 2-3 AM (0)
Feb 20, 3-4 AM (0)
Feb 20, 4-5 AM (1)
Feb 20, 5-6 AM (0)
Feb 20, 6-7 AM (0)
Feb 20, 7-8 AM (0)
Feb 20, 8-9 AM (0)
Feb 20, 9-10 AM (0)
Feb 20, 10-11 AM (0)
Feb 20, 11-12 PM (0)
Feb 20, 12-1 PM (0)
Feb 20, 1-2 PM (0)
Feb 20, 2-3 PM (0)
Feb 20, 3-4 PM (0)
Feb 20, 4-5 PM (0)
Feb 20, 5-6 PM (0)
Feb 20, 6-7 PM (0)
Feb 20, 7-8 PM (0)
Feb 20, 8-9 PM (0)
Feb 20, 9-10 PM (0)
Feb 20, 10-11 PM (0)
Feb 20, 11-12 AM (0)
Feb 21, 12-1 AM (0)
Feb 21, 1-2 AM (0)
Feb 21, 2-3 AM (0)
Feb 21, 3-4 AM (0)
Feb 21, 4-5 AM (0)
Feb 21, 5-6 AM (0)
Feb 21, 6-7 AM (0)
Feb 21, 7-8 AM (0)
Feb 21, 8-9 AM (0)
Feb 21, 9-10 AM (0)
Feb 21, 10-11 AM (0)
Feb 21, 11-12 PM (0)
Feb 21, 12-1 PM (0)
Feb 21, 1-2 PM (0)
Feb 21, 2-3 PM (0)
Feb 21, 3-4 PM (0)
Feb 21, 4-5 PM (0)
Feb 21, 5-6 PM (0)
Feb 21, 6-7 PM (0)
Feb 21, 7-8 PM (0)
Feb 21, 8-9 PM (0)
Feb 21, 9-10 PM (0)
Feb 21, 10-11 PM (0)
Feb 21, 11-12 AM (1)
Feb 22, 12-1 AM (0)
Feb 22, 1-2 AM (0)
Feb 22, 2-3 AM (0)
Feb 22, 3-4 AM (0)
Feb 22, 4-5 AM (0)
Feb 22, 5-6 AM (0)
Feb 22, 6-7 AM (0)
Feb 22, 7-8 AM (0)
Feb 22, 8-9 AM (0)
Feb 22, 9-10 AM (0)
Feb 22, 10-11 AM (0)
Feb 22, 11-12 PM (0)
Feb 22, 12-1 PM (0)
Feb 22, 1-2 PM (0)
Feb 22, 2-3 PM (0)
Feb 22, 3-4 PM (0)
Feb 22, 4-5 PM (0)
Feb 22, 5-6 PM (0)
Feb 22, 6-7 PM (0)
Feb 22, 7-8 PM (0)
Feb 22, 8-9 PM (0)
Feb 22, 9-10 PM (0)
Feb 22, 10-11 PM (0)
Feb 22, 11-12 AM (0)
Feb 23, 12-1 AM (0)
Feb 23, 1-2 AM (0)
Feb 23, 2-3 AM (0)
Feb 23, 3-4 AM (0)
Feb 23, 4-5 AM (0)
Feb 23, 5-6 AM (0)
Feb 23, 6-7 AM (0)
Feb 23, 7-8 AM (0)
Feb 23, 8-9 AM (0)
Feb 23, 9-10 AM (0)
Feb 23, 10-11 AM (0)
Feb 23, 11-12 PM (0)
Feb 23, 12-1 PM (0)
Feb 23, 1-2 PM (0)
Feb 23, 2-3 PM (0)
Feb 23, 3-4 PM (0)
Feb 23, 4-5 PM (0)
Feb 23, 5-6 PM (0)
Feb 23, 6-7 PM (0)
Feb 23, 7-8 PM (0)
Feb 23, 8-9 PM (0)
Feb 23, 9-10 PM (0)
Feb 23, 10-11 PM (0)
Feb 23, 11-12 AM (0)
Feb 24, 12-1 AM (0)
Feb 24, 1-2 AM (0)
Feb 24, 2-3 AM (0)
Feb 24, 3-4 AM (0)
Feb 24, 4-5 AM (0)
Feb 24, 5-6 AM (0)
Feb 24, 6-7 AM (0)
Feb 24, 7-8 AM (0)
Feb 24, 8-9 AM (0)
Feb 24, 9-10 AM (0)
Feb 24, 10-11 AM (0)
Feb 24, 11-12 PM (0)
Feb 24, 12-1 PM (0)
Feb 24, 1-2 PM (0)
Feb 24, 2-3 PM (0)
Feb 24, 3-4 PM (0)
Feb 24, 4-5 PM (0)
Feb 24, 5-6 PM (0)
Feb 24, 6-7 PM (0)
Feb 24, 7-8 PM (0)
Feb 24, 8-9 PM (0)
Feb 24, 9-10 PM (0)
Feb 24, 10-11 PM (0)
Feb 24, 11-12 AM (0)
Feb 25, 12-1 AM (0)
Feb 25, 1-2 AM (0)
Feb 25, 2-3 AM (0)
Feb 25, 3-4 AM (0)
Feb 25, 4-5 AM (0)
Feb 25, 5-6 AM (0)
Feb 25, 6-7 AM (0)
Feb 25, 7-8 AM (0)
Feb 25, 8-9 AM (0)
Feb 25, 9-10 AM (0)
Feb 25, 10-11 AM (0)
Feb 25, 11-12 PM (0)
Feb 25, 12-1 PM (0)
Feb 25, 1-2 PM (0)
Feb 25, 2-3 PM (0)
Feb 25, 3-4 PM (0)
Feb 25, 4-5 PM (0)
Feb 25, 5-6 PM (0)
5 commits this week Feb 18, 2026 - Feb 25, 2026
flake.lock: Update
Flake lock file updates:

• Updated input 'haskell-nix':
    'github:input-output-hk/haskell.nix/cad2645' (2026-01-03)
  → 'github:input-output-hk/haskell.nix/96631ac' (2026-02-21)
• Updated input 'haskell-nix/hackage':
    'github:input-output-hk/hackage.nix/05797dd' (2026-01-03)
  → 'github:input-output-hk/hackage.nix/0af430c' (2026-02-21)
• Updated input 'haskell-nix/hackage-for-stackage':
    'github:input-output-hk/hackage.nix/fba3874' (2026-01-03)
  → 'github:input-output-hk/hackage.nix/7309ada' (2026-02-21)
• Added input 'haskell-nix/hls-2.12':
    'github:haskell/haskell-language-server/7d983de' (2025-09-24)
• Updated input 'haskell-nix/iserv-proxy':
    'github:stable-haskell/iserv-proxy/1506051' (2025-08-15)
  → 'github:stable-haskell/iserv-proxy/91ef7ff' (2026-02-04)
• Updated input 'haskell-nix/stackage':
    'github:input-output-hk/stackage.nix/8a7333a' (2026-01-03)
  → 'github:input-output-hk/stackage.nix/8124f3d' (2026-02-21)
Add comprehensive test coverage for cache and validation features
This commit addresses the remaining Copilot review suggestions by adding
test coverage for the new functionality introduced in PR #120.

New Tests Added:

1. Unit Tests for validateGzipFile (6 test cases)
   - ✅ Accepts valid gzip files
   - ✅ Rejects files with invalid magic bytes
   - ✅ Rejects files shorter than 2 bytes
   - ✅ Rejects empty files
   - ✅ Rejects non-existent files
   - ✅ Accepts files with correct magic bytes (validates header only)

2. Integration Test for --clean-cache Flag
   - ✅ Verifies cache is created on first build
   - ✅ Verifies --clean-cache removes and recreates cache
   - ✅ Ensures build completes successfully after cleaning

Implementation Details:

- Exported validateGzipFile from Foliage.FetchURL for testing
- Created new test module: tests/Foliage/Tests/FetchURL.hs
- Updated foliage.cabal to include:
  - New test module and dependencies
  - app/ directory in test hs-source-dirs for module access
  - Required dependencies: aeson, binary, hashable, shake, network-uri, temporary
- All 10 tests pass (6 unit + 4 integration)

Test Results:
✅ validateGzipFile: 6/6 tests pass
✅ Integration tests: 4/4 tests pass (one, --no-signatures, --write-metadata, --clean-cache)

This provides confidence that:
- Gzip validation logic works correctly and won't regress
- The --clean-cache flag operates as expected
- Cache corruption prevention features are properly tested