Skip to content

Commit cda7151

Browse files
Migrated TestVersion from test_main.py to main_test.go
1 parent 0489aae commit cda7151

File tree

2 files changed

+43
-17
lines changed

2 files changed

+43
-17
lines changed

internal/integrationtest/main/main_test.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,13 @@
1616
package main_test
1717

1818
import (
19+
"encoding/json"
1920
"testing"
2021

2122
"github.com/arduino/arduino-cli/internal/integrationtest"
2223
"github.com/arduino/go-paths-helper"
2324
"github.com/stretchr/testify/require"
25+
semver "go.bug.st/relaxed-semver"
2426
"go.bug.st/testsuite"
2527
)
2628

@@ -39,3 +41,44 @@ func TestHelp(t *testing.T) {
3941
require.Empty(t, stderr)
4042
require.Contains(t, string(stdout), "Usage")
4143
}
44+
45+
func TestVersion(t *testing.T) {
46+
env := testsuite.NewEnvironment(t)
47+
defer env.CleanUp()
48+
49+
cli := integrationtest.NewArduinoCliWithinEnvironment(env, &integrationtest.ArduinoCLIConfig{
50+
ArduinoCLIPath: paths.New("..", "..", "..", "arduino-cli"),
51+
UseSharedStagingFolder: true,
52+
})
53+
54+
// Run version and check the output message
55+
stdout, stderr, err := cli.Run("version")
56+
require.NoError(t, err)
57+
require.Contains(t, string(stdout), "Version:")
58+
require.Contains(t, string(stdout), "Commit:")
59+
require.Empty(t, stderr)
60+
61+
// Checks if "version --format json" has a json as an output
62+
stdout, _, err = cli.Run("version", "--format", "json")
63+
require.NoError(t, err)
64+
var jsonMap map[string]string
65+
err = json.Unmarshal(stdout, &jsonMap)
66+
require.NoError(t, err)
67+
68+
// Checks if Application's value is arduino-cli
69+
require.Equal(t, jsonMap["Application"], "arduino-cli")
70+
71+
// Checks if VersionString's value is git-snapshot, nightly or a valid semantic versioning
72+
switch version := jsonMap["VersionString"]; version {
73+
case "git-snapshot":
74+
require.Contains(t, version, "git-snapshot")
75+
case "nigthly":
76+
require.Contains(t, version, "nightly")
77+
default:
78+
_, err = semver.Parse(version)
79+
require.NoError(t, err)
80+
}
81+
82+
// Checks if Commit's value is not empty
83+
require.NotEmpty(t, jsonMap["Commit"])
84+
}

test/test_main.py

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,6 @@
1818
import semver
1919
import yaml
2020

21-
22-
def test_version(run_command):
23-
result = run_command(["version"])
24-
assert result.ok
25-
assert "Version:" in result.stdout
26-
assert "Commit:" in result.stdout
27-
assert "" == result.stderr
28-
29-
result = run_command(["version", "--format", "json"])
30-
assert result.ok
31-
parsed_out = json.loads(result.stdout)
32-
assert parsed_out.get("Application", False) == "arduino-cli"
33-
version = parsed_out.get("VersionString", False)
34-
assert semver.VersionInfo.isvalid(version=version) or "git-snapshot" in version or "nightly" in version
35-
assert isinstance(parsed_out.get("Commit", False), str)
36-
37-
3821
def test_log_options(run_command, data_dir):
3922
"""
4023
using `version` as a test command

0 commit comments

Comments
 (0)