Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit61210d1

Browse files
committed
table test
1 parentf5f3d8d commit61210d1

File tree

1 file changed

+134
-95
lines changed

1 file changed

+134
-95
lines changed

‎cli/open_test.go‎

Lines changed: 134 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package cli_test
22

33
import (
4-
"context"
54
"net/url"
5+
"os"
6+
"path/filepath"
7+
"runtime"
8+
"strings"
69
"testing"
710

811
"github.com/stretchr/testify/assert"
@@ -20,101 +23,137 @@ import (
2023
funcTestOpen(t*testing.T) {
2124
t.Parallel()
2225

23-
t.Run("VS Code Local",func(t*testing.T) {
24-
t.Parallel()
25-
26-
client,workspace,agentToken:=setupWorkspaceForAgent(t,func(agents []*proto.Agent) []*proto.Agent {
27-
agents[0].Directory="/tmp"
28-
agents[0].Name="agent1"
29-
returnagents
30-
})
31-
32-
_=agenttest.New(t,client.URL,agentToken)
33-
_=coderdtest.AwaitWorkspaceAgents(t,client,workspace.ID)
34-
35-
inv,root:=clitest.New(t,"open","vscode","--test.no-open",workspace.Name)
36-
clitest.SetupConfig(t,client,root)
37-
pty:=ptytest.New(t)
38-
inv.Stdin=pty.Input()
39-
inv.Stdout=pty.Output()
40-
41-
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong)
42-
defercancel()
43-
44-
cmdDone:=tGo(t,func() {
45-
err:=inv.WithContext(ctx).Run()
46-
assert.NoError(t,err)
47-
})
48-
49-
me,err:=client.User(ctx,codersdk.Me)
50-
require.NoError(t,err)
51-
52-
// --test.no-open forces the command to print the URI.
53-
line:=pty.ReadLine(ctx)
54-
u,err:=url.ParseRequestURI(line)
55-
require.NoError(t,err,"line: %q",line)
56-
57-
qp:=u.Query()
58-
assert.Equal(t,client.URL.String(),qp.Get("url"))
59-
assert.Equal(t,me.Username,qp.Get("owner"))
60-
assert.Equal(t,workspace.Name,qp.Get("workspace"))
61-
assert.Equal(t,"agent1",qp.Get("agent"))
62-
assert.Contains(t,"tmp",qp.Get("folder"))// Soft check for windows compat.
63-
assert.Equal(t,"",qp.Get("token"))
64-
65-
<-cmdDone
26+
agentName:="agent1"
27+
agentDir:="/tmp"
28+
client,workspace,agentToken:=setupWorkspaceForAgent(t,func(agents []*proto.Agent) []*proto.Agent {
29+
agents[0].Directory=agentDir
30+
agents[0].Name=agentName
31+
returnagents
6632
})
67-
t.Run("VS Code Inside Workspace Prints URI",func(t*testing.T) {
68-
t.Parallel()
69-
70-
agentName:="agent1"
71-
client,workspace,agentToken:=setupWorkspaceForAgent(t,func(agents []*proto.Agent) []*proto.Agent {
72-
agents[0].Directory="/tmp"
73-
agents[0].Name=agentName
74-
returnagents
75-
})
7633

77-
_=agenttest.New(t,client.URL,agentToken)
78-
_=coderdtest.AwaitWorkspaceAgents(t,client,workspace.ID)
79-
80-
t.Log(client.SessionToken())
81-
82-
inv,root:=clitest.New(t,"open","vscode","--generate-token",workspace.Name)
83-
clitest.SetupConfig(t,client,root)
84-
85-
t.Log(root.Session().Read())
86-
87-
pty:=ptytest.New(t)
88-
inv.Stdin=pty.Input()
89-
inv.Stdout=pty.Output()
90-
91-
inv.Environ.Set("CODER","true")
92-
inv.Environ.Set("CODER_WORKSPACE_NAME",workspace.Name)
93-
inv.Environ.Set("CODER_WORKSPACE_AGENT_NAME",agentName)
94-
95-
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong)
96-
defercancel()
97-
98-
cmdDone:=tGo(t,func() {
99-
err:=inv.WithContext(ctx).Run()
100-
assert.NoError(t,err)
34+
_=agenttest.New(t,client.URL,agentToken)
35+
_=coderdtest.AwaitWorkspaceAgents(t,client,workspace.ID)
36+
37+
insideWorkspaceEnv:=map[string]string{
38+
"CODER":"true",
39+
"CODER_WORKSPACE_NAME":workspace.Name,
40+
"CODER_WORKSPACE_AGENT_NAME":agentName,
41+
}
42+
43+
wd,err:=os.Getwd()
44+
require.NoError(t,err)
45+
46+
tests:= []struct {
47+
namestring
48+
args []string
49+
envmap[string]string
50+
wantDirstring
51+
wantTokenbool
52+
wantErrorbool
53+
}{
54+
{
55+
name:"no args",
56+
wantError:true,
57+
},
58+
{
59+
name:"nonexistent workspace",
60+
args: []string{"--test.no-open",workspace.Name+"bad"},
61+
wantError:true,
62+
},
63+
{
64+
name:"ok",
65+
args: []string{"--test.no-open",workspace.Name},
66+
wantDir:agentDir,
67+
},
68+
{
69+
name:"relative path error",
70+
args: []string{"--test.no-open",workspace.Name,"my/relative/path"},
71+
wantError:true,
72+
},
73+
{
74+
name:"ok with abs path",
75+
args: []string{"--test.no-open",workspace.Name,agentDir},
76+
wantDir:agentDir,
77+
},
78+
{
79+
name:"ok with token",
80+
args: []string{"--test.no-open",workspace.Name,"--generate-token"},
81+
wantDir:agentDir,
82+
wantToken:true,
83+
},
84+
// Inside workspace, does not require --test.no-open.
85+
{
86+
name:"ok inside workspace",
87+
env:insideWorkspaceEnv,
88+
args: []string{workspace.Name},
89+
wantDir:agentDir,
90+
},
91+
{
92+
name:"ok inside workspace relative path",
93+
env:insideWorkspaceEnv,
94+
args: []string{workspace.Name,"foo"},
95+
wantDir:filepath.Join(wd,"foo"),
96+
},
97+
{
98+
name:"ok inside workspace token",
99+
env:insideWorkspaceEnv,
100+
args: []string{workspace.Name,"--generate-token"},
101+
wantDir:agentDir,
102+
wantToken:true,
103+
},
104+
}
105+
106+
for_,tt:=rangetests {
107+
tt:=tt
108+
t.Run(tt.name,func(t*testing.T) {
109+
t.Parallel()
110+
111+
inv,root:=clitest.New(t,append([]string{"open","vscode"},tt.args...)...)
112+
clitest.SetupConfig(t,client,root)
113+
pty:=ptytest.New(t)
114+
inv.Stdin=pty.Input()
115+
inv.Stdout=pty.Output()
116+
117+
ctx:=testutil.Context(t,testutil.WaitLong)
118+
inv=inv.WithContext(ctx)
119+
fork,v:=rangett.env {
120+
inv.Environ.Set(k,v)
121+
}
122+
123+
w:=clitest.StartWithWaiter(t,inv)
124+
125+
iftt.wantError {
126+
w.RequireError()
127+
return
128+
}
129+
130+
me,err:=client.User(ctx,codersdk.Me)
131+
require.NoError(t,err)
132+
133+
line:=pty.ReadLine(ctx)
134+
u,err:=url.ParseRequestURI(line)
135+
require.NoError(t,err,"line: %q",line)
136+
137+
qp:=u.Query()
138+
assert.Equal(t,client.URL.String(),qp.Get("url"))
139+
assert.Equal(t,me.Username,qp.Get("owner"))
140+
assert.Equal(t,workspace.Name,qp.Get("workspace"))
141+
assert.Equal(t,agentName,qp.Get("agent"))
142+
iftt.wantDir!="" {
143+
ifruntime.GOOS=="windows" {
144+
tt.wantDir=strings.TrimPrefix(tt.wantDir,"/")
145+
}
146+
assert.Contains(t,qp.Get("folder"),tt.wantDir)
147+
}else {
148+
assert.Empty(t,qp.Get("folder"))
149+
}
150+
iftt.wantToken {
151+
assert.NotEmpty(t,qp.Get("token"))
152+
}else {
153+
assert.Empty(t,qp.Get("token"))
154+
}
155+
156+
w.RequireSuccess()
101157
})
102-
103-
me,err:=client.User(ctx,codersdk.Me)
104-
require.NoError(t,err)
105-
106-
line:=pty.ReadLine(ctx)
107-
u,err:=url.ParseRequestURI(line)
108-
require.NoError(t,err,"line: %q",line)
109-
110-
qp:=u.Query()
111-
assert.Equal(t,client.URL.String(),qp.Get("url"))
112-
assert.Equal(t,me.Username,qp.Get("owner"))
113-
assert.Equal(t,workspace.Name,qp.Get("workspace"))
114-
assert.Equal(t,"agent1",qp.Get("agent"))
115-
assert.Equal(t,"/tmp",qp.Get("folder"))
116-
assert.NotEmpty(t,qp.Get("token"))
117-
118-
<-cmdDone
119-
})
158+
}
120159
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp