Skip to content

Commit 9fcbd7d

Browse files
committed
Add integration test for Mise config validation
1 parent 5aaf4ff commit 9fcbd7d

File tree

3 files changed

+133
-0
lines changed

3 files changed

+133
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
//go:build linux_and_mac
2+
// +build linux_and_mac
3+
4+
package mise
5+
6+
import (
7+
"testing"
8+
9+
"github.com/bitrise-io/bitrise/v2/toolprovider/mise"
10+
"github.com/bitrise-io/bitrise/v2/toolprovider/provider"
11+
"github.com/stretchr/testify/require"
12+
)
13+
14+
func TestAsdfInstallFlutterNoPlugin(t *testing.T) {
15+
tests := []struct {
16+
name string
17+
requestedVersion string
18+
resolutionStrategy provider.ResolutionStrategy
19+
plugin string
20+
expectedVersion string
21+
}{
22+
{"Install specific version", "3.32.1-stable", provider.ResolutionStrategyStrict, "", "3.32.1-stable"},
23+
}
24+
25+
for _, tt := range tests {
26+
miseInstallDir := t.TempDir()
27+
miseDataDir := t.TempDir()
28+
miseProvider, err := mise.NewToolProvider(miseInstallDir, miseDataDir)
29+
require.NoError(t, err)
30+
31+
err = miseProvider.Bootstrap()
32+
require.NoError(t, err)
33+
34+
t.Run(tt.name, func(t *testing.T) {
35+
request := provider.ToolRequest{
36+
ToolName: "flutter",
37+
UnparsedVersion: tt.requestedVersion,
38+
ResolutionStrategy: tt.resolutionStrategy,
39+
PluginIdentifier: &tt.plugin,
40+
}
41+
result, err := miseProvider.InstallTool(request)
42+
require.NoError(t, err)
43+
require.Equal(t, provider.ToolID("flutter"), result.ToolName)
44+
require.Equal(t, tt.expectedVersion, result.ConcreteVersion)
45+
require.False(t, result.IsAlreadyInstalled)
46+
})
47+
}
48+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
//go:build linux_and_mac
2+
// +build linux_and_mac
3+
4+
package mise
5+
6+
import (
7+
"testing"
8+
9+
"github.com/bitrise-io/bitrise/v2/toolprovider/mise"
10+
"github.com/bitrise-io/bitrise/v2/toolprovider/provider"
11+
"github.com/stretchr/testify/require"
12+
)
13+
14+
func TestAsdfInstallGolangVersion(t *testing.T) {
15+
tests := []struct {
16+
name string
17+
requestedVersion string
18+
resolutionStrategy provider.ResolutionStrategy
19+
expectedVersion string
20+
}{
21+
{"Install specific version", "1.23.4", provider.ResolutionStrategyStrict, "1.23.4"},
22+
{"Install partial major.minor version", "1.22", provider.ResolutionStrategyLatestInstalled, "1.22.12"},
23+
{"Install partial major.minor version, latest released", "1.22", provider.ResolutionStrategyLatestReleased, "1.22.12"},
24+
}
25+
26+
for _, tt := range tests {
27+
miseInstallDir := t.TempDir()
28+
miseDataDir := t.TempDir()
29+
miseProvider, err := mise.NewToolProvider(miseInstallDir, miseDataDir)
30+
require.NoError(t, err)
31+
32+
err = miseProvider.Bootstrap()
33+
require.NoError(t, err)
34+
35+
t.Run(tt.name, func(t *testing.T) {
36+
request := provider.ToolRequest{
37+
ToolName: "golang",
38+
UnparsedVersion: tt.requestedVersion,
39+
ResolutionStrategy: tt.resolutionStrategy,
40+
}
41+
result, err := miseProvider.InstallTool(request)
42+
require.NoError(t, err)
43+
require.Equal(t, provider.ToolID("golang"), result.ToolName)
44+
require.Equal(t, tt.expectedVersion, result.ConcreteVersion)
45+
require.False(t, result.IsAlreadyInstalled)
46+
})
47+
}
48+
}

_tests/integration/validate_test.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,27 @@ tool_config:
7575
extra_plugins:
7676
empty-url-tool: ""
7777
`
78+
const miseToolConfigYML = `format_version: 11
79+
default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
80+
81+
tools:
82+
golang: "1.20.3"
83+
nodejs: "20:latest"
84+
ruby: "3.2:installed"
85+
86+
tool_config:
87+
provider: mise
88+
extra_plugins:
89+
flutter: "https://github.com/asdf-community/asdf-flutter.git"
90+
custom-tool: "https://github.com/user/asdf-custom-tool.git"
91+
92+
workflows:
93+
test:
94+
steps:
95+
- script:
96+
inputs:
97+
- content: echo "hello"
98+
`
7899
const runtimeLimit = 1000 * time.Millisecond
79100
const runningTimeMsg = "test case too slow: %s is %s above limit"
80101

@@ -272,6 +293,22 @@ func Test_InvalidToolConfigValidateTest(t *testing.T) {
272293
require.Equal(t, true, elapsed < runtimeLimit, runningTimeMsg, elapsed, elapsed-runtimeLimit)
273294
}
274295

296+
func Test_ValidMiseToolConfigValidateTest(t *testing.T) {
297+
tmpDir := t.TempDir()
298+
configPth := filepath.Join(tmpDir, "bitrise.yml")
299+
require.NoError(t, fileutil.WriteStringToFile(configPth, miseToolConfigYML))
300+
301+
var out string
302+
var err error
303+
elapsed := withRunningTimeCheck(func() {
304+
cmd := command.New(binPath(), "validate", "-c", configPth)
305+
out, err = cmd.RunAndReturnTrimmedCombinedOutput()
306+
})
307+
require.NoError(t, err, out)
308+
require.Equal(t, "Config is valid: \x1b[32;1mtrue\x1b[0m", out)
309+
require.Equal(t, true, elapsed < runtimeLimit, runningTimeMsg, elapsed, elapsed-runtimeLimit)
310+
}
311+
275312
func Test_SecretValidateTest(t *testing.T) {
276313
tmpDir, err := pathutil.NormalizedOSTempDirPath("__validate_test__")
277314
require.NoError(t, err)

0 commit comments

Comments
 (0)