Skip to content

Commit 5beb8d1

Browse files
authored
[test] additional tests for devbox init and run (#516)
## Summary Title says it. ## How was it tested? Ran the tests locally and it succeeded
1 parent fb18b8e commit 5beb8d1

File tree

4 files changed

+91
-34
lines changed

4 files changed

+91
-34
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Copyright 2023 Jetpack Technologies Inc and contributors. All rights reserved.
2+
// Use of this source code is governed by the license in the LICENSE file.
3+
package testinit
4+
5+
import (
6+
"os/exec"
7+
"testing"
8+
9+
"github.com/stretchr/testify/assert"
10+
"go.jetpack.io/devbox/examples/testdata/testframework"
11+
)
12+
13+
func TestInit(t *testing.T) {
14+
td := testframework.Open()
15+
_, err := td.Init()
16+
assert.NoError(t, err)
17+
assert.FileExists(t, "devbox.json")
18+
}
19+
20+
func TestInitRecommendation(t *testing.T) {
21+
td := testframework.Open()
22+
err := exec.Command("touch", "package.json").Run()
23+
assert.NoError(t, err)
24+
err = exec.Command("touch", "requirements.txt").Run()
25+
assert.NoError(t, err)
26+
output, err := td.Init()
27+
assert.NoError(t, err)
28+
assert.FileExists(t, "devbox.json")
29+
assert.Contains(t, output, "We detected extra packages you may need.")
30+
assert.Contains(t, output, "devbox add")
31+
assert.Contains(t, output, "nodejs")
32+
assert.Contains(t, output, "python3")
33+
}

examples/testdata/commands/run/run_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,17 @@ func TestRun(t *testing.T) {
1616
_, err = td.Run("test1")
1717
assert.NoError(t, err)
1818
}
19+
20+
func TestRunCommand(t *testing.T) {
21+
td := testframework.Open()
22+
err := td.SetDevboxJson("devbox.json")
23+
assert.NoError(t, err)
24+
25+
_, err = td.Run("ls > test.txt")
26+
assert.NoError(t, err)
27+
assert.FileExists(t, "test.txt")
28+
29+
_, err = td.Run("rm test.txt")
30+
assert.NoError(t, err)
31+
assert.NoFileExists(t, "test.txt")
32+
}

examples/testdata/testframework/impl/framework.go

Lines changed: 43 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -18,27 +18,54 @@ type TestDevbox struct {
1818
devboxJsonPath string
1919
}
2020

21-
func (td *TestDevbox) Info(pkg string, markdown bool) (string, error) {
22-
cmd := boxcli.InfoCmd()
23-
output, err := runCmd(cmd, []string{pkg}, false)
21+
func (td *TestDevbox) SetDevboxJson(path string) error {
22+
td.devboxJsonPath = path
23+
return nil
24+
}
25+
26+
func (td *TestDevbox) GetDevboxJson() (*impl.Config, error) {
27+
file, err := os.ReadFile(td.devboxJsonPath)
28+
if err != nil {
29+
return nil, errors.WithStack(err)
30+
}
31+
data := &impl.Config{}
32+
err = json.Unmarshal(file, &data)
33+
if err != nil {
34+
return nil, errors.WithStack(err)
35+
}
36+
return data, nil
37+
}
38+
39+
func (td *TestDevbox) Add(pkgs ...string) (string, error) {
40+
cmd := boxcli.AddCmd()
41+
output, err := runCmd(cmd, pkgs)
2442
if err != nil {
2543
return "", errors.WithStack(err)
2644
}
2745
return string(output), nil
2846
}
2947

30-
func (td *TestDevbox) Version() (string, error) {
31-
cmd := boxcli.VersionCmd()
32-
output, err := runCmd(cmd, nil, false)
48+
func (td *TestDevbox) Generate(subcommand string) (string, error) {
49+
cmd := boxcli.GenerateCmd()
50+
output, err := runCmd(cmd, []string{subcommand})
3351
if err != nil {
3452
return "", errors.WithStack(err)
3553
}
3654
return string(output), nil
3755
}
3856

39-
func (td *TestDevbox) Add(pkgs ...string) (string, error) {
40-
cmd := boxcli.AddCmd()
41-
output, err := runCmd(cmd, pkgs, false)
57+
func (td *TestDevbox) Info(pkg string, markdown bool) (string, error) {
58+
cmd := boxcli.InfoCmd()
59+
output, err := runCmd(cmd, []string{pkg})
60+
if err != nil {
61+
return "", errors.WithStack(err)
62+
}
63+
return string(output), nil
64+
}
65+
66+
func (td *TestDevbox) Init() (string, error) {
67+
cmd := boxcli.InitCmd()
68+
output, err := runCmd(cmd, nil)
4269
if err != nil {
4370
return "", errors.WithStack(err)
4471
}
@@ -47,7 +74,7 @@ func (td *TestDevbox) Add(pkgs ...string) (string, error) {
4774

4875
func (td *TestDevbox) Rm(pkgs ...string) (string, error) {
4976
cmd := boxcli.RemoveCmd()
50-
output, err := runCmd(cmd, pkgs, false)
77+
output, err := runCmd(cmd, pkgs)
5178
if err != nil {
5279
return "", errors.WithStack(err)
5380
}
@@ -56,7 +83,7 @@ func (td *TestDevbox) Rm(pkgs ...string) (string, error) {
5683

5784
func (td *TestDevbox) Run(script string) (string, error) {
5885
cmd := boxcli.RunCmd()
59-
output, err := runCmd(cmd, []string{script}, true)
86+
output, err := runCmd(cmd, []string{script})
6087
if err != nil {
6188
return "", errors.WithStack(err)
6289
}
@@ -65,45 +92,27 @@ func (td *TestDevbox) Run(script string) (string, error) {
6592

6693
func (td *TestDevbox) Shell() (string, error) {
6794
cmd := boxcli.ShellCmd()
68-
output, err := runCmd(cmd, nil, false)
95+
output, err := runCmd(cmd, nil)
6996
if err != nil {
7097
return "", errors.WithStack(err)
7198
}
7299
return string(output), nil
73100
}
74101

75-
func (td *TestDevbox) Generate(subcommand string) (string, error) {
76-
cmd := boxcli.GenerateCmd()
77-
output, err := runCmd(cmd, []string{subcommand}, false)
102+
func (td *TestDevbox) Version() (string, error) {
103+
cmd := boxcli.VersionCmd()
104+
output, err := runCmd(cmd, nil)
78105
if err != nil {
79106
return "", errors.WithStack(err)
80107
}
81108
return string(output), nil
82109
}
83110

84-
func (td *TestDevbox) SetDevboxJson(path string) error {
85-
td.devboxJsonPath = path
86-
return nil
87-
}
88-
89-
func (td *TestDevbox) GetDevboxJson() (*impl.Config, error) {
90-
file, err := os.ReadFile(td.devboxJsonPath)
91-
if err != nil {
92-
return nil, errors.WithStack(err)
93-
}
94-
data := &impl.Config{}
95-
err = json.Unmarshal(file, &data)
96-
if err != nil {
97-
return nil, errors.WithStack(err)
98-
}
99-
return data, nil
100-
}
101-
102111
func Open() *TestDevbox {
103112
return &TestDevbox{}
104113
}
105114

106-
func runCmd(cmd *cobra.Command, args []string, useStderr bool) (string, error) {
115+
func runCmd(cmd *cobra.Command, args []string) (string, error) {
107116
b := bytes.NewBufferString("")
108117
cmd.SetErr(b)
109118
cmd.SetOut(b)

examples/testdata/testframework/interface.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ type TestDevbox interface {
1616
Add(pkgs ...string) (string, error)
1717
Generate(subcommand string) (string, error)
1818
Info(pkg string, markdown bool) (string, error)
19+
Init() (string, error)
1920
Rm(pkgs ...string) (string, error)
2021
Run(script string) (string, error)
2122
Shell() (string, error)

0 commit comments

Comments
 (0)