From b6ef9bc4e5441b61290b0610ef4995a020cbb366 Mon Sep 17 00:00:00 2001 From: Jared Allard Date: Sun, 24 Mar 2024 10:20:54 +0700 Subject: [PATCH] packages: add test --- internal/packages/packages_test.go | 21 ++++++++++++++++++ .../testdata/onepassword-cli-0-1.gpkg.tar | Bin 0 -> 20480 bytes 2 files changed, 21 insertions(+) create mode 100644 internal/packages/packages_test.go create mode 100644 internal/packages/testdata/onepassword-cli-0-1.gpkg.tar diff --git a/internal/packages/packages_test.go b/internal/packages/packages_test.go new file mode 100644 index 0000000..2256f45 --- /dev/null +++ b/internal/packages/packages_test.go @@ -0,0 +1,21 @@ +package packages_test + +import ( + "os" + "testing" + + "github.com/jaredallard/binhost/internal/packages" + "gotest.tools/v3/assert" +) + +func TestCanParseGpkg(t *testing.T) { + f, err := os.Open("testdata/onepassword-cli-0-1.gpkg.tar") + assert.NilError(t, err) + + pkg, err := packages.New(f) + assert.NilError(t, err) + + // Check that one field is set. Maybe one day check them all (I'm + // lazy) + assert.Equal(t, "onepassword-cli-0", pkg.PF) +} diff --git a/internal/packages/testdata/onepassword-cli-0-1.gpkg.tar b/internal/packages/testdata/onepassword-cli-0-1.gpkg.tar new file mode 100644 index 0000000000000000000000000000000000000000..cb392baa760d54130e9d78e2e1df035bba4da645 GIT binary patch literal 20480 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