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,52 @@ import (
1614func 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}
0 commit comments