X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/aec1081434d75a6bb73baf096139d1d214dd1f47..f416c6e0370c78a9aa18c2e461e0861b404a669a:/sdk/go/arvados/fs_project_test.go diff --git a/sdk/go/arvados/fs_project_test.go b/sdk/go/arvados/fs_project_test.go index 0564e2fae6..8e7f588156 100644 --- a/sdk/go/arvados/fs_project_test.go +++ b/sdk/go/arvados/fs_project_test.go @@ -7,6 +7,7 @@ package arvados import ( "bytes" "encoding/json" + "errors" "io" "os" "path/filepath" @@ -73,6 +74,30 @@ func (s *SiteFSSuite) TestFilterGroup(c *check.C) { _, err = s.fs.OpenFile("/fg3/A Subproject", 0, 0) c.Assert(err, check.Not(check.IsNil)) + + // An 'exists' 'arvados#collection' filter means only collections with certain properties should be returned. + s.fs.MountProject("fg4", fixtureAFilterGroupFourUUID) + + _, err = s.fs.Stat("/fg4/collection with list property with odd values") + c.Assert(err, check.IsNil) + + _, err = s.fs.Stat("/fg4/collection with list property with even values") + c.Assert(err, check.IsNil) + + // A 'contains' 'arvados#collection' filter means only collections with certain properties should be returned. + s.fs.MountProject("fg5", fixtureAFilterGroupFiveUUID) + + _, err = s.fs.Stat("/fg5/collection with list property with odd values") + c.Assert(err, check.IsNil) + + _, err = s.fs.Stat("/fg5/collection with list property with string value") + c.Assert(err, check.IsNil) + + _, err = s.fs.Stat("/fg5/collection with prop2 5") + c.Assert(err, check.Not(check.IsNil)) + + _, err = s.fs.Stat("/fg5/collection with list property with even values") + c.Assert(err, check.Not(check.IsNil)) } func (s *SiteFSSuite) TestCurrentUserHome(c *check.C) { @@ -271,6 +296,11 @@ func (s *SiteFSSuite) TestProjectUpdatedByOther(c *check.C) { err = s.client.RequestAndDecode(nil, "DELETE", "arvados/v1/collections/"+oob.UUID, nil, nil) c.Assert(err, check.IsNil) + wf, err = s.fs.OpenFile("/home/A Project/oob/test.txt", os.O_CREATE|os.O_RDWR, 0700) + c.Assert(err, check.IsNil) + err = wf.Close() + c.Check(err, check.IsNil) + err = project.Sync() c.Check(err, check.NotNil) // can't update the deleted collection _, err = s.fs.Open("/home/A Project/oob") @@ -282,17 +312,37 @@ func (s *SiteFSSuite) TestProjectUnsupportedOperations(c *check.C) { s.fs.MountProject("home", "") _, err := s.fs.OpenFile("/home/A Project/newfilename", os.O_CREATE|os.O_RDWR, 0) - c.Check(err, check.ErrorMatches, "invalid argument") + c.Check(err, ErrorIs, ErrInvalidOperation) err = s.fs.Mkdir("/home/A Project/newdirname", 0) - c.Check(err, check.ErrorMatches, "invalid argument") + c.Check(err, ErrorIs, ErrInvalidOperation) err = s.fs.Mkdir("/by_id/newdirname", 0) - c.Check(err, check.ErrorMatches, "invalid argument") + c.Check(err, ErrorIs, ErrInvalidOperation) err = s.fs.Mkdir("/by_id/"+fixtureAProjectUUID+"/newdirname", 0) - c.Check(err, check.ErrorMatches, "invalid argument") + c.Check(err, ErrorIs, ErrInvalidOperation) _, err = s.fs.OpenFile("/home/A Project", 0, 0) c.Check(err, check.IsNil) } + +type errorIsChecker struct { + *check.CheckerInfo +} + +var ErrorIs check.Checker = errorIsChecker{ + &check.CheckerInfo{Name: "ErrorIs", Params: []string{"value", "target"}}, +} + +func (checker errorIsChecker) Check(params []interface{}, names []string) (result bool, errStr string) { + err, ok := params[0].(error) + if !ok { + return false, "" + } + target, ok := params[1].(error) + if !ok { + return false, "" + } + return errors.Is(err, target), "" +}