| package main |
| |
| import ( |
| "crypto/sha256" |
| "encoding/hex" |
| "os" |
| "path/filepath" |
| "testing" |
| |
| "github.com/stretchr/testify/assert" |
| "github.com/stretchr/testify/require" |
| ) |
| |
| func TestExtract_MultipleFilesInArchive(t *testing.T) { |
| outputDir := t.TempDir() |
| |
| // We expect to find 3 files in the output directory, called test1, test2, and test3 |
| // They were filled with 1024 random bytes at creation and have distinct sha256 hashes. |
| require.NoError(t, extract("testdata/ar_archive.ar", outputDir)) |
| |
| verifyFile := func(name, sha256Hash string) { |
| b, err := os.ReadFile(filepath.Join(outputDir, name)) |
| require.NoError(t, err) |
| h := sha256.Sum256(b) |
| actualHash := hex.EncodeToString(h[:]) |
| assert.Equal(t, sha256Hash, actualHash, "Wrong hash for file %s", name) |
| } |
| // These hashes were produced manually by extracting the archive and using sha256sum |
| verifyFile("test1", "75672462a61dbcf8df0f6e722f715a6e674e9d24faebf683953c0b4fe0c89a8c") |
| verifyFile("test2", "e4d0969bc21f51ebb2328d2354c62ff3b17eb46c37b039a7f967fd03fccbe6c2") |
| verifyFile("test3", "3afd01133a953573fce7b189c99bdaa10739bee5b2efd9c34baa4ed31cb6fb72") |
| } |