From e7018f36021e53cee55856751197b3ede38714fe Mon Sep 17 00:00:00 2001 From: Tai Groot Date: Sat, 28 Feb 2026 08:00:44 +0000 Subject: [PATCH 1/4] chore(deps): update all dependencies --- go.mod | 31 ++++++++++++++-------------- go.sum | 65 +++++++++++++++++++++++++++++----------------------------- 2 files changed, 47 insertions(+), 49 deletions(-) diff --git a/go.mod b/go.mod index 989fdce..192b2d9 100644 --- a/go.mod +++ b/go.mod @@ -10,22 +10,21 @@ require ( ) require ( - charm.land/lipgloss/v2 v2.0.0-beta.3.0.20251106193318-19329a3e8410 // indirect + charm.land/lipgloss/v2 v2.0.0 // indirect dario.cat/mergo v1.0.2 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/charmbracelet/colorprofile v0.3.3 // indirect - github.com/charmbracelet/ultraviolet v0.0.0-20251106190538-99ea45596692 // indirect - github.com/charmbracelet/x/ansi v0.11.0 // indirect - github.com/charmbracelet/x/exp/charmtone v0.0.0-20250603201427-c31516f43444 // indirect + github.com/charmbracelet/colorprofile v0.4.2 // indirect + github.com/charmbracelet/ultraviolet v0.0.0-20260223171050-89c142e4aa73 // indirect + github.com/charmbracelet/x/ansi v0.11.6 // indirect + github.com/charmbracelet/x/exp/charmtone v0.0.0-20260225200202-61df8bc4b903 // indirect github.com/charmbracelet/x/term v0.2.2 // indirect github.com/charmbracelet/x/termios v0.1.1 // indirect github.com/charmbracelet/x/windows v0.2.2 // indirect - github.com/clipperhouse/displaywidth v0.4.1 // indirect - github.com/clipperhouse/stringish v0.1.1 // indirect - github.com/clipperhouse/uax29/v2 v2.3.0 // indirect + github.com/clipperhouse/displaywidth v0.11.0 // indirect + github.com/clipperhouse/uax29/v2 v2.7.0 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect github.com/containerd/log v0.1.0 // indirect @@ -47,7 +46,7 @@ require ( github.com/lucasb-eyer/go-colorful v1.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/magiconair/properties v1.8.10 // indirect - github.com/mattn/go-runewidth v0.0.19 // indirect + github.com/mattn/go-runewidth v0.0.20 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/go-archive v0.1.0 // indirect github.com/moby/patternmatcher v0.6.0 // indirect @@ -57,9 +56,9 @@ require ( github.com/moby/term v0.5.0 // indirect github.com/morikuni/aec v1.0.0 // indirect github.com/muesli/cancelreader v0.2.2 // indirect - github.com/muesli/mango v0.1.0 // indirect - github.com/muesli/mango-cobra v1.2.0 // indirect - github.com/muesli/mango-pflag v0.1.0 // indirect + github.com/muesli/mango v0.2.0 // indirect + github.com/muesli/mango-cobra v1.3.0 // indirect + github.com/muesli/mango-pflag v0.2.0 // indirect github.com/muesli/roff v0.1.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect @@ -69,7 +68,7 @@ require ( github.com/rivo/uniseg v0.4.7 // indirect github.com/shirou/gopsutil/v4 v4.25.6 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/spf13/pflag v1.0.9 // indirect + github.com/spf13/pflag v1.0.10 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect @@ -83,9 +82,9 @@ require ( go.opentelemetry.io/otel/trace v1.40.0 // indirect go.opentelemetry.io/proto/otlp v1.9.0 // indirect golang.org/x/crypto v0.45.0 // indirect - golang.org/x/sync v0.18.0 // indirect - golang.org/x/sys v0.40.0 // indirect - golang.org/x/text v0.31.0 // indirect + golang.org/x/sync v0.19.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 45329ab..53a047f 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -charm.land/lipgloss/v2 v2.0.0-beta.3.0.20251106193318-19329a3e8410 h1:D9PbaszZYpB4nj+d6HTWr1onlmlyuGVNfL9gAi8iB3k= -charm.land/lipgloss/v2 v2.0.0-beta.3.0.20251106193318-19329a3e8410/go.mod h1:1qZyvvVCenJO2M1ac2mX0yyiIZJoZmDM4DG4s0udJkU= +charm.land/lipgloss/v2 v2.0.0 h1:sd8N/B3x892oiOjFfBQdXBQp3cAkvjGaU5TvVZC3ivo= +charm.land/lipgloss/v2 v2.0.0/go.mod h1:w6SnmsBFBmEFBodiEDurGS/sdUY/u1+v72DqUzc6J14= dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk= @@ -8,22 +8,22 @@ github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOEl github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/aymanbagabas/go-udiff v0.3.1 h1:LV+qyBQ2pqe0u42ZsUEtPiCaUoqgA9gYRDs3vj1nolY= -github.com/aymanbagabas/go-udiff v0.3.1/go.mod h1:G0fsKmG+P6ylD0r6N/KgQD/nWzgfnl8ZBcNLgcbrw8E= +github.com/aymanbagabas/go-udiff v0.4.0 h1:TKnLPh7IbnizJIBKFWa9mKayRUBQ9Kh1BPCk6w2PnYM= +github.com/aymanbagabas/go-udiff v0.4.0/go.mod h1:0L9PGwj20lrtmEMeyw4WKJ/TMyDtvAoK9bf2u/mNo3w= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/charmbracelet/colorprofile v0.3.3 h1:DjJzJtLP6/NZ8p7Cgjno0CKGr7wwRJGxWUwh2IyhfAI= -github.com/charmbracelet/colorprofile v0.3.3/go.mod h1:nB1FugsAbzq284eJcjfah2nhdSLppN2NqvfotkfRYP4= +github.com/charmbracelet/colorprofile v0.4.2 h1:BdSNuMjRbotnxHSfxy+PCSa4xAmz7szw70ktAtWRYrY= +github.com/charmbracelet/colorprofile v0.4.2/go.mod h1:0rTi81QpwDElInthtrQ6Ni7cG0sDtwAd4C4le060fT8= github.com/charmbracelet/fang v0.4.4 h1:G4qKxF6or/eTPgmAolwPuRNyuci3hTUGGX1rj1YkHJY= github.com/charmbracelet/fang v0.4.4/go.mod h1:P5/DNb9DddQ0Z0dbc0P3ol4/ix5Po7Ofr2KMBfAqoCo= -github.com/charmbracelet/ultraviolet v0.0.0-20251106190538-99ea45596692 h1:r/3jQZ1LjWW6ybp8HHfhrKrwHIWiJhUuY7wwYIWZulQ= -github.com/charmbracelet/ultraviolet v0.0.0-20251106190538-99ea45596692/go.mod h1:Y8B4DzWeTb0ama8l3+KyopZtkE8fZjwRQ3aEAPEXHE0= -github.com/charmbracelet/x/ansi v0.11.0 h1:uuIVK7GIplwX6UBIz8S2TF8nkr7xRlygSsBRjSJqIvA= -github.com/charmbracelet/x/ansi v0.11.0/go.mod h1:uQt8bOrq/xgXjlGcFMc8U2WYbnxyjrKhnvTQluvfCaE= -github.com/charmbracelet/x/exp/charmtone v0.0.0-20250603201427-c31516f43444 h1:IJDiTgVE56gkAGfq0lBEloWgkXMk4hl/bmuPoicI4R0= -github.com/charmbracelet/x/exp/charmtone v0.0.0-20250603201427-c31516f43444/go.mod h1:T9jr8CzFpjhFVHjNjKwbAD7KwBNyFnj2pntAO7F2zw0= +github.com/charmbracelet/ultraviolet v0.0.0-20260223171050-89c142e4aa73 h1:Af/L28Xh+pddhouT/6lJ7IAIYfu5tWJOB0iqt+mXsYM= +github.com/charmbracelet/ultraviolet v0.0.0-20260223171050-89c142e4aa73/go.mod h1:E6/0abq9uG2SnM8IbLB9Y5SW09uIgfaFETk8aRzgXUQ= +github.com/charmbracelet/x/ansi v0.11.6 h1:GhV21SiDz/45W9AnV2R61xZMRri5NlLnl6CVF7ihZW8= +github.com/charmbracelet/x/ansi v0.11.6/go.mod h1:2JNYLgQUsyqaiLovhU2Rv/pb8r6ydXKS3NIttu3VGZQ= +github.com/charmbracelet/x/exp/charmtone v0.0.0-20260225200202-61df8bc4b903 h1:QKMgigHt5QxrmLPYiy2rqeupaUk3LwKwJCBVr52KPTI= +github.com/charmbracelet/x/exp/charmtone v0.0.0-20260225200202-61df8bc4b903/go.mod h1:nsExn0DGyX0lh9LwLHTn2Gg+hafdzfSXnC+QmEJTZFY= github.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f h1:pk6gmGpCE7F3FcjaOEKYriCvpmIN4+6OS/RD0vm4uIA= github.com/charmbracelet/x/exp/golden v0.0.0-20250806222409-83e3a29d542f/go.mod h1:IfZAMTHB6XkZSeXUqriemErjAWCCzT0LwjKFYCZyw0I= github.com/charmbracelet/x/term v0.2.2 h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSgfgZRk= @@ -32,12 +32,10 @@ github.com/charmbracelet/x/termios v0.1.1 h1:o3Q2bT8eqzGnGPOYheoYS8eEleT5ZVNYNy8 github.com/charmbracelet/x/termios v0.1.1/go.mod h1:rB7fnv1TgOPOyyKRJ9o+AsTU/vK5WHJ2ivHeut/Pcwo= github.com/charmbracelet/x/windows v0.2.2 h1:IofanmuvaxnKHuV04sC0eBy/smG6kIKrWG2/jYn2GuM= github.com/charmbracelet/x/windows v0.2.2/go.mod h1:/8XtdKZzedat74NQFn0NGlGL4soHB0YQZrETF96h75k= -github.com/clipperhouse/displaywidth v0.4.1 h1:uVw9V8UDfnggg3K2U84VWY1YLQ/x2aKSCtkRyYozfoU= -github.com/clipperhouse/displaywidth v0.4.1/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o= -github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs= -github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA= -github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4= -github.com/clipperhouse/uax29/v2 v2.3.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g= +github.com/clipperhouse/displaywidth v0.11.0 h1:lBc6kY44VFw+TDx4I8opi/EtL9m20WSEFgwIwO+UVM8= +github.com/clipperhouse/displaywidth v0.11.0/go.mod h1:bkrFNkf81G8HyVqmKGxsPufD3JhNl3dSqnGhOoSD/o0= +github.com/clipperhouse/uax29/v2 v2.7.0 h1:+gs4oBZ2gPfVrKPthwbMzWZDaAFPGYK72F0NJv2v7Vk= +github.com/clipperhouse/uax29/v2 v2.7.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= @@ -94,8 +92,8 @@ github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE= github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mattn/go-runewidth v0.0.19 h1:v++JhqYnZuu5jSKrk9RbgF5v4CGUjqRfBm05byFGLdw= -github.com/mattn/go-runewidth v0.0.19/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= +github.com/mattn/go-runewidth v0.0.20 h1:WcT52H91ZUAwy8+HUkdM3THM6gXqXuLJi9O3rjcQQaQ= +github.com/mattn/go-runewidth v0.0.20/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/go-archive v0.1.0 h1:Kk/5rdW/g+H8NHdJW2gsXyZ7UnzvJNOy6VKJqueWdcQ= @@ -116,12 +114,12 @@ github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= -github.com/muesli/mango v0.1.0 h1:DZQK45d2gGbql1arsYA4vfg4d7I9Hfx5rX/GCmzsAvI= -github.com/muesli/mango v0.1.0/go.mod h1:5XFpbC8jY5UUv89YQciiXNlbi+iJgt29VDC5xbzrLL4= -github.com/muesli/mango-cobra v1.2.0 h1:DQvjzAM0PMZr85Iv9LIMaYISpTOliMEg+uMFtNbYvWg= -github.com/muesli/mango-cobra v1.2.0/go.mod h1:vMJL54QytZAJhCT13LPVDfkvCUJ5/4jNUKF/8NC2UjA= -github.com/muesli/mango-pflag v0.1.0 h1:UADqbYgpUyRoBja3g6LUL+3LErjpsOwaC9ywvBWe7Sg= -github.com/muesli/mango-pflag v0.1.0/go.mod h1:YEQomTxaCUp8PrbhFh10UfbhbQrM/xJ4i2PB8VTLLW0= +github.com/muesli/mango v0.2.0 h1:iNNc0c5VLQ6fsMgAqGQofByNUBH2Q2nEbD6TaI+5yyQ= +github.com/muesli/mango v0.2.0/go.mod h1:5XFpbC8jY5UUv89YQciiXNlbi+iJgt29VDC5xbzrLL4= +github.com/muesli/mango-cobra v1.3.0 h1:vQy5GvPg3ndOSpduxutqFoINhWk3vD5K2dXo5E8pqec= +github.com/muesli/mango-cobra v1.3.0/go.mod h1:Cj1ZrBu3806Qw7UjxnAUgE+7tllUBj1NCLQDwwGx19E= +github.com/muesli/mango-pflag v0.2.0 h1:QViokgKDZQCzKhYe1zH8D+UlPJzBSGoP9yx0hBG0t5k= +github.com/muesli/mango-pflag v0.2.0/go.mod h1:X9LT1p/pbGA1wjvEbtwnixujKErkP0jVmrxwrw3fL0Y= github.com/muesli/roff v0.1.0 h1:YD0lalCotmYuF5HhZliKWlIx7IEhiXeSfq7hNjFqGF8= github.com/muesli/roff v0.1.0/go.mod h1:pjAHQM9hdUUwm/krAfrLGgJkXJ+YuhtsfZ42kieB2Ig= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= @@ -145,8 +143,9 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= -github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY= github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= +github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= @@ -188,20 +187,20 @@ golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= -golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= -golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= +golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= -golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 4e90abc6a353f733de6d1c47303a7de0ba0a369f Mon Sep 17 00:00:00 2001 From: Tai Groot Date: Sun, 1 Mar 2026 00:47:23 +0000 Subject: [PATCH 2/4] fix: update integration tests for Install/Remove multi-return signature --- apk/apk_integration_test.go | 12 ++++++------ apt/apt_integration_test.go | 18 +++++++++--------- dnf/dnf_integration_test.go | 18 +++++++++--------- dpkg/dpkg_integration_test.go | 2 +- flatpak/flatpak_integration_test.go | 4 ++-- pacman/pacman_integration_test.go | 12 ++++++------ pkg/pkg_integration_test.go | 4 ++-- rpm/rpm_integration_test.go | 2 +- snap/snap_integration_test.go | 8 ++++---- 9 files changed, 40 insertions(+), 40 deletions(-) diff --git a/apk/apk_integration_test.go b/apk/apk_integration_test.go index f8f9bb7..38472ff 100644 --- a/apk/apk_integration_test.go +++ b/apk/apk_integration_test.go @@ -74,8 +74,8 @@ func TestIntegration_Apk(t *testing.T) { }) t.Run("Install_Single", func(t *testing.T) { - _ = mgr.Remove(ctx, snack.Targets("tree")) - err := mgr.Install(ctx, snack.Targets("tree")) + _, _ = mgr.Remove(ctx, snack.Targets("tree")) + _, err := mgr.Install(ctx, snack.Targets("tree")) require.NoError(t, err) }) @@ -128,7 +128,7 @@ func TestIntegration_Apk(t *testing.T) { }) t.Run("Install_Multiple", func(t *testing.T) { - err := mgr.Install(ctx, snack.Targets("tree", "less")) + _, err := mgr.Install(ctx, snack.Targets("tree", "less")) require.NoError(t, err) for _, pkg := range []string{"tree", "less"} { @@ -149,7 +149,7 @@ func TestIntegration_Apk(t *testing.T) { }) t.Run("Remove", func(t *testing.T) { - err := mgr.Remove(ctx, snack.Targets("tree")) + _, err := mgr.Remove(ctx, snack.Targets("tree")) require.NoError(t, err) installed, err := mgr.IsInstalled(ctx, "tree") @@ -227,7 +227,7 @@ func TestIntegration_Apk(t *testing.T) { require.True(t, ok) // Install tree for file tests - _ = mgr.Install(ctx, snack.Targets("tree")) + _, _ = mgr.Install(ctx, snack.Targets("tree")) t.Run("FileList", func(t *testing.T) { files, err := fo.FileList(ctx, "tree") @@ -252,7 +252,7 @@ func TestIntegration_Apk(t *testing.T) { assert.Error(t, err) }) - _ = mgr.Remove(ctx, snack.Targets("tree")) + _, _ = mgr.Remove(ctx, snack.Targets("tree")) }) // --- Upgrade --- diff --git a/apt/apt_integration_test.go b/apt/apt_integration_test.go index d9e4593..bd85a97 100644 --- a/apt/apt_integration_test.go +++ b/apt/apt_integration_test.go @@ -75,9 +75,9 @@ func TestIntegration_Apt(t *testing.T) { t.Run("Install_Single", func(t *testing.T) { // Remove first to ensure clean state - _ = mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, _, _ = mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) - err := mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, _, err := mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) require.NoError(t, err) }) @@ -127,7 +127,7 @@ func TestIntegration_Apt(t *testing.T) { ver, err := mgr.Version(ctx, "tree") require.NoError(t, err) - err = mgr.Install(ctx, []snack.Target{{Name: "tree", Version: ver}}, snack.WithAssumeYes()) + _, _, err = mgr.Install(ctx, []snack.Target{{Name: "tree", Version: ver}}, snack.WithAssumeYes()) // Should succeed (already installed at that version) or be a no-op // Some apt versions may return success, others may note it's already installed _ = err @@ -135,7 +135,7 @@ func TestIntegration_Apt(t *testing.T) { t.Run("Purge", func(t *testing.T) { // Install then purge (removes config files too) - _ = mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, _, _ = mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) err := mgr.Purge(ctx, snack.Targets("tree"), snack.WithAssumeYes()) require.NoError(t, err) @@ -145,7 +145,7 @@ func TestIntegration_Apt(t *testing.T) { }) t.Run("Install_Multiple", func(t *testing.T) { - err := mgr.Install(ctx, snack.Targets("tree", "less"), snack.WithAssumeYes()) + _, _, err := mgr.Install(ctx, snack.Targets("tree", "less"), snack.WithAssumeYes()) require.NoError(t, err) for _, pkg := range []string{"tree", "less"} { @@ -156,7 +156,7 @@ func TestIntegration_Apt(t *testing.T) { }) t.Run("Remove", func(t *testing.T) { - err := mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, _, err := mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) require.NoError(t, err) installed, err := mgr.IsInstalled(ctx, "tree") @@ -223,7 +223,7 @@ func TestIntegration_Apt(t *testing.T) { require.True(t, ok, "apt must implement Holder") // Ensure tree is installed for hold tests - _ = mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, _, _ = mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) t.Run("Hold", func(t *testing.T) { err := h.Hold(ctx, []string{"tree"}) @@ -287,7 +287,7 @@ func TestIntegration_Apt(t *testing.T) { require.True(t, ok, "apt must implement FileOwner") // Ensure tree is installed - _ = mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, _, _ = mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) t.Run("FileList", func(t *testing.T) { files, err := fo.FileList(ctx, "tree") @@ -379,5 +379,5 @@ func TestIntegration_Apt(t *testing.T) { }) // Cleanup - _ = mgr.Remove(ctx, snack.Targets("tree", "less"), snack.WithAssumeYes()) + _, _, _ = mgr.Remove(ctx, snack.Targets("tree", "less"), snack.WithAssumeYes()) } diff --git a/dnf/dnf_integration_test.go b/dnf/dnf_integration_test.go index 0e0133b..7c72658 100644 --- a/dnf/dnf_integration_test.go +++ b/dnf/dnf_integration_test.go @@ -80,8 +80,8 @@ func TestIntegration_DNF(t *testing.T) { }) t.Run("Install_Single", func(t *testing.T) { - _ = mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) - err := mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, _ = mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, err := mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) require.NoError(t, err) }) @@ -127,7 +127,7 @@ func TestIntegration_DNF(t *testing.T) { }) t.Run("Install_Multiple", func(t *testing.T) { - err := mgr.Install(ctx, snack.Targets("tree", "less"), snack.WithAssumeYes()) + _, err := mgr.Install(ctx, snack.Targets("tree", "less"), snack.WithAssumeYes()) require.NoError(t, err) for _, pkg := range []string{"tree", "less"} { @@ -138,7 +138,7 @@ func TestIntegration_DNF(t *testing.T) { }) t.Run("Install_WithRefresh", func(t *testing.T) { - err := mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes(), snack.WithRefresh()) + _, err := mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes(), snack.WithRefresh()) require.NoError(t, err) }) @@ -152,7 +152,7 @@ func TestIntegration_DNF(t *testing.T) { }) t.Run("Remove", func(t *testing.T) { - err := mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, err := mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) require.NoError(t, err) installed, err := mgr.IsInstalled(ctx, "tree") @@ -217,7 +217,7 @@ func TestIntegration_DNF(t *testing.T) { require.True(t, ok) // Install tree for hold tests; also ensure versionlock plugin - _ = mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, _ = mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) t.Run("Hold", func(t *testing.T) { err := h.Hold(ctx, []string{"tree"}) @@ -254,7 +254,7 @@ func TestIntegration_DNF(t *testing.T) { }) }) - _ = mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, _ = mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) }) // --- Cleaner --- @@ -278,7 +278,7 @@ func TestIntegration_DNF(t *testing.T) { fo, ok := mgr.(snack.FileOwner) require.True(t, ok) - _ = mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, _ = mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) t.Run("FileList", func(t *testing.T) { files, err := fo.FileList(ctx, "tree") @@ -311,7 +311,7 @@ func TestIntegration_DNF(t *testing.T) { assert.Error(t, err) }) - _ = mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, _ = mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) }) // --- RepoManager --- diff --git a/dpkg/dpkg_integration_test.go b/dpkg/dpkg_integration_test.go index 5c4e069..f6603b6 100644 --- a/dpkg/dpkg_integration_test.go +++ b/dpkg/dpkg_integration_test.go @@ -164,7 +164,7 @@ func TestIntegration_Dpkg(t *testing.T) { t.Run("Install_Unsupported", func(t *testing.T) { // dpkg install requires a .deb file path, not a package name // This should fail gracefully - err := mgr.Install(ctx, snack.Targets("tree")) + _, _, err := mgr.Install(ctx, snack.Targets("tree")) assert.Error(t, err) }) diff --git a/flatpak/flatpak_integration_test.go b/flatpak/flatpak_integration_test.go index 409b131..ffff002 100644 --- a/flatpak/flatpak_integration_test.go +++ b/flatpak/flatpak_integration_test.go @@ -67,7 +67,7 @@ func TestIntegration_Flatpak(t *testing.T) { }) t.Run("Install", func(t *testing.T) { - err := mgr.Install(ctx, snack.Targets("com.github.tchx84.Flatseal"), snack.WithSudo(), snack.WithAssumeYes()) + _, err := mgr.Install(ctx, snack.Targets("com.github.tchx84.Flatseal"), snack.WithSudo(), snack.WithAssumeYes()) require.NoError(t, err) }) @@ -121,7 +121,7 @@ func TestIntegration_Flatpak(t *testing.T) { }) t.Run("Remove", func(t *testing.T) { - err := mgr.Remove(ctx, snack.Targets("com.github.tchx84.Flatseal"), snack.WithSudo(), snack.WithAssumeYes()) + _, err := mgr.Remove(ctx, snack.Targets("com.github.tchx84.Flatseal"), snack.WithSudo(), snack.WithAssumeYes()) require.NoError(t, err) }) diff --git a/pacman/pacman_integration_test.go b/pacman/pacman_integration_test.go index 9e2b68d..86a883b 100644 --- a/pacman/pacman_integration_test.go +++ b/pacman/pacman_integration_test.go @@ -71,8 +71,8 @@ func TestIntegration_Pacman(t *testing.T) { }) t.Run("Install_Single", func(t *testing.T) { - _ = mgr.Remove(ctx, snack.Targets("tree")) - err := mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, _ = mgr.Remove(ctx, snack.Targets("tree")) + _, err := mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) require.NoError(t, err) }) @@ -117,7 +117,7 @@ func TestIntegration_Pacman(t *testing.T) { }) t.Run("Install_Multiple", func(t *testing.T) { - err := mgr.Install(ctx, snack.Targets("tree", "less"), snack.WithAssumeYes()) + _, err := mgr.Install(ctx, snack.Targets("tree", "less"), snack.WithAssumeYes()) require.NoError(t, err) for _, pkg := range []string{"tree", "less"} { @@ -137,7 +137,7 @@ func TestIntegration_Pacman(t *testing.T) { }) t.Run("Remove", func(t *testing.T) { - err := mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, err := mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) require.NoError(t, err) installed, err := mgr.IsInstalled(ctx, "tree") @@ -212,7 +212,7 @@ func TestIntegration_Pacman(t *testing.T) { fo, ok := mgr.(snack.FileOwner) require.True(t, ok) - _ = mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, _ = mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) t.Run("FileList", func(t *testing.T) { files, err := fo.FileList(ctx, "tree") @@ -245,7 +245,7 @@ func TestIntegration_Pacman(t *testing.T) { assert.Error(t, err) }) - _ = mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, _ = mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) }) // --- Grouper --- diff --git a/pkg/pkg_integration_test.go b/pkg/pkg_integration_test.go index 069fbd0..d7f8292 100644 --- a/pkg/pkg_integration_test.go +++ b/pkg/pkg_integration_test.go @@ -38,7 +38,7 @@ func TestIntegration_Pkg(t *testing.T) { }) t.Run("Install", func(t *testing.T) { - err := mgr.Install(ctx, snack.Targets("tree"), snack.WithSudo(), snack.WithAssumeYes()) + _, err := mgr.Install(ctx, snack.Targets("tree"), snack.WithSudo(), snack.WithAssumeYes()) require.NoError(t, err) }) @@ -68,7 +68,7 @@ func TestIntegration_Pkg(t *testing.T) { }) t.Run("Remove", func(t *testing.T) { - err := mgr.Remove(ctx, snack.Targets("tree"), snack.WithSudo(), snack.WithAssumeYes()) + _, err := mgr.Remove(ctx, snack.Targets("tree"), snack.WithSudo(), snack.WithAssumeYes()) require.NoError(t, err) }) diff --git a/rpm/rpm_integration_test.go b/rpm/rpm_integration_test.go index de670ec..f273cff 100644 --- a/rpm/rpm_integration_test.go +++ b/rpm/rpm_integration_test.go @@ -156,7 +156,7 @@ func TestIntegration_RPM(t *testing.T) { // --- Operations rpm doesn't support --- t.Run("Install_Unsupported", func(t *testing.T) { - err := mgr.Install(ctx, snack.Targets("tree")) + _, err := mgr.Install(ctx, snack.Targets("tree")) assert.Error(t, err) }) diff --git a/snap/snap_integration_test.go b/snap/snap_integration_test.go index 7762ed4..95569fa 100644 --- a/snap/snap_integration_test.go +++ b/snap/snap_integration_test.go @@ -61,8 +61,8 @@ func TestIntegration_Snap(t *testing.T) { }) t.Run("Install", func(t *testing.T) { - _ = mgr.Remove(ctx, snack.Targets("hello-world"), snack.WithSudo()) - err := mgr.Install(ctx, snack.Targets("hello-world"), snack.WithSudo()) + _, _ = mgr.Remove(ctx, snack.Targets("hello-world"), snack.WithSudo()) + _, err := mgr.Install(ctx, snack.Targets("hello-world"), snack.WithSudo()) require.NoError(t, err) }) @@ -152,7 +152,7 @@ func TestIntegration_Snap(t *testing.T) { }) t.Run("Remove", func(t *testing.T) { - err := mgr.Remove(ctx, snack.Targets("hello-world"), snack.WithSudo()) + _, err := mgr.Remove(ctx, snack.Targets("hello-world"), snack.WithSudo()) require.NoError(t, err) installed, err := mgr.IsInstalled(ctx, "hello-world") @@ -161,7 +161,7 @@ func TestIntegration_Snap(t *testing.T) { }) t.Run("Purge", func(t *testing.T) { - _ = mgr.Install(ctx, snack.Targets("hello-world"), snack.WithSudo()) + _, _ = mgr.Install(ctx, snack.Targets("hello-world"), snack.WithSudo()) err := mgr.Purge(ctx, snack.Targets("hello-world"), snack.WithSudo()) require.NoError(t, err) }) From f85e21598122ff09a3fb37ce92593358c7e97344 Mon Sep 17 00:00:00 2001 From: Tai Groot Date: Sun, 1 Mar 2026 01:44:50 +0000 Subject: [PATCH 3/4] fix: update apt/dpkg integration tests for 2-value Install/Remove returns --- apt/apt_integration_test.go | 18 +++++++++--------- dpkg/dpkg_integration_test.go | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apt/apt_integration_test.go b/apt/apt_integration_test.go index bd85a97..498b296 100644 --- a/apt/apt_integration_test.go +++ b/apt/apt_integration_test.go @@ -75,9 +75,9 @@ func TestIntegration_Apt(t *testing.T) { t.Run("Install_Single", func(t *testing.T) { // Remove first to ensure clean state - _, _, _ = mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, _ = mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) - _, _, err := mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, err := mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) require.NoError(t, err) }) @@ -127,7 +127,7 @@ func TestIntegration_Apt(t *testing.T) { ver, err := mgr.Version(ctx, "tree") require.NoError(t, err) - _, _, err = mgr.Install(ctx, []snack.Target{{Name: "tree", Version: ver}}, snack.WithAssumeYes()) + _, err = mgr.Install(ctx, []snack.Target{{Name: "tree", Version: ver}}, snack.WithAssumeYes()) // Should succeed (already installed at that version) or be a no-op // Some apt versions may return success, others may note it's already installed _ = err @@ -135,7 +135,7 @@ func TestIntegration_Apt(t *testing.T) { t.Run("Purge", func(t *testing.T) { // Install then purge (removes config files too) - _, _, _ = mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, _ = mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) err := mgr.Purge(ctx, snack.Targets("tree"), snack.WithAssumeYes()) require.NoError(t, err) @@ -145,7 +145,7 @@ func TestIntegration_Apt(t *testing.T) { }) t.Run("Install_Multiple", func(t *testing.T) { - _, _, err := mgr.Install(ctx, snack.Targets("tree", "less"), snack.WithAssumeYes()) + _, err := mgr.Install(ctx, snack.Targets("tree", "less"), snack.WithAssumeYes()) require.NoError(t, err) for _, pkg := range []string{"tree", "less"} { @@ -156,7 +156,7 @@ func TestIntegration_Apt(t *testing.T) { }) t.Run("Remove", func(t *testing.T) { - _, _, err := mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, err := mgr.Remove(ctx, snack.Targets("tree"), snack.WithAssumeYes()) require.NoError(t, err) installed, err := mgr.IsInstalled(ctx, "tree") @@ -223,7 +223,7 @@ func TestIntegration_Apt(t *testing.T) { require.True(t, ok, "apt must implement Holder") // Ensure tree is installed for hold tests - _, _, _ = mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, _ = mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) t.Run("Hold", func(t *testing.T) { err := h.Hold(ctx, []string{"tree"}) @@ -287,7 +287,7 @@ func TestIntegration_Apt(t *testing.T) { require.True(t, ok, "apt must implement FileOwner") // Ensure tree is installed - _, _, _ = mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) + _, _ = mgr.Install(ctx, snack.Targets("tree"), snack.WithAssumeYes()) t.Run("FileList", func(t *testing.T) { files, err := fo.FileList(ctx, "tree") @@ -379,5 +379,5 @@ func TestIntegration_Apt(t *testing.T) { }) // Cleanup - _, _, _ = mgr.Remove(ctx, snack.Targets("tree", "less"), snack.WithAssumeYes()) + _, _ = mgr.Remove(ctx, snack.Targets("tree", "less"), snack.WithAssumeYes()) } diff --git a/dpkg/dpkg_integration_test.go b/dpkg/dpkg_integration_test.go index f6603b6..f4474ab 100644 --- a/dpkg/dpkg_integration_test.go +++ b/dpkg/dpkg_integration_test.go @@ -164,7 +164,7 @@ func TestIntegration_Dpkg(t *testing.T) { t.Run("Install_Unsupported", func(t *testing.T) { // dpkg install requires a .deb file path, not a package name // This should fail gracefully - _, _, err := mgr.Install(ctx, snack.Targets("tree")) + _, err := mgr.Install(ctx, snack.Targets("tree")) assert.Error(t, err) }) From 6ff778c85794dfae075cd04aeaa018a1bdb11ce7 Mon Sep 17 00:00:00 2001 From: Tai Groot Date: Sun, 1 Mar 2026 07:32:55 +0000 Subject: [PATCH 4/4] fix(test): use non-installed package in dpkg/rpm Install_Unsupported tests The tests expected Install("tree") to error because dpkg/rpm need a .deb/.rpm file path. But "tree" is pre-installed in CI containers, so the code short-circuits to "unchanged" and returns nil. Use a non-existent package name instead to exercise the actual install failure path. --- dpkg/dpkg_integration_test.go | 2 +- rpm/rpm_integration_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dpkg/dpkg_integration_test.go b/dpkg/dpkg_integration_test.go index f4474ab..327459f 100644 --- a/dpkg/dpkg_integration_test.go +++ b/dpkg/dpkg_integration_test.go @@ -164,7 +164,7 @@ func TestIntegration_Dpkg(t *testing.T) { t.Run("Install_Unsupported", func(t *testing.T) { // dpkg install requires a .deb file path, not a package name // This should fail gracefully - _, err := mgr.Install(ctx, snack.Targets("tree")) + _, err := mgr.Install(ctx, snack.Targets("nonexistent-pkg-xyzzy")) assert.Error(t, err) }) diff --git a/rpm/rpm_integration_test.go b/rpm/rpm_integration_test.go index f273cff..e0843ee 100644 --- a/rpm/rpm_integration_test.go +++ b/rpm/rpm_integration_test.go @@ -156,7 +156,7 @@ func TestIntegration_RPM(t *testing.T) { // --- Operations rpm doesn't support --- t.Run("Install_Unsupported", func(t *testing.T) { - _, err := mgr.Install(ctx, snack.Targets("tree")) + _, err := mgr.Install(ctx, snack.Targets("nonexistent-pkg-xyzzy")) assert.Error(t, err) })