gitea源码

symbol_extractor_test.go 2.4KB

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