Skip to content

Commit d81f8f1

Browse files
Migrated TestLogOptions to main_test.go and deleted test_main.py
1 parent b1b228a commit d81f8f1

File tree

2 files changed

+64
-59
lines changed

2 files changed

+64
-59
lines changed

Diff for: internal/integrationtest/main/main_test.go

+64-7
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"github.com/stretchr/testify/require"
2626
semver "go.bug.st/relaxed-semver"
2727
"go.bug.st/testsuite"
28+
"go.bug.st/testsuite/requirejson"
2829
)
2930

3031
func TestHelp(t *testing.T) {
@@ -55,8 +56,8 @@ func TestVersion(t *testing.T) {
5556
// Run version and check the output message
5657
stdout, stderr, err := cli.Run("version")
5758
require.NoError(t, err)
58-
require.Contains(t, string(stdout), "Version")
59-
require.Contains(t, string(stdout), "Commit")
59+
require.Contains(t, string(stdout), "Version:")
60+
require.Contains(t, string(stdout), "Commit:")
6061
require.Empty(t, stderr)
6162

6263
// Checks if "version --format json" has a json as an output
@@ -69,8 +70,7 @@ func TestVersion(t *testing.T) {
6970
// Checks if Application's value is arduino-cli
7071
require.Equal(t, jsonMap["Application"], "arduino-cli")
7172

72-
// Checks if VersionString's value is git-snapshot,
73-
// nightly or a valid semantic versioning
73+
// Checks if VersionString's value is git-snapshot, nightly or a valid semantic versioning
7474
switch version := jsonMap["VersionString"]; version {
7575
case "git-snapshot":
7676
require.Contains(t, version, "git-snapshot")
@@ -85,9 +85,64 @@ func TestVersion(t *testing.T) {
8585
require.NotEmpty(t, jsonMap["Commit"])
8686
}
8787

88-
func TestInventoryCreation(t *testing.T) {
88+
func TestLogOptions(t *testing.T) {
8989
// Using version as a test command
90+
env := testsuite.NewEnvironment(t)
91+
defer env.CleanUp()
9092

93+
cli := integrationtest.NewArduinoCliWithinEnvironment(env, &integrationtest.ArduinoCLIConfig{
94+
ArduinoCLIPath: paths.New("..", "..", "..", "arduino-cli"),
95+
UseSharedStagingFolder: true,
96+
})
97+
98+
// No logs
99+
stdout, _, err := cli.Run("version")
100+
require.NoError(t, err)
101+
trimOut := strings.TrimSpace(string(stdout))
102+
outLines := strings.Split(trimOut, "\n")
103+
require.Len(t, outLines, 1)
104+
105+
// Plain text logs on stdout
106+
stdout, _, err = cli.Run("version", "-v")
107+
require.NoError(t, err)
108+
trimOut = strings.TrimSpace(string(stdout))
109+
outLines = strings.Split(trimOut, "\n")
110+
require.Greater(t, len(outLines), 1)
111+
require.True(t, strings.HasPrefix(outLines[0], "\x1b[36mINFO\x1b[0m")) // account for the colors
112+
113+
// Plain text logs on file
114+
logFile := cli.DataDir().Join("log.txt")
115+
_, _, err = cli.Run("version", "--log-file", logFile.String())
116+
require.NoError(t, err)
117+
lines, _ := logFile.ReadFileAsLines()
118+
require.True(t, strings.HasPrefix(lines[0], "time=\""))
119+
120+
// json on stdout
121+
stdout, _, err = cli.Run("version", "-v", "--log-format", "JSON")
122+
require.NoError(t, err)
123+
trimOut = strings.TrimSpace(string(stdout))
124+
outLines = strings.Split(trimOut, "\n")
125+
requirejson.Contains(t, []byte(outLines[0]), `{ "level" }`)
126+
127+
// Check if log.json contains readable json in each line
128+
var v interface{}
129+
logFileJson := cli.DataDir().Join("log.json")
130+
_, _, err = cli.Run("version", "--log-format", "JSON", "--log-file", logFileJson.String())
131+
require.NoError(t, err)
132+
fileContent, err := logFileJson.ReadFileAsLines()
133+
require.NoError(t, err)
134+
for _, line := range fileContent {
135+
// exclude empty lines since they are not valid json
136+
if line == "" {
137+
continue
138+
}
139+
err = json.Unmarshal([]byte(line), &v)
140+
require.NoError(t, err)
141+
}
142+
}
143+
144+
func TestInventoryCreation(t *testing.T) {
145+
// Using version as a test command
91146
env := testsuite.NewEnvironment(t)
92147
defer env.CleanUp()
93148

@@ -97,13 +152,15 @@ func TestInventoryCreation(t *testing.T) {
97152
})
98153

99154
// no logs
100-
stdout, _, _ := cli.Run("version")
155+
stdout, _, err := cli.Run("version")
156+
require.NoError(t, err)
101157
line := strings.TrimSpace(string(stdout))
102158
outLines := strings.Split(line, "\n")
103159
require.Len(t, outLines, 1)
104160

105161
// parse inventory file
106162
inventoryFile := cli.DataDir().Join("inventory.yaml")
107-
stream, _ := inventoryFile.ReadFile()
163+
stream, err := inventoryFile.ReadFile()
164+
require.NoError(t, err)
108165
require.True(t, strings.Contains(string(stream), "installation"))
109166
}

Diff for: test/test_main.py

-52
This file was deleted.

0 commit comments

Comments
 (0)