You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

fixture_generation.go 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. // Copyright 2020 The Gitea Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package main
  5. import (
  6. "fmt"
  7. "os"
  8. "path/filepath"
  9. "code.gitea.io/gitea/models"
  10. "code.gitea.io/gitea/models/unittest"
  11. )
  12. // To generate derivative fixtures, execute the following from Gitea's repository base dir:
  13. // go run -tags 'sqlite sqlite_unlock_notify' contrib/fixtures/fixture_generation.go [fixture...]
  14. var (
  15. generators = []struct {
  16. gen func() (string, error)
  17. name string
  18. }{
  19. {
  20. models.GetYamlFixturesAccess, "access",
  21. },
  22. }
  23. fixturesDir string
  24. )
  25. func main() {
  26. pathToGiteaRoot := "."
  27. fixturesDir = filepath.Join(pathToGiteaRoot, "models", "fixtures")
  28. if err := unittest.CreateTestEngine(unittest.FixturesOptions{
  29. Dir: fixturesDir,
  30. }); err != nil {
  31. fmt.Printf("CreateTestEngine: %+v", err)
  32. os.Exit(1)
  33. }
  34. if err := unittest.PrepareTestDatabase(); err != nil {
  35. fmt.Printf("PrepareTestDatabase: %+v\n", err)
  36. os.Exit(1)
  37. }
  38. if len(os.Args) == 0 {
  39. for _, r := range os.Args {
  40. if err := generate(r); err != nil {
  41. fmt.Printf("generate '%s': %+v\n", r, err)
  42. os.Exit(1)
  43. }
  44. }
  45. } else {
  46. for _, g := range generators {
  47. if err := generate(g.name); err != nil {
  48. fmt.Printf("generate '%s': %+v\n", g.name, err)
  49. os.Exit(1)
  50. }
  51. }
  52. }
  53. }
  54. func generate(name string) error {
  55. for _, g := range generators {
  56. if g.name == name {
  57. data, err := g.gen()
  58. if err != nil {
  59. return err
  60. }
  61. path := filepath.Join(fixturesDir, name+".yml")
  62. if err := os.WriteFile(path, []byte(data), 0644); err != nil {
  63. return fmt.Errorf("%s: %+v", path, err)
  64. }
  65. fmt.Printf("%s created.\n", path)
  66. return nil
  67. }
  68. }
  69. return fmt.Errorf("generator not found")
  70. }