diff options
| author | Max Resnick <max@ofmax.li> | 2024-08-30 23:06:18 -0700 |
|---|---|---|
| committer | Max Resnick <max@ofmax.li> | 2024-08-30 23:06:18 -0700 |
| commit | 09e8ea66b75e8ac6e90942ab37814e9e1633afac (patch) | |
| tree | e56a5d71923e6a3b0a44f732629fafedfe6f971a /internal | |
| parent | 4d55e5d1dc56c421344f88aebf01deec2daa7bbe (diff) | |
| download | go-git-server-09e8ea66b75e8ac6e90942ab37814e9e1633afac.tar.gz | |
fix: handle basepath correctly
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/admin/model.go | 3 | ||||
| -rw-r--r-- | internal/admin/model_test.go | 29 | ||||
| -rw-r--r-- | internal/admin/service.go | 10 |
3 files changed, 37 insertions, 5 deletions
diff --git a/internal/admin/model.go b/internal/admin/model.go index cce61ce..84b3c89 100644 --- a/internal/admin/model.go +++ b/internal/admin/model.go @@ -166,11 +166,13 @@ func loadServerConfig(mgmtRepo bool, baseDir, configPath string) (*ServerRepos, err error ) if mgmtRepo { + slog.Debug("loading server config from git", "baseDir", baseDir, "configPath", configPath) configBytes, err = loadConfigFromGit(baseDir, configPath) if err != nil { return &ServerRepos{}, err } } else { + slog.Debug("loading server config from a file") configBytes, err = loadLocalFile(configPath) if err != nil { slog.Error("Local server config couldn't be loaded") @@ -182,6 +184,7 @@ func loadServerConfig(mgmtRepo bool, baseDir, configPath string) (*ServerRepos, if err != nil { return &ServerRepos{}, errors.New("could not parse gitserver config") } + config.basePath = baseDir return config, nil } diff --git a/internal/admin/model_test.go b/internal/admin/model_test.go index b0652f2..5317335 100644 --- a/internal/admin/model_test.go +++ b/internal/admin/model_test.go @@ -151,11 +151,36 @@ func TestLoadServerConfig(t *testing.T) { } }) - t.Run("testing server config from git", func(_ *testing.T) { - + t.Run("testing server config from git", func(t *testing.T) { + gitDir := t.TempDir() + if err := setupGit(gitDir); err != nil { + t.Fatal(err) + } + loadedFile, err := loadServerConfig(true, gitDir, "gitserver.yaml") + if err != nil { + t.Fatal(err) + } + // "go-git-server" + if loadedFile.basePath != gitDir { + t.Fatal(err) + } }) } +func setupGit(gitDir string) error { + // init git repo + repoPath := filepath.Join(gitDir, mgmtRepoName) + defaultConfigBytes, err := yaml.Marshal(defaultServerConfig) + if err != nil { + return err + } + + if err := configDefaultTestRepo(repoPath, defaultConfigBytes); err != nil { + return err + } + return nil +} + func TestLocalFile(t *testing.T) { localDir := t.TempDir() localFile := filepath.Join(localDir, "stuff.yaml") diff --git a/internal/admin/service.go b/internal/admin/service.go index d60a072..f3d705c 100644 --- a/internal/admin/service.go +++ b/internal/admin/service.go @@ -27,11 +27,15 @@ func (s *Servicer) Reload() { slog.Error("refusing to reload config") return } - oldConfig := s.Conf + slog.Debug("config base after load", "path", tmpConfig.basePath) + // copy + oldConfig := *s.Conf + slog.Debug("config base before copy", "path", s.Conf.basePath) s.Conf = tmpConfig + slog.Debug("config base after copy", "path", s.Conf.basePath) if err := s.InitServer(); err != nil { slog.Error("couldn't init server with new config, falling back", err) - s.Conf = oldConfig + s.Conf = &oldConfig if err := s.InitServer(); err != nil { slog.Error("couldn't init server with old config, falling back", err) panic("new and old config couldn't init server, no available config to run") @@ -66,6 +70,7 @@ func (s *Servicer) InitServer() error { } slog.Info("policy loaded") slog.Debug("init server", "repoDir", s.reposDir) + slog.Debug("init server", "repoDir", s.Conf.basePath) if err := s.Conf.ConfigureRepos(); err != nil { return fmt.Errorf("couldn't configure repos %w", err) } @@ -92,7 +97,6 @@ func NewService(modelPath, policyPath, serverConfigPath, reposDir string, mgmtRe } else if err != nil { return &Servicer{}, fmt.Errorf("Coudln't load server config. %w", err) } - conf.basePath = reposDir svc := &Servicer{ enf, conf, |