44package mise
55
66import (
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,33 @@ import (
1614func TestMiseInstallNixpkgsRuby (t * testing.T ) {
1715 tests := []struct {
1816 name string
19- requestedVersion string
17+ version string
2018 resolutionStrategy provider.ResolutionStrategy
21- expectedVersion string
19+ want string
2220 }{
23- {"Install specific version" , "3.3.9" , provider .ResolutionStrategyStrict , "3.3.9" },
21+ {
22+ name : "Install specific version" ,
23+ version : "3.3.9" ,
24+ resolutionStrategy : provider .ResolutionStrategyStrict ,
25+ want : "3.3.9" ,
26+ },
27+ {
28+ name : "Install fuzzy version and released strategy" ,
29+ version : "3.1" , // EOL version, won't receive new patch versions suddenly
30+ resolutionStrategy : provider .ResolutionStrategyLatestReleased ,
31+ want : "3.1.7" ,
32+ },
33+ {
34+ name : "Install fuzzy version and installed strategy" ,
35+ version : "3.1" , // EOL version, won't receive new patch versions
36+ resolutionStrategy : provider .ResolutionStrategyLatestInstalled ,
37+ want : "3.1.7" ,
38+ },
2439 }
2540
41+ t .Setenv ("BITRISE_TOOLSETUP_FAST_INSTALL" , "1" )
42+ t .Setenv ("BITRISE_TOOLSETUP_FAST_INSTALL_FORCE" , "1" )
43+
2644 for _ , tt := range tests {
2745 miseInstallDir := t .TempDir ()
2846 miseDataDir := t .TempDir ()
@@ -33,32 +51,17 @@ func TestMiseInstallNixpkgsRuby(t *testing.T) {
3351 require .NoError (t , err )
3452
3553 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- }()
52-
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" )
54+ request := provider.ToolRequest {
55+ ToolName : "ruby" ,
56+ UnparsedVersion : tt .version ,
57+ ResolutionStrategy : tt .resolutionStrategy ,
6158 }
59+ result , installErr := miseProvider .InstallTool (request )
60+
61+ require .NoError (t , installErr )
62+ require .Equal (t , provider .ToolID ("ruby" ), result .ToolName )
63+ require .Equal (t , tt .want , result .ConcreteVersion )
64+ require .False (t , result .IsAlreadyInstalled )
6265 })
6366 }
6467}
0 commit comments