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

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