comparison file/file.go @ 15:9b4ec6b5c23e

Add tests for multipass files.
author Paul Fisher <paul@pfish.zone>
date Thu, 29 Oct 2015 23:56:53 -0400
parents da6c493cf08a
children 00d30c67b56d
comparison
equal deleted inserted replaced
14:4368a377ff64 15:9b4ec6b5c23e
21 // the Banner acts as a version indicator 21 // the Banner acts as a version indicator
22 Banner = "# Multipass v0.1 password file" 22 Banner = "# Multipass v0.1 password file"
23 ) 23 )
24 24
25 var ( 25 var (
26 // Raised when 26 // Raised when there's an error in the file format.
27 ErrorBadFile = errors.New("multipass/file: Invalid file format") 27 ErrorBadFile = errors.New("multipass/file: Invalid file format")
28
29 // we spin waiting for the file to become available, doubling our wait time
30 // every time it's unavailable. If the wait time is longer than this,
31 // give up. Variable so it can be set in tests.
32 maxDelay = time.Minute
28 ) 33 )
29 34
30 type ShadowFile struct { 35 type ShadowFile struct {
31 name string 36 name string
32 } 37 }
174 perr := err.(*os.PathError) 179 perr := err.(*os.PathError)
175 errno, ok := perr.Err.(syscall.Errno) 180 errno, ok := perr.Err.(syscall.Errno)
176 if !ok { 181 if !ok {
177 return nil, err 182 return nil, err
178 } 183 }
179 if errno != syscall.EEXIST || delay > time.Minute { 184 if errno != syscall.EEXIST || delay > maxDelay {
180 return nil, err 185 return nil, err
181 } 186 }
182 time.Sleep(delay) 187 time.Sleep(delay)
183 delay *= 2 188 delay *= 2
184 } 189 }