X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/9ce4b2c07e2b7809088e6333246501ad9418bbda..ba1114ac181b6648a798385058e6c18d92ec56ef:/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 f68e7c8b08..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" @@ -295,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") @@ -306,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), "" +}