rclone: github.com/ncw/rclone/fstest/fstests Index | Files

package fstests

import "github.com/ncw/rclone/fstest/fstests"

Package fstests provides generic integration tests for the Fs and Object interfaces.

These tests are concerned with the basic functionality of a backend. The tests in fs/sync and fs/operations tests more cornercases that these tests don't.


Package Files


func NextMultipleOf Uses

func NextMultipleOf(m fs.SizeSuffix) func(fs.SizeSuffix) fs.SizeSuffix

NextMultipleOf returns a function that can be used as a CeilChunkSize function. This function will return the next multiple of m that is equal or bigger than i. All values less or equal 0 will return 0.

func NextPowerOfTwo Uses

func NextPowerOfTwo(i fs.SizeSuffix) fs.SizeSuffix

NextPowerOfTwo returns the current or next bigger power of two. All values less or equal 0 will return 0

func PutTestContents Uses

func PutTestContents(ctx context.Context, t *testing.T, f fs.Fs, file *fstest.Item, contents string, check bool) (string, fs.Object)

PutTestContents puts file with given contents to the remote and checks it but unlike TestPutLarge doesn't remove

func Run Uses

func Run(t *testing.T, opt *Opt)

Run runs the basic integration tests for a remote using the options passed in.

They are structured in a hierarchical way so that dependencies for the tests can be created.

For example some tests require the directory to be created - these are inside the "FsMkdir" test. Some tests require some tests files - these are inside the "FsPutFiles" test.

func TestPutLarge Uses

func TestPutLarge(ctx context.Context, t *testing.T, f fs.Fs, file *fstest.Item)

TestPutLarge puts file to the remote, checks it and removes it on success.

type ChunkedUploadConfig Uses

type ChunkedUploadConfig struct {
    // Minimum allowed chunk size
    MinChunkSize fs.SizeSuffix
    // Maximum allowed chunk size, 0 is no limit
    MaxChunkSize fs.SizeSuffix
    // Rounds the given chunk size up to the next valid value
    // nil will disable rounding
    // e.g. the next power of 2
    CeilChunkSize func(fs.SizeSuffix) fs.SizeSuffix
    // More than one chunk is required on upload
    NeedMultipleChunks bool

ChunkedUploadConfig contains the values used by TestFsPutChunked to determine the limits of chunked uploading

type ExtraConfigItem Uses

type ExtraConfigItem struct{ Name, Key, Value string }

ExtraConfigItem describes a config item for the tests

type InternalTester Uses

type InternalTester interface {

InternalTester is an optional interface for Fs which allows to execute internal tests

This interface should be implemented in 'backend'_internal_test.go and not in 'backend'.go

type Opt Uses

type Opt struct {
    RemoteName                   string
    NilObject                    fs.Object
    ExtraConfig                  []ExtraConfigItem
    SkipBadWindowsCharacters     bool     // skips unusable characters for windows if set
    SkipFsMatch                  bool     // if set skip exact matching of Fs value
    TiersToTest                  []string // List of tiers which can be tested in setTier test
    ChunkedUpload                ChunkedUploadConfig
    UnimplementableFsMethods     []string // List of methods which can't be implemented in this wrapping Fs
    UnimplementableObjectMethods []string // List of methods which can't be implemented in this wrapping Fs
    SkipFsCheckWrap              bool     // if set skip FsCheckWrap
    SkipObjectCheckWrap          bool     // if set skip ObjectCheckWrap
    SkipInvalidUTF8              bool     // if set skip invalid UTF-8 checks

Opt is options for Run

type SetUploadChunkSizer Uses

type SetUploadChunkSizer interface {
    // Change the configured UploadChunkSize.
    // Will only be called while no transfer is in progress.
    SetUploadChunkSize(fs.SizeSuffix) (fs.SizeSuffix, error)

SetUploadChunkSizer is a test only interface to change the upload chunk size at runtime

type SetUploadCutoffer Uses

type SetUploadCutoffer interface {
    // Change the configured UploadCutoff.
    // Will only be called while no transfer is in progress.
    SetUploadCutoff(fs.SizeSuffix) (fs.SizeSuffix, error)

SetUploadCutoffer is a test only interface to change the upload cutoff size at runtime

Package fstests imports 31 packages (graph). Updated 2020-07-04. Refresh now. Tools for package owners.