AUse version constraints to find boxes

This commit is contained in:
sophia 2021-11-12 13:45:06 -06:00 committed by Paul Hinze
parent e77cb42171
commit a99bfc65f9
No known key found for this signature in database
GPG Key ID: B69DEDF2D55501C0
2 changed files with 33 additions and 1 deletions

View File

@ -177,10 +177,19 @@ func (s *State) boxFind(
if err != nil {
return nil, err
}
if req.Version == "" {
req.Version = ">= 0"
}
versionConstraint, err := version.NewConstraint(req.Version)
if err != nil {
return nil, err
}
for e := raw.Next(); e != nil; e = raw.Next() {
boxIndexEntry := e.(*boxIndexRecord)
if req.Version != "" {
if boxIndexEntry.Version != req.Version {
boxVersion, _ := version.NewVersion(boxIndexEntry.Version)
if !versionConstraint.Check(boxVersion) {
continue
}
}

View File

@ -192,5 +192,28 @@ func TestBox(t *testing.T) {
})
require.NoError(err)
require.Nil(b7)
b8, err := s.BoxFind(&vagrant_plugin_sdk.Ref_Box{
Name: "hashicorp/bionic",
Version: "~> 1.2",
})
require.NoError(err)
require.Equal(b8.Name, "hashicorp/bionic")
require.Equal(b8.Version, "1.2.4")
b9, err := s.BoxFind(&vagrant_plugin_sdk.Ref_Box{
Name: "hashicorp/bionic",
Version: "> 1.0, < 3.0",
})
require.NoError(err)
require.Equal(b9.Name, "hashicorp/bionic")
require.Equal(b9.Version, "1.2.4")
b10, err := s.BoxFind(&vagrant_plugin_sdk.Ref_Box{
Name: "hashicorp/bionic",
Version: "< 1.0",
})
require.NoError(err)
require.Nil(b10)
})
}