From 39b54f639188853f8bc4c59d45dcb8253c20d379 Mon Sep 17 00:00:00 2001 From: Cristovao Cordeiro Date: Wed, 15 Oct 2025 17:26:20 +0200 Subject: [PATCH 1/6] Update cache_test.go --- internal/cache/cache_test.go | 152 ----------------------------------- 1 file changed, 152 deletions(-) diff --git a/internal/cache/cache_test.go b/internal/cache/cache_test.go index 1ad7f397..8b137891 100644 --- a/internal/cache/cache_test.go +++ b/internal/cache/cache_test.go @@ -1,153 +1 @@ -package cache_test -import ( - . "gopkg.in/check.v1" - - "io" - "os" - "path/filepath" - "strings" - "time" - - "github.com/canonical/chisel/internal/cache" -) - -const ( - data1Digest = "5b41362bc82b7f3d56edc5a306db22105707d01ff4819e26faef9724a2d406c9" - data2Digest = "d98cf53e0c8b77c14a96358d5b69584225b4bb9026423cbc2f7b0161894c402c" - data3Digest = "f60f2d65da046fcaaf8a10bd96b5630104b629e111aff46ce89792e1caa11b18" -) - -func (s *S) TestDefaultDir(c *C) { - oldA := os.Getenv("HOME") - oldB := os.Getenv("XDG_CACHE_HOME") - defer func() { - os.Setenv("HOME", oldA) - os.Setenv("XDG_CACHE_HOME", oldB) - }() - - os.Setenv("HOME", "/home/user") - os.Setenv("XDG_CACHE_HOME", "") - c.Assert(cache.DefaultDir("foo/bar"), Equals, "/home/user/.cache/foo/bar") - - os.Setenv("HOME", "/home/user") - os.Setenv("XDG_CACHE_HOME", "/xdg/cache") - c.Assert(cache.DefaultDir("foo/bar"), Equals, "/xdg/cache/foo/bar") - - os.Setenv("HOME", "") - os.Setenv("XDG_CACHE_HOME", "") - defaultDir := cache.DefaultDir("foo/bar") - c.Assert(strings.HasPrefix(defaultDir, os.TempDir()), Equals, true) - c.Assert(strings.Contains(defaultDir, "/cache-"), Equals, true) - c.Assert(strings.HasSuffix(defaultDir, "/foo/bar"), Equals, true) -} - -func (s *S) TestCacheEmpty(c *C) { - cc := cache.Cache{c.MkDir()} - - _, err := cc.Open(data1Digest) - c.Assert(err, Equals, cache.MissErr) - _, err = cc.Read(data1Digest) - c.Assert(err, Equals, cache.MissErr) - _, err = cc.Read("") - c.Assert(err, Equals, cache.MissErr) -} - -func (s *S) TestCacheReadWrite(c *C) { - cc := cache.Cache{Dir: c.MkDir()} - - data1Path := filepath.Join(cc.Dir, "sha256", data1Digest) - data2Path := filepath.Join(cc.Dir, "sha256", data2Digest) - data3Path := filepath.Join(cc.Dir, "sha256", data3Digest) - - err := cc.Write(data1Digest, []byte("data1")) - c.Assert(err, IsNil) - data1, err := cc.Read(data1Digest) - c.Assert(err, IsNil) - c.Assert(string(data1), Equals, "data1") - - err = cc.Write("", []byte("data2")) - c.Assert(err, IsNil) - data2, err := cc.Read(data2Digest) - c.Assert(err, IsNil) - c.Assert(string(data2), Equals, "data2") - - _, err = cc.Read(data3Digest) - c.Assert(err, Equals, cache.MissErr) - _, err = cc.Read("") - c.Assert(err, Equals, cache.MissErr) - - _, err = os.Stat(data1Path) - c.Assert(err, IsNil) - _, err = os.Stat(data2Path) - c.Assert(err, IsNil) - _, err = os.Stat(data3Path) - c.Assert(os.IsNotExist(err), Equals, true) - - now := time.Now() - expired := now.Add(-time.Hour - time.Second) - err = os.Chtimes(data1Path, now, expired) - c.Assert(err, IsNil) - - err = cc.Expire(time.Hour) - c.Assert(err, IsNil) - _, err = os.Stat(data1Path) - c.Assert(os.IsNotExist(err), Equals, true) -} - -func (s *S) TestCacheCreate(c *C) { - cc := cache.Cache{Dir: c.MkDir()} - - w := cc.Create("") - - c.Assert(w.Digest(), Equals, "") - - _, err := w.Write([]byte("da")) - c.Assert(err, IsNil) - _, err = w.Write([]byte("ta")) - c.Assert(err, IsNil) - _, err = w.Write([]byte("1")) - c.Assert(err, IsNil) - err = w.Close() - c.Assert(err, IsNil) - - c.Assert(w.Digest(), Equals, data1Digest) - - data1, err := cc.Read(data1Digest) - c.Assert(err, IsNil) - c.Assert(string(data1), Equals, "data1") -} - -func (s *S) TestCacheWrongDigest(c *C) { - cc := cache.Cache{Dir: c.MkDir()} - - w := cc.Create(data1Digest) - - c.Assert(w.Digest(), Equals, data1Digest) - - _, err := w.Write([]byte("data2")) - errClose := w.Close() - c.Assert(err, IsNil) - c.Assert(errClose, ErrorMatches, "expected digest "+data1Digest+", got "+data2Digest) - - _, err = cc.Read(data1Digest) - c.Assert(err, Equals, cache.MissErr) - _, err = cc.Read(data2Digest) - c.Assert(err, Equals, cache.MissErr) -} - -func (s *S) TestCacheOpen(c *C) { - cc := cache.Cache{Dir: c.MkDir()} - - err := cc.Write(data1Digest, []byte("data1")) - c.Assert(err, IsNil) - - f, err := cc.Open(data1Digest) - c.Assert(err, IsNil) - data1, err := io.ReadAll(f) - closeErr := f.Close() - c.Assert(err, IsNil) - c.Assert(closeErr, IsNil) - - c.Assert(string(data1), Equals, "data1") -} From 6c97f347e085dc9be702975949ec91d5a9663330 Mon Sep 17 00:00:00 2001 From: Cristovao Cordeiro Date: Wed, 15 Oct 2025 17:28:43 +0200 Subject: [PATCH 2/6] ci From 4c01bf983ecdaaae986fe426e591b51333969f19 Mon Sep 17 00:00:00 2001 From: Cristovao Cordeiro Date: Wed, 15 Oct 2025 17:30:25 +0200 Subject: [PATCH 3/6] test coverage --- internal/cache/cache_test.go | 152 +++++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) diff --git a/internal/cache/cache_test.go b/internal/cache/cache_test.go index 8b137891..51b30d1c 100644 --- a/internal/cache/cache_test.go +++ b/internal/cache/cache_test.go @@ -1 +1,153 @@ +package cache_test +// foo +import ( + . "gopkg.in/check.v1" + "io" + "os" + "path/filepath" + "strings" + "time" + + "github.com/canonical/chisel/internal/cache" +) + +const ( + data1Digest = "5b41362bc82b7f3d56edc5a306db22105707d01ff4819e26faef9724a2d406c9" + data2Digest = "d98cf53e0c8b77c14a96358d5b69584225b4bb9026423cbc2f7b0161894c402c" + data3Digest = "f60f2d65da046fcaaf8a10bd96b5630104b629e111aff46ce89792e1caa11b18" +) + +func (s *S) TestDefaultDir(c *C) { + oldA := os.Getenv("HOME") + oldB := os.Getenv("XDG_CACHE_HOME") + defer func() { + os.Setenv("HOME", oldA) + os.Setenv("XDG_CACHE_HOME", oldB) + }() + + os.Setenv("HOME", "/home/user") + os.Setenv("XDG_CACHE_HOME", "") + c.Assert(cache.DefaultDir("foo/bar"), Equals, "/home/user/.cache/foo/bar") + + os.Setenv("HOME", "/home/user") + os.Setenv("XDG_CACHE_HOME", "/xdg/cache") + c.Assert(cache.DefaultDir("foo/bar"), Equals, "/xdg/cache/foo/bar") + + os.Setenv("HOME", "") + os.Setenv("XDG_CACHE_HOME", "") + defaultDir := cache.DefaultDir("foo/bar") + c.Assert(strings.HasPrefix(defaultDir, os.TempDir()), Equals, true) + c.Assert(strings.Contains(defaultDir, "/cache-"), Equals, true) + c.Assert(strings.HasSuffix(defaultDir, "/foo/bar"), Equals, true) +} + +func (s *S) TestCacheEmpty(c *C) { + cc := cache.Cache{c.MkDir()} + + _, err := cc.Open(data1Digest) + c.Assert(err, Equals, cache.MissErr) + _, err = cc.Read(data1Digest) + c.Assert(err, Equals, cache.MissErr) + _, err = cc.Read("") + c.Assert(err, Equals, cache.MissErr) +} + +func (s *S) TestCacheReadWrite(c *C) { + cc := cache.Cache{Dir: c.MkDir()} + + data1Path := filepath.Join(cc.Dir, "sha256", data1Digest) + data2Path := filepath.Join(cc.Dir, "sha256", data2Digest) + data3Path := filepath.Join(cc.Dir, "sha256", data3Digest) + + err := cc.Write(data1Digest, []byte("data1")) + c.Assert(err, IsNil) + data1, err := cc.Read(data1Digest) + c.Assert(err, IsNil) + c.Assert(string(data1), Equals, "data1") + + err = cc.Write("", []byte("data2")) + c.Assert(err, IsNil) + data2, err := cc.Read(data2Digest) + c.Assert(err, IsNil) + c.Assert(string(data2), Equals, "data2") + + _, err = cc.Read(data3Digest) + c.Assert(err, Equals, cache.MissErr) + _, err = cc.Read("") + c.Assert(err, Equals, cache.MissErr) + + _, err = os.Stat(data1Path) + c.Assert(err, IsNil) + _, err = os.Stat(data2Path) + c.Assert(err, IsNil) + _, err = os.Stat(data3Path) + c.Assert(os.IsNotExist(err), Equals, true) + + now := time.Now() + expired := now.Add(-time.Hour - time.Second) + err = os.Chtimes(data1Path, now, expired) + c.Assert(err, IsNil) + + err = cc.Expire(time.Hour) + c.Assert(err, IsNil) + _, err = os.Stat(data1Path) + c.Assert(os.IsNotExist(err), Equals, true) +} + +func (s *S) TestCacheCreate(c *C) { + cc := cache.Cache{Dir: c.MkDir()} + + w := cc.Create("") + + c.Assert(w.Digest(), Equals, "") + + _, err := w.Write([]byte("da")) + c.Assert(err, IsNil) + _, err = w.Write([]byte("ta")) + c.Assert(err, IsNil) + _, err = w.Write([]byte("1")) + c.Assert(err, IsNil) + err = w.Close() + c.Assert(err, IsNil) + + c.Assert(w.Digest(), Equals, data1Digest) + + data1, err := cc.Read(data1Digest) + c.Assert(err, IsNil) + c.Assert(string(data1), Equals, "data1") +} + +func (s *S) TestCacheWrongDigest(c *C) { + cc := cache.Cache{Dir: c.MkDir()} + + w := cc.Create(data1Digest) + + c.Assert(w.Digest(), Equals, data1Digest) + + _, err := w.Write([]byte("data2")) + errClose := w.Close() + c.Assert(err, IsNil) + c.Assert(errClose, ErrorMatches, "expected digest "+data1Digest+", got "+data2Digest) + + _, err = cc.Read(data1Digest) + c.Assert(err, Equals, cache.MissErr) + _, err = cc.Read(data2Digest) + c.Assert(err, Equals, cache.MissErr) +} + +func (s *S) TestCacheOpen(c *C) { + cc := cache.Cache{Dir: c.MkDir()} + + err := cc.Write(data1Digest, []byte("data1")) + c.Assert(err, IsNil) + + f, err := cc.Open(data1Digest) + c.Assert(err, IsNil) + data1, err := io.ReadAll(f) + closeErr := f.Close() + c.Assert(err, IsNil) + c.Assert(closeErr, IsNil) + + c.Assert(string(data1), Equals, "data1") +} From 9c0c078eda01c62353f3ddcdf0d2210a8c21b7d8 Mon Sep 17 00:00:00 2001 From: Cristovao Cordeiro Date: Wed, 15 Oct 2025 17:33:10 +0200 Subject: [PATCH 4/6] test coverage --- internal/apachetestutil/manifest.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/apachetestutil/manifest.go b/internal/apachetestutil/manifest.go index cb3006f8..583bdaaf 100644 --- a/internal/apachetestutil/manifest.go +++ b/internal/apachetestutil/manifest.go @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 - +// test package apachetestutil import ( From a36c148272a2443b0914bda7e97d79329331f938 Mon Sep 17 00:00:00 2001 From: Cristovao Cordeiro Date: Wed, 15 Oct 2025 17:37:12 +0200 Subject: [PATCH 5/6] test coverage --- internal/apachetestutil/manifest.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/apachetestutil/manifest.go b/internal/apachetestutil/manifest.go index 583bdaaf..ced8f7a4 100644 --- a/internal/apachetestutil/manifest.go +++ b/internal/apachetestutil/manifest.go @@ -21,7 +21,7 @@ func DumpManifestContents(c *check.C, mfest *manifest.Manifest) *ManifestContent slices = append(slices, slice) return nil }) - c.Assert(err, check.IsNil) + c.Assert(err, check.IsNil) // testme var pkgs []*manifest.Package err = mfest.IteratePackages(func(pkg *manifest.Package) error { From 00c4d6dba1516ecfb3bc4c9ef4c0ab37f44e0c59 Mon Sep 17 00:00:00 2001 From: Cristovao Cordeiro Date: Wed, 15 Oct 2025 17:49:21 +0200 Subject: [PATCH 6/6] test coverage --- .github/workflows/tests.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 801b6c05..5ca7f787 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -28,10 +28,9 @@ jobs: - run: | tail -n +2 ${TEST_COVERAGE_FILE} | while read line; do if [[ "$(echo "${line##* }")" == "0" ]]; then - file_name=$(echo -n "${line}" | cut -d: -f1) + file_name=$(echo -n "${line}" | cut -d: -f1 | sed 's|github.com/canonical/chisel/||g') line_number=$(echo -n "${line}" | cut -d: -f2 | cut -d. -f1) - column_number=$(echo -n "${line}" | cut -d. -f2 | cut -d, -f1) - echo "::warning file=$file_name,line=$line_number,col=$column_number::Not tested" + echo "::warning file=$file_name,line=$line_number::Not tested" fi done