code.gitea.io/gitea@v1.19.3/modules/packages/nuget/symbol_extractor_test.go (about) 1 // Copyright 2022 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package nuget 5 6 import ( 7 "archive/zip" 8 "bytes" 9 "encoding/base64" 10 "testing" 11 12 "github.com/stretchr/testify/assert" 13 ) 14 15 const pdbContent = `QlNKQgEAAQAAAAAADAAAAFBEQiB2MS4wAAAAAAAABgB8AAAAWAAAACNQZGIAAAAA1AAAAAgBAAAj 16 fgAA3AEAAAQAAAAjU3RyaW5ncwAAAADgAQAABAAAACNVUwDkAQAAMAAAACNHVUlEAAAAFAIAACgB 17 AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==` 18 19 func TestExtractPortablePdb(t *testing.T) { 20 createArchive := func(name string, content []byte) []byte { 21 var buf bytes.Buffer 22 archive := zip.NewWriter(&buf) 23 w, _ := archive.Create(name) 24 w.Write(content) 25 archive.Close() 26 return buf.Bytes() 27 } 28 29 t.Run("MissingPdbFiles", func(t *testing.T) { 30 var buf bytes.Buffer 31 zip.NewWriter(&buf).Close() 32 33 pdbs, err := ExtractPortablePdb(bytes.NewReader(buf.Bytes()), int64(buf.Len())) 34 assert.ErrorIs(t, err, ErrMissingPdbFiles) 35 assert.Empty(t, pdbs) 36 }) 37 38 t.Run("InvalidFiles", func(t *testing.T) { 39 data := createArchive("sub/test.bin", []byte{}) 40 41 pdbs, err := ExtractPortablePdb(bytes.NewReader(data), int64(len(data))) 42 assert.ErrorIs(t, err, ErrInvalidFiles) 43 assert.Empty(t, pdbs) 44 }) 45 46 t.Run("Valid", func(t *testing.T) { 47 b, _ := base64.StdEncoding.DecodeString(pdbContent) 48 data := createArchive("test.pdb", b) 49 50 pdbs, err := ExtractPortablePdb(bytes.NewReader(data), int64(len(data))) 51 assert.NoError(t, err) 52 assert.Len(t, pdbs, 1) 53 assert.Equal(t, "test.pdb", pdbs[0].Name) 54 assert.Equal(t, "d910bb6948bd4c6cb40155bcf52c3c94", pdbs[0].ID) 55 pdbs.Close() 56 }) 57 } 58 59 func TestParseDebugHeaderID(t *testing.T) { 60 t.Run("InvalidPdbMagicNumber", func(t *testing.T) { 61 id, err := ParseDebugHeaderID(bytes.NewReader([]byte{0, 0, 0, 0})) 62 assert.ErrorIs(t, err, ErrInvalidPdbMagicNumber) 63 assert.Empty(t, id) 64 }) 65 66 t.Run("MissingPdbStream", func(t *testing.T) { 67 b, _ := base64.StdEncoding.DecodeString(`QlNKQgEAAQAAAAAADAAAAFBEQiB2MS4wAAAAAAAAAQB8AAAAWAAAACNVUwA=`) 68 69 id, err := ParseDebugHeaderID(bytes.NewReader(b)) 70 assert.ErrorIs(t, err, ErrMissingPdbStream) 71 assert.Empty(t, id) 72 }) 73 74 t.Run("Valid", func(t *testing.T) { 75 b, _ := base64.StdEncoding.DecodeString(pdbContent) 76 77 id, err := ParseDebugHeaderID(bytes.NewReader(b)) 78 assert.NoError(t, err) 79 assert.Equal(t, "d910bb6948bd4c6cb40155bcf52c3c94", id) 80 }) 81 }