feat(client): lodge remote binds a repository to another server
This commit is contained in:
1 parent
45c81cfcaf
commit
91d83f3032
10 files changed
+639
-147
No files matched your search
@@ -19,6 +19,7 @@ const adminToken = "admin"
|
||||
|
||||
type machine struct {
|
||||
t *testing.T
|
||||
config *Config
|
||||
client *Client
|
||||
root string
|
||||
}
|
||||
@@ -34,7 +35,7 @@ func git(t *testing.T, dir string, args ...string) string {
|
||||
return string(out)
|
||||
}
|
||||
|
||||
func setup(t *testing.T) (*machine, *machine) {
|
||||
func newServer(t *testing.T) string {
|
||||
t.Helper()
|
||||
store, err := server.OpenStore(filepath.Join(t.TempDir(), "lodge.db"))
|
||||
if err != nil {
|
||||
@@ -43,22 +44,41 @@ func setup(t *testing.T) (*machine, *machine) {
|
||||
t.Cleanup(func() { store.Close() })
|
||||
api := httptest.NewServer(server.New(store, server.Config{AdminToken: adminToken}))
|
||||
t.Cleanup(api.Close)
|
||||
return api.URL
|
||||
}
|
||||
|
||||
func newOrigin(t *testing.T) string {
|
||||
t.Helper()
|
||||
origin := t.TempDir()
|
||||
git(t, origin, "init", "-b", "main")
|
||||
write(t, origin, "README.md", "readme")
|
||||
write(t, origin, "docs/agents/tracked.md", "in git")
|
||||
git(t, origin, "add", ".")
|
||||
git(t, origin, "commit", "-m", "root")
|
||||
git(t, origin, "commit", "-m", "root "+origin)
|
||||
return origin
|
||||
}
|
||||
|
||||
machines := [2]*machine{}
|
||||
for i := range machines {
|
||||
root := filepath.Join(t.TempDir(), "clone")
|
||||
git(t, origin, "clone", origin, root)
|
||||
resolved, _ := filepath.EvalSymlinks(root)
|
||||
machines[i] = &machine{t: t, root: resolved, client: &Client{URL: api.URL, Token: adminToken, DataDir: t.TempDir()}}
|
||||
func newMachine(t *testing.T, origin, url, token string) *machine {
|
||||
t.Helper()
|
||||
cfg := &Config{URL: url, Token: token, DataDir: t.TempDir(), path: filepath.Join(t.TempDir(), "config.json")}
|
||||
if err := writeJSONFile(cfg.path, cfg); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
return machines[0], machines[1]
|
||||
return &machine{t: t, config: cfg, client: &Client{URL: url, Token: token, DataDir: cfg.DataDir}, root: clone(t, origin)}
|
||||
}
|
||||
|
||||
func clone(t *testing.T, origin string) string {
|
||||
t.Helper()
|
||||
root := filepath.Join(t.TempDir(), "clone")
|
||||
git(t, origin, "clone", origin, root)
|
||||
resolved, _ := filepath.EvalSymlinks(root)
|
||||
return resolved
|
||||
}
|
||||
|
||||
func setup(t *testing.T) (*machine, *machine) {
|
||||
t.Helper()
|
||||
url, origin := newServer(t), newOrigin(t)
|
||||
return newMachine(t, origin, url, adminToken), newMachine(t, origin, url, adminToken)
|
||||
}
|
||||
|
||||
func write(t *testing.T, root, path, content string) {
|
||||
@@ -70,7 +90,7 @@ func write(t *testing.T, root, path, content string) {
|
||||
|
||||
func (m *machine) sync() Result {
|
||||
m.t.Helper()
|
||||
res, err := m.client.Sync(context.Background(), m.root, true)
|
||||
res, err := m.config.Sync(context.Background(), m.root, true)
|
||||
if err != nil {
|
||||
m.t.Fatal(err)
|
||||
}
|
||||
@@ -130,7 +150,7 @@ func TestBranchNotesFollowTheBranchAndSharedStay(t *testing.T) {
|
||||
mac.sync()
|
||||
|
||||
git(t, mac.root, "checkout", "main")
|
||||
if _, err := mac.client.Sync(context.Background(), mac.root, false); err != nil {
|
||||
if _, err := mac.config.Sync(context.Background(), mac.root, false); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
mac.expect(".agent/plan.md", "main plan")
|
||||
|
||||
Reference in new issue
Block a user