fstest

package
v0.0.0-...-1b1593a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 13, 2017 License: MIT Imports: 20 Imported by: 0

Documentation

Overview

Package fstest provides utilities for testing the Fs

Index

Constants

This section is empty.

Variables

View Source
var (
	RemoteName      = flag.String("remote", "", "Remote to test with, defaults to local filesystem")
	SubDir          = flag.Bool("subdir", false, "Set to test with a sub directory")
	Verbose         = flag.Bool("verbose", false, "Set to enable logging")
	DumpHeaders     = flag.Bool("dump-headers", false, "Set to dump headers (needs -verbose)")
	DumpBodies      = flag.Bool("dump-bodies", false, "Set to dump bodies (needs -verbose)")
	Individual      = flag.Bool("individual", false, "Make individual bucket/container/directory for each test - much slower")
	LowLevelRetries = flag.Int("low-level-retries", 10, "Number of low level retries")
	UseListR        = flag.Bool("fast-list", false, "Use recursive list if available. Uses more memory but fewer transactions.")
	// ListRetries is the number of times to retry a listing to overcome eventual consistency
	ListRetries = flag.Int("list-retries", 6, "Number or times to retry listing")
	// MatchTestRemote matches the remote names used for testing
	MatchTestRemote = regexp.MustCompile(`^rclone-test-[abcdefghijklmnopqrstuvwxyz0123456789]{24}$`)
)

Globals

Functions

func CheckItems

func CheckItems(t *testing.T, f fs.Fs, items ...Item)

CheckItems checks the fs to see if it has only the items passed in using a precision of fs.Config.ModifyWindow

func CheckListing

func CheckListing(t *testing.T, f fs.Fs, items []Item)

CheckListing checks the fs to see if it has the expected contents

func CheckListingWithPrecision

func CheckListingWithPrecision(t *testing.T, f fs.Fs, items []Item, expectedDirs []string, precision time.Duration)

CheckListingWithPrecision checks the fs to see if it has the expected contents with the given precision.

If expectedDirs is non nil then we check those too. Note that no directories returned is also OK as some remotes don't return directories.

func CheckTimeEqualWithPrecision

func CheckTimeEqualWithPrecision(t0, t1 time.Time, precision time.Duration) (time.Duration, bool)

CheckTimeEqualWithPrecision checks the times are equal within the precision, returns the delta and a flag

func Initialise

func Initialise()

Initialise rclone for testing

func LocalRemote

func LocalRemote() (path string, err error)

LocalRemote creates a temporary directory name for local remotes

func Normalize

func Normalize(name string) string

Normalize runs a utf8 normalization on the string if running on OS X. This is because OS X denormalizes file names it writes to the local file system.

func RandomRemote

func RandomRemote(remoteName string, subdir bool) (fs.Fs, string, func(), error)

RandomRemote makes a random bucket or subdirectory on the remote

Call the finalise function returned to Purge the fs at the end (and the parent if necessary)

Returns the remote, its url, a finaliser and an error

func RandomRemoteName

func RandomRemoteName(remoteName string) (string, string, error)

RandomRemoteName makes a random bucket or subdirectory name

Returns a random remote name plus the leaf name

func RandomString

func RandomString(n int) string

RandomString create a random string for test purposes

func TestMain

func TestMain(m *testing.M)

TestMain drives the tests

func TestMkdir

func TestMkdir(t *testing.T, remote fs.Fs)

TestMkdir tests Mkdir works

func TestPurge

func TestPurge(t *testing.T, remote fs.Fs)

TestPurge tests Purge works

func TestRmdir

func TestRmdir(t *testing.T, remote fs.Fs)

TestRmdir tests Rmdir works

func Time

func Time(timeString string) time.Time

Time parses a time string or logs a fatal error

Types

type Item

type Item struct {
	Path    string
	Hashes  map[fs.HashType]string
	ModTime time.Time
	Size    int64
	WinPath string
}

Item represents an item for checking

func NewItem

func NewItem(Path, Content string, modTime time.Time) Item

NewItem creates an item from a string content

func (*Item) Check

func (i *Item) Check(t *testing.T, obj fs.Object, precision time.Duration)

Check checks all the attributes of the object are correct

func (*Item) CheckHashes

func (i *Item) CheckHashes(t *testing.T, obj fs.Object)

CheckHashes checks all the hashes the object supports are correct

func (*Item) CheckModTime

func (i *Item) CheckModTime(t *testing.T, obj fs.Object, modTime time.Time, precision time.Duration)

CheckModTime checks the mod time to the given precision

type Items

type Items struct {
	// contains filtered or unexported fields
}

Items represents all items for checking

func NewItems

func NewItems(items []Item) *Items

NewItems makes an Items

func (*Items) Done

func (is *Items) Done(t *testing.T)

Done checks all finished

func (*Items) Find

func (is *Items) Find(t *testing.T, obj fs.Object, precision time.Duration)

Find checks off an item

type Run

type Run struct {
	LocalName   string
	Flocal      fs.Fs
	Fremote     fs.Fs
	FremoteName string

	Logf, Fatalf func(text string, args ...interface{})
	// contains filtered or unexported fields
}

Run holds the remotes for a test run

func NewRun

func NewRun(t *testing.T) *Run

NewRun initialise the remote and local for testing and returns a run object. Call this from the tests.

r.Flocal is an empty local Fs r.Fremote is an empty remote Fs

Finalise() will tidy them away when done.

func (*Run) CheckWithDuplicates

func (r *Run) CheckWithDuplicates(t *testing.T, items ...Item)

CheckWithDuplicates does a test but allows duplicates

func (*Run) Finalise

func (r *Run) Finalise()

Finalise cleans the remote and local

func (*Run) ForceMkdir

func (r *Run) ForceMkdir(f fs.Fs)

ForceMkdir creates the remote

func (*Run) Mkdir

func (r *Run) Mkdir(f fs.Fs)

Mkdir creates the remote if it hasn't been created already

func (*Run) RenameFile

func (r *Run) RenameFile(item Item, newpath string) Item

RenameFile renames a file in local

func (*Run) WriteBoth

func (r *Run) WriteBoth(remote, content string, modTime time.Time) Item

WriteBoth calls WriteObject and WriteFile with the same arguments

func (*Run) WriteFile

func (r *Run) WriteFile(filePath, content string, t time.Time) Item

WriteFile writes a file to local

func (*Run) WriteObject

func (r *Run) WriteObject(remote, content string, modTime time.Time) Item

WriteObject writes an object to the remote

func (*Run) WriteObjectTo

func (r *Run) WriteObjectTo(f fs.Fs, remote, content string, modTime time.Time, useUnchecked bool) Item

WriteObjectTo writes an object to the fs, remote passed in

func (*Run) WriteUncheckedObject

func (r *Run) WriteUncheckedObject(remote, content string, modTime time.Time) Item

WriteUncheckedObject writes an object to the remote not checking for duplicates

Directories

Path Synopsis
Package fstests provides generic tests for testing the Fs and Object interfaces Run go generate to write the tests for the remotes
Package fstests provides generic tests for testing the Fs and Object interfaces Run go generate to write the tests for the remotes

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL