Skip to content

Commit 6bf3ff2

Browse files
committed
Integration tests
1 parent a61b8af commit 6bf3ff2

File tree

3 files changed

+69
-38
lines changed

3 files changed

+69
-38
lines changed

bitrise.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ workflows:
7575
- bundle::run_integration_tests: { }
7676
meta:
7777
bitrise.io:
78-
stack: osx-xcode-16.4.x
78+
stack: osx-xcode-edge # TODO: temporary
7979
machine_type_id: g2.mac.large
8080

8181
run_integration_tests_linux:
@@ -86,6 +86,10 @@ workflows:
8686
- workflow_id: unpin-go-version
8787
- bundle::setup_go_junit_report: { }
8888
- bundle::run_integration_tests: { }
89+
meta:
90+
bitrise.io:
91+
stack: ubuntu-noble-24.04-bitrise-2025-android
92+
machine_type_id: g2.linux.x-large
8993

9094
run_docker_integration_tests_linux:
9195
steps:

integrationtests/toolprovider/mise/install_nixpkgs_ruby_test.go

Lines changed: 55 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@
44
package mise
55

66
import (
7-
"context"
87
"testing"
9-
"time"
108

119
"github.com/bitrise-io/bitrise/v2/toolprovider/mise"
1210
"github.com/bitrise-io/bitrise/v2/toolprovider/provider"
@@ -16,13 +14,52 @@ import (
1614
func TestMiseInstallNixpkgsRuby(t *testing.T) {
1715
tests := []struct {
1816
name string
19-
requestedVersion string
17+
tool string
18+
version string
2019
resolutionStrategy provider.ResolutionStrategy
21-
expectedVersion string
20+
want string
21+
wantErr bool
2222
}{
23-
{"Install specific version", "3.3.9", provider.ResolutionStrategyStrict, "3.3.9"},
23+
{
24+
name: "Install specific version",
25+
tool: "ruby",
26+
version: "3.3.9",
27+
resolutionStrategy: provider.ResolutionStrategyStrict,
28+
want: "3.3.9",
29+
},
30+
{
31+
name: "Install fuzzy version and released strategy",
32+
tool: "ruby",
33+
version: "3.1", // EOL version, won't receive new patch versions suddenly
34+
resolutionStrategy: provider.ResolutionStrategyLatestReleased,
35+
want: "3.1.7",
36+
},
37+
{
38+
name: "Install fuzzy version and installed strategy",
39+
tool: "ruby",
40+
version: "3.1", // EOL version, won't receive new patch versions
41+
resolutionStrategy: provider.ResolutionStrategyLatestInstalled,
42+
want: "3.1.7",
43+
},
44+
{
45+
name: "Nonexistent version in nixpkgs index",
46+
tool: "ruby",
47+
version: "0.1.999",
48+
resolutionStrategy: provider.ResolutionStrategyStrict,
49+
wantErr: true,
50+
},
51+
{
52+
name: "Install some other tool with forced nixpkgs backend",
53+
tool: "node",
54+
version: "22.22.1",
55+
resolutionStrategy: provider.ResolutionStrategyStrict,
56+
wantErr: true,
57+
},
2458
}
2559

60+
t.Setenv("BITRISE_TOOLSETUP_FAST_INSTALL", "1")
61+
t.Setenv("BITRISE_TOOLSETUP_FAST_INSTALL_FORCE", "1")
62+
2663
for _, tt := range tests {
2764
miseInstallDir := t.TempDir()
2865
miseDataDir := t.TempDir()
@@ -33,32 +70,21 @@ func TestMiseInstallNixpkgsRuby(t *testing.T) {
3370
require.NoError(t, err)
3471

3572
t.Run(tt.name, func(t *testing.T) {
36-
ctx, cancel := context.WithTimeout(context.Background(), 1*time.Minute)
37-
defer cancel()
38-
39-
done := make(chan bool)
40-
var result provider.ToolInstallResult
41-
var installErr error
42-
43-
go func() {
44-
request := provider.ToolRequest{
45-
ToolName: "ruby",
46-
UnparsedVersion: tt.requestedVersion,
47-
ResolutionStrategy: tt.resolutionStrategy,
48-
}
49-
result, installErr = miseProvider.InstallTool(request)
50-
done <- true
51-
}()
73+
request := provider.ToolRequest{
74+
ToolName: "ruby",
75+
UnparsedVersion: tt.version,
76+
ResolutionStrategy: tt.resolutionStrategy,
77+
}
78+
result, installErr := miseProvider.InstallTool(request)
5279

53-
select {
54-
case <-done:
55-
require.NoError(t, installErr)
56-
require.Equal(t, provider.ToolID("ruby"), result.ToolName)
57-
require.Equal(t, tt.expectedVersion, result.ConcreteVersion)
58-
require.False(t, result.IsAlreadyInstalled)
59-
case <-ctx.Done():
60-
t.Fatal("Test exceeded 1 minute timeout, installation was too slow for nixpkgs ruby")
80+
if tt.wantErr {
81+
require.Error(t, installErr)
82+
return
6183
}
84+
require.NoError(t, installErr)
85+
require.Equal(t, provider.ToolID("ruby"), result.ToolName)
86+
require.Equal(t, tt.want, result.ConcreteVersion)
87+
require.False(t, result.IsAlreadyInstalled)
6288
})
6389
}
6490
}

toolprovider/mise/mise.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"fmt"
66
"os"
77
"path/filepath"
8-
"strings"
98

109
"github.com/bitrise-io/bitrise/v2/log"
1110
"github.com/bitrise-io/bitrise/v2/toolprovider/mise/execenv"
@@ -161,13 +160,15 @@ func (m *MiseToolProvider) ActivateEnv(result provider.ToolInstallResult) (provi
161160
}
162161

163162
func isEdgeStack() (isEdge bool) {
164-
if stack, variablePresent := os.LookupEnv("BITRISEIO_STACK_ID"); variablePresent && strings.Contains(stack, "edge") {
165-
isEdge = true
166-
} else {
167-
isEdge = false
168-
}
169-
log.Debugf("[TOOLPROVIDER] Stack is edge: %s", isEdge)
170-
return
163+
// if stack, variablePresent := os.LookupEnv("BITRISEIO_STACK_ID"); variablePresent && strings.Contains(stack, "edge") {
164+
// isEdge = true
165+
// } else {
166+
// isEdge = false
167+
// }
168+
// log.Debugf("[TOOLPROVIDER] Stack is edge: %s", isEdge)
169+
// return
170+
// TODO: temporary
171+
return true
171172
}
172173

173174
func GetMiseVersion() string {

0 commit comments

Comments
 (0)