Skip to content

Commit 8aacdb7

Browse files
authored
refactor(e2e): test suite to use ginkgo.Describe (#569)
Signed-off-by: Samuel K <skevetter@pm.me>
1 parent 2eca32e commit 8aacdb7

File tree

19 files changed

+998
-1159
lines changed

19 files changed

+998
-1159
lines changed

e2e/tests/build/build.go

Lines changed: 301 additions & 342 deletions
Large diffs are not rendered by default.

e2e/tests/build/framework.go

Lines changed: 0 additions & 8 deletions
This file was deleted.

e2e/tests/context/context.go

Lines changed: 39 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -9,42 +9,56 @@ import (
99
"github.com/skevetter/devpod/e2e/framework"
1010
)
1111

12-
var _ = DevPodDescribe("devpod context test suite", func() {
13-
ginkgo.Context("testing context command", ginkgo.Label("context"), ginkgo.Ordered, func() {
14-
ctx := context.Background()
15-
initialDir, err := os.Getwd()
16-
if err != nil {
17-
panic(err)
18-
}
19-
20-
ginkgo.It("create a new context, switch to it and delete afterwards", func() {
21-
f := framework.NewDefaultFramework(initialDir + "/bin")
22-
23-
err = f.DevPodContextCreate(ctx, "test-context")
12+
var _ = ginkgo.Describe(
13+
"devpod context test suite",
14+
ginkgo.Label("context"),
15+
ginkgo.Ordered,
16+
func() {
17+
var initialDir string
18+
19+
ginkgo.BeforeAll(func() {
20+
var err error
21+
initialDir, err = os.Getwd()
2422
framework.ExpectNoError(err)
23+
})
2524

26-
err = f.DevPodContextUse(context.Background(), "test-context")
27-
framework.ExpectNoError(err)
25+
ginkgo.It(
26+
"create a new context, switch to it and delete afterwards",
27+
func(ctx context.Context) {
28+
f := framework.NewDefaultFramework(initialDir + "/bin")
2829

29-
err = f.DevPodContextDelete(context.Background(), "test-context")
30-
framework.ExpectNoError(err)
31-
})
30+
var err error
31+
err = f.DevPodContextCreate(ctx, "test-context")
32+
framework.ExpectNoError(err)
3233

33-
ginkgo.It("should use shared context in IDE commands", func() {
34+
ginkgo.DeferCleanup(func(cleanupCtx context.Context) {
35+
cleanupErr := f.DevPodContextDelete(cleanupCtx, "test-context")
36+
framework.ExpectNoError(cleanupErr)
37+
})
38+
39+
err = f.DevPodContextUse(ctx, "test-context")
40+
framework.ExpectNoError(err)
41+
},
42+
)
43+
44+
ginkgo.It("should use shared context in IDE commands", func(ctx context.Context) {
3445
f := framework.NewDefaultFramework(initialDir + "/bin")
3546

3647
contextA := "test-ctx-a-ide"
3748
contextB := "test-ctx-b-ide"
3849

50+
var err error
3951
err = f.DevPodContextCreate(ctx, contextA)
4052
framework.ExpectNoError(err)
53+
ginkgo.DeferCleanup(func(cleanupCtx context.Context) {
54+
_ = f.DevPodContextDelete(cleanupCtx, contextA)
55+
})
4156

4257
err = f.DevPodContextCreate(ctx, contextB)
4358
framework.ExpectNoError(err)
44-
45-
ginkgo.DeferCleanup(func() {
46-
_ = f.DevPodContextDelete(ctx, contextA)
47-
_ = f.DevPodContextDelete(ctx, contextB)
59+
ginkgo.DeferCleanup(func(cleanupCtx context.Context) {
60+
err = f.DevPodContextDelete(cleanupCtx, contextB)
61+
framework.ExpectNoError(err)
4862
})
4963

5064
err = f.DevPodContextUse(ctx, contextA)
@@ -87,8 +101,7 @@ var _ = DevPodDescribe("devpod context test suite", func() {
87101
ginkgo.Fail("IDE was not set in context-b as expected")
88102
}
89103

90-
err = os.Setenv("DEVPOD_CONTEXT", contextB)
91-
framework.ExpectNoError(err)
104+
ginkgo.GinkgoT().Setenv("DEVPOD_CONTEXT", contextB)
92105

93106
output, err = f.DevPodIDEList(ctx, "--output", "json")
94107
framework.ExpectNoError(err)
@@ -111,5 +124,5 @@ var _ = DevPodDescribe("devpod context test suite", func() {
111124
)
112125
}
113126
})
114-
})
115-
})
127+
},
128+
)

e2e/tests/context/framework.go

Lines changed: 0 additions & 8 deletions
This file was deleted.

e2e/tests/ide/framework.go

Lines changed: 0 additions & 8 deletions
This file was deleted.

e2e/tests/ide/ide.go

Lines changed: 31 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,50 +8,47 @@ import (
88
"github.com/skevetter/devpod/e2e/framework"
99
)
1010

11-
var _ = DevPodDescribe("devpod ide test suite", func() {
12-
ginkgo.Context("testing ides", ginkgo.Label("ide"), ginkgo.Ordered, func() {
13-
var initialDir string
11+
var _ = ginkgo.Describe("devpod ide test suite", ginkgo.Label("ide"), ginkgo.Ordered, func() {
12+
var initialDir string
1413

15-
ginkgo.BeforeEach(func() {
16-
var err error
17-
initialDir, err = os.Getwd()
18-
framework.ExpectNoError(err)
19-
})
14+
ginkgo.BeforeEach(func() {
15+
var err error
16+
initialDir, err = os.Getwd()
17+
framework.ExpectNoError(err)
18+
})
2019

21-
ginkgo.It("start ides", func() {
22-
ctx := context.Background()
20+
ginkgo.It("start ides", func(ctx context.Context) {
21+
f := framework.NewDefaultFramework(initialDir + "/bin")
22+
tempDir, err := framework.CopyToTempDir("tests/ide/testdata")
23+
framework.ExpectNoError(err)
2324

24-
f := framework.NewDefaultFramework(initialDir + "/bin")
25-
tempDir, err := framework.CopyToTempDir("tests/ide/testdata")
26-
framework.ExpectNoError(err)
27-
ginkgo.DeferCleanup(framework.CleanupTempDir, initialDir, tempDir)
25+
err = f.DevPodProviderAdd(ctx, "docker")
26+
framework.ExpectNoError(err)
27+
err = f.DevPodProviderUse(ctx, "docker")
28+
framework.ExpectNoError(err)
2829

29-
_ = f.DevPodProviderDelete(ctx, "docker")
30-
err = f.DevPodProviderAdd(ctx, "docker")
31-
framework.ExpectNoError(err)
32-
err = f.DevPodProviderUse(context.Background(), "docker")
30+
ginkgo.DeferCleanup(func(cleanupCtx context.Context) {
31+
err = f.DevPodWorkspaceDelete(cleanupCtx, tempDir)
3332
framework.ExpectNoError(err)
33+
})
3434

35-
ginkgo.DeferCleanup(f.DevPodWorkspaceDelete, context.Background(), tempDir)
36-
37-
err = f.DevPodUpWithIDE(ctx, tempDir, "--open-ide=false", "--ide=vscode")
38-
framework.ExpectNoError(err)
35+
err = f.DevPodUpWithIDE(ctx, tempDir, "--open-ide=false", "--ide=vscode")
36+
framework.ExpectNoError(err)
3937

40-
err = f.DevPodUpWithIDE(ctx, tempDir, "--open-ide=false", "--ide=openvscode")
41-
framework.ExpectNoError(err)
38+
err = f.DevPodUpWithIDE(ctx, tempDir, "--open-ide=false", "--ide=openvscode")
39+
framework.ExpectNoError(err)
4240

43-
err = f.DevPodUpWithIDE(ctx, tempDir, "--open-ide=false", "--ide=jupyternotebook")
44-
framework.ExpectNoError(err)
41+
err = f.DevPodUpWithIDE(ctx, tempDir, "--open-ide=false", "--ide=jupyternotebook")
42+
framework.ExpectNoError(err)
4543

46-
// TODO: Fix broken IDE
47-
// err = f.DevPodUpWithIDE(ctx, tempDir, "--open-ide=false", "--ide=fleet")
48-
// framework.ExpectNoError(err)
44+
// TODO: Fix broken IDE
45+
// err = f.DevPodUpWithIDE(ctx, tempDir, "--open-ide=false", "--ide=fleet")
46+
// framework.ExpectNoError(err)
4947

50-
// check if ssh works
51-
err = f.DevPodSSHEchoTestString(ctx, tempDir)
52-
framework.ExpectNoError(err)
48+
// check if ssh works
49+
err = f.DevPodSSHEchoTestString(ctx, tempDir)
50+
framework.ExpectNoError(err)
5351

54-
// TODO: test jetbrains ides
55-
})
52+
// TODO: test jetbrains ides
5653
})
5754
})

e2e/tests/integration/framework.go

Lines changed: 0 additions & 8 deletions
This file was deleted.

e2e/tests/integration/integration.go

Lines changed: 32 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package integration
22

33
import (
44
"context"
5-
"fmt"
65
"os"
76
"os/exec"
87
"path/filepath"
@@ -11,21 +10,21 @@ import (
1110
"github.com/skevetter/devpod/e2e/framework"
1211
)
1312

14-
var _ = ginkgo.Describe("[integration]: devpod provider ssh test suite", ginkgo.Ordered, func() {
15-
ginkgo.Context(
16-
"testing provider integration",
17-
ginkgo.Label("integration"),
18-
ginkgo.Ordered,
19-
func() {
20-
var initialDir string
21-
22-
ginkgo.BeforeEach(func() {
23-
var err error
24-
initialDir, err = os.Getwd()
25-
framework.ExpectNoError(err)
26-
})
27-
28-
ginkgo.It("should generate ssh keypairs", func(ctx context.Context) {
13+
var _ = ginkgo.Describe(
14+
"devpod provider ssh test suite",
15+
ginkgo.Label("integration"),
16+
func() {
17+
var initialDir string
18+
19+
ginkgo.BeforeEach(func() {
20+
var err error
21+
initialDir, err = os.Getwd()
22+
framework.ExpectNoError(err)
23+
})
24+
25+
ginkgo.It(
26+
"should setup ssh, add provider, run workspace, test ssh, and cleanup",
27+
func(ctx context.Context) {
2928
sshDir := os.Getenv("HOME") + "/.ssh"
3029
if _, err := os.Stat(sshDir); os.IsNotExist(err) {
3130
err = os.MkdirAll(sshDir, 0o700)
@@ -38,7 +37,7 @@ var _ = ginkgo.Describe("[integration]: devpod provider ssh test suite", ginkgo.
3837

3938
_, err := os.Stat(sshKeyPath)
4039
if err != nil {
41-
fmt.Println("generating ssh keys")
40+
ginkgo.GinkgoWriter.Println("generating ssh keys")
4241
// #nosec G204 -- ssh-keygen with fixed arguments for test setup
4342
cmd := exec.CommandContext(
4443
ctx,
@@ -69,51 +68,31 @@ var _ = ginkgo.Describe("[integration]: devpod provider ssh test suite", ginkgo.
6968
framework.ExpectNoError(err)
7069

7170
authorizedKeysPath := filepath.Join(homeDir, ".ssh", "authorized_keys")
72-
_, err = os.Stat(authorizedKeysPath)
73-
if err != nil {
74-
err = os.WriteFile(authorizedKeysPath, publicKey, 0o600)
75-
framework.ExpectNoError(err)
76-
} else {
77-
f, err := os.OpenFile(os.Getenv("HOME")+"/.ssh/authorized_keys",
78-
os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0o600)
79-
framework.ExpectNoError(err)
80-
81-
defer func() { _ = f.Close() }()
82-
_, err = f.Write(publicKey)
83-
framework.ExpectNoError(err)
84-
}
85-
})
71+
err = os.WriteFile(authorizedKeysPath, publicKey, 0o600)
72+
framework.ExpectNoError(err)
8673

87-
ginkgo.It("should add provider to devpod", func(ctx context.Context) {
8874
f := framework.NewDefaultFramework(initialDir + "/bin")
8975
// ensure we don't have the ssh provider present
90-
err := f.DevPodProviderDelete(ctx, "ssh")
91-
if err != nil {
92-
fmt.Println("warning: " + err.Error())
93-
}
76+
_ = f.DevPodProviderDelete(ctx, "ssh")
9477

9578
err = f.DevPodProviderAdd(ctx, "ssh", "-o", "HOST=localhost")
9679
framework.ExpectNoError(err)
97-
})
80+
ginkgo.DeferCleanup(func(cleanupCtx context.Context) {
81+
err = f.DevPodProviderDelete(cleanupCtx, "ssh")
82+
framework.ExpectNoError(err)
83+
})
9884

99-
ginkgo.It("should run devpod up", func(ctx context.Context) {
100-
f := framework.NewDefaultFramework(initialDir + "/bin")
101-
err := f.DevPodUp(ctx, "tests/integration/testdata/")
85+
err = f.DevPodUp(ctx, "tests/integration/testdata/")
10286
framework.ExpectNoError(err)
103-
})
87+
ginkgo.DeferCleanup(func(cleanupCtx context.Context) {
88+
err = f.DevPodWorkspaceDelete(cleanupCtx, "testdata")
89+
framework.ExpectNoError(err)
90+
})
10491

105-
ginkgo.It("should run commands to workspace via ssh", func(ctx context.Context) {
106-
f := framework.NewDefaultFramework(initialDir + "/bin")
10792
out, err := f.DevPodSSH(ctx, "testdata", "echo test")
10893
framework.ExpectNoError(err)
10994
framework.ExpectEqual(out, "test\n")
110-
})
111-
112-
ginkgo.It("should cleanup devpod workspace", func(ctx context.Context) {
113-
f := framework.NewDefaultFramework(initialDir + "/bin")
114-
err := f.DevPodWorkspaceDelete(ctx, "testdata")
115-
framework.ExpectNoError(err)
116-
})
117-
},
118-
)
119-
})
95+
},
96+
)
97+
},
98+
)

e2e/tests/machine/create.go

Lines changed: 0 additions & 50 deletions
This file was deleted.

0 commit comments

Comments
 (0)