forked from TrueCloudLab/rclone
test: move test commands under "rclone test" and make them visible
This commit is contained in:
parent
fd94b3a473
commit
f88a5542cf
10 changed files with 60 additions and 18 deletions
|
@ -333,8 +333,8 @@ Getting going
|
||||||
* Try to implement as many optional methods as possible as it makes the remote more usable.
|
* Try to implement as many optional methods as possible as it makes the remote more usable.
|
||||||
* Use lib/encoder to make sure we can encode any path name and `rclone info` to help determine the encodings needed
|
* Use lib/encoder to make sure we can encode any path name and `rclone info` to help determine the encodings needed
|
||||||
* `rclone purge -v TestRemote:rclone-info`
|
* `rclone purge -v TestRemote:rclone-info`
|
||||||
* `rclone info --remote-encoding None -vv --write-json remote.json TestRemote:rclone-info`
|
* `rclone test info --all --remote-encoding None -vv --write-json remote.json TestRemote:rclone-info`
|
||||||
* `go run cmd/info/internal/build_csv/main.go -o remote.csv remote.json`
|
* `go run cmd/test/info/internal/build_csv/main.go -o remote.csv remote.json`
|
||||||
* open `remote.csv` in a spreadsheet and examine
|
* open `remote.csv` in a spreadsheet and examine
|
||||||
|
|
||||||
Unit tests
|
Unit tests
|
||||||
|
|
|
@ -25,7 +25,6 @@ import (
|
||||||
_ "github.com/rclone/rclone/cmd/genautocomplete"
|
_ "github.com/rclone/rclone/cmd/genautocomplete"
|
||||||
_ "github.com/rclone/rclone/cmd/gendocs"
|
_ "github.com/rclone/rclone/cmd/gendocs"
|
||||||
_ "github.com/rclone/rclone/cmd/hashsum"
|
_ "github.com/rclone/rclone/cmd/hashsum"
|
||||||
_ "github.com/rclone/rclone/cmd/info"
|
|
||||||
_ "github.com/rclone/rclone/cmd/link"
|
_ "github.com/rclone/rclone/cmd/link"
|
||||||
_ "github.com/rclone/rclone/cmd/listremotes"
|
_ "github.com/rclone/rclone/cmd/listremotes"
|
||||||
_ "github.com/rclone/rclone/cmd/ls"
|
_ "github.com/rclone/rclone/cmd/ls"
|
||||||
|
@ -34,7 +33,6 @@ import (
|
||||||
_ "github.com/rclone/rclone/cmd/lsjson"
|
_ "github.com/rclone/rclone/cmd/lsjson"
|
||||||
_ "github.com/rclone/rclone/cmd/lsl"
|
_ "github.com/rclone/rclone/cmd/lsl"
|
||||||
_ "github.com/rclone/rclone/cmd/md5sum"
|
_ "github.com/rclone/rclone/cmd/md5sum"
|
||||||
_ "github.com/rclone/rclone/cmd/memtest"
|
|
||||||
_ "github.com/rclone/rclone/cmd/mkdir"
|
_ "github.com/rclone/rclone/cmd/mkdir"
|
||||||
_ "github.com/rclone/rclone/cmd/mount"
|
_ "github.com/rclone/rclone/cmd/mount"
|
||||||
_ "github.com/rclone/rclone/cmd/mount2"
|
_ "github.com/rclone/rclone/cmd/mount2"
|
||||||
|
@ -54,6 +52,9 @@ import (
|
||||||
_ "github.com/rclone/rclone/cmd/sha1sum"
|
_ "github.com/rclone/rclone/cmd/sha1sum"
|
||||||
_ "github.com/rclone/rclone/cmd/size"
|
_ "github.com/rclone/rclone/cmd/size"
|
||||||
_ "github.com/rclone/rclone/cmd/sync"
|
_ "github.com/rclone/rclone/cmd/sync"
|
||||||
|
_ "github.com/rclone/rclone/cmd/test"
|
||||||
|
_ "github.com/rclone/rclone/cmd/test/info"
|
||||||
|
_ "github.com/rclone/rclone/cmd/test/memory"
|
||||||
_ "github.com/rclone/rclone/cmd/touch"
|
_ "github.com/rclone/rclone/cmd/touch"
|
||||||
_ "github.com/rclone/rclone/cmd/tree"
|
_ "github.com/rclone/rclone/cmd/tree"
|
||||||
_ "github.com/rclone/rclone/cmd/version"
|
_ "github.com/rclone/rclone/cmd/version"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package info
|
package info
|
||||||
|
|
||||||
// FIXME once translations are implemented will need a no-escape
|
// FIXME once translations are implemented will need a no-escape
|
||||||
// option for Put so we can make these tests work agaig
|
// option for Put so we can make these tests work again
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
@ -9,6 +9,7 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
@ -20,7 +21,8 @@ import (
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/rclone/rclone/cmd"
|
"github.com/rclone/rclone/cmd"
|
||||||
"github.com/rclone/rclone/cmd/info/internal"
|
"github.com/rclone/rclone/cmd/test"
|
||||||
|
"github.com/rclone/rclone/cmd/test/info/internal"
|
||||||
"github.com/rclone/rclone/fs"
|
"github.com/rclone/rclone/fs"
|
||||||
"github.com/rclone/rclone/fs/config/flags"
|
"github.com/rclone/rclone/fs/config/flags"
|
||||||
"github.com/rclone/rclone/fs/hash"
|
"github.com/rclone/rclone/fs/hash"
|
||||||
|
@ -35,6 +37,7 @@ var (
|
||||||
checkControl bool
|
checkControl bool
|
||||||
checkLength bool
|
checkLength bool
|
||||||
checkStreaming bool
|
checkStreaming bool
|
||||||
|
all bool
|
||||||
uploadWait time.Duration
|
uploadWait time.Duration
|
||||||
positionLeftRe = regexp.MustCompile(`(?s)^(.*)-position-left-([[:xdigit:]]+)$`)
|
positionLeftRe = regexp.MustCompile(`(?s)^(.*)-position-left-([[:xdigit:]]+)$`)
|
||||||
positionMiddleRe = regexp.MustCompile(`(?s)^position-middle-([[:xdigit:]]+)-(.*)-$`)
|
positionMiddleRe = regexp.MustCompile(`(?s)^position-middle-([[:xdigit:]]+)-(.*)-$`)
|
||||||
|
@ -42,14 +45,15 @@ var (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
cmd.Root.AddCommand(commandDefinition)
|
test.Command.AddCommand(commandDefinition)
|
||||||
cmdFlags := commandDefinition.Flags()
|
cmdFlags := commandDefinition.Flags()
|
||||||
flags.StringVarP(cmdFlags, &writeJSON, "write-json", "", "", "Write results to file.")
|
flags.StringVarP(cmdFlags, &writeJSON, "write-json", "", "", "Write results to file.")
|
||||||
flags.BoolVarP(cmdFlags, &checkNormalization, "check-normalization", "", true, "Check UTF-8 Normalization.")
|
flags.BoolVarP(cmdFlags, &checkNormalization, "check-normalization", "", false, "Check UTF-8 Normalization.")
|
||||||
flags.BoolVarP(cmdFlags, &checkControl, "check-control", "", true, "Check control characters.")
|
flags.BoolVarP(cmdFlags, &checkControl, "check-control", "", false, "Check control characters.")
|
||||||
flags.DurationVarP(cmdFlags, &uploadWait, "upload-wait", "", 0, "Wait after writing a file.")
|
flags.DurationVarP(cmdFlags, &uploadWait, "upload-wait", "", 0, "Wait after writing a file.")
|
||||||
flags.BoolVarP(cmdFlags, &checkLength, "check-length", "", true, "Check max filename length.")
|
flags.BoolVarP(cmdFlags, &checkLength, "check-length", "", false, "Check max filename length.")
|
||||||
flags.BoolVarP(cmdFlags, &checkStreaming, "check-streaming", "", true, "Check uploads with indeterminate file size.")
|
flags.BoolVarP(cmdFlags, &checkStreaming, "check-streaming", "", false, "Check uploads with indeterminate file size.")
|
||||||
|
flags.BoolVarP(cmdFlags, &all, "all", "", false, "Run all tests.")
|
||||||
}
|
}
|
||||||
|
|
||||||
var commandDefinition = &cobra.Command{
|
var commandDefinition = &cobra.Command{
|
||||||
|
@ -59,10 +63,20 @@ var commandDefinition = &cobra.Command{
|
||||||
to write to the paths passed in and how long they can be. It can take some
|
to write to the paths passed in and how long they can be. It can take some
|
||||||
time. It will write test files into the remote:path passed in. It outputs
|
time. It will write test files into the remote:path passed in. It outputs
|
||||||
a bit of go code for each one.
|
a bit of go code for each one.
|
||||||
|
|
||||||
|
**NB** this can create undeletable files and other hazards - use with care
|
||||||
`,
|
`,
|
||||||
Hidden: true,
|
|
||||||
Run: func(command *cobra.Command, args []string) {
|
Run: func(command *cobra.Command, args []string) {
|
||||||
cmd.CheckArgs(1, 1e6, command, args)
|
cmd.CheckArgs(1, 1e6, command, args)
|
||||||
|
if !checkNormalization && !checkControl && !checkLength && !checkStreaming && !all {
|
||||||
|
log.Fatalf("no tests selected - select a test or use -all")
|
||||||
|
}
|
||||||
|
if all {
|
||||||
|
checkNormalization = true
|
||||||
|
checkControl = true
|
||||||
|
checkLength = true
|
||||||
|
checkStreaming = true
|
||||||
|
}
|
||||||
for i := range args {
|
for i := range args {
|
||||||
f := cmd.NewFsDir(args[i : i+1])
|
f := cmd.NewFsDir(args[i : i+1])
|
||||||
cmd.Run(false, false, command, func() error {
|
cmd.Run(false, false, command, func() error {
|
|
@ -11,7 +11,7 @@ import (
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"github.com/rclone/rclone/cmd/info/internal"
|
"github.com/rclone/rclone/cmd/test/info/internal"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
|
@ -1,4 +1,4 @@
|
||||||
package memtest
|
package memory
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
@ -6,19 +6,19 @@ import (
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/rclone/rclone/cmd"
|
"github.com/rclone/rclone/cmd"
|
||||||
|
"github.com/rclone/rclone/cmd/test"
|
||||||
"github.com/rclone/rclone/fs"
|
"github.com/rclone/rclone/fs"
|
||||||
"github.com/rclone/rclone/fs/operations"
|
"github.com/rclone/rclone/fs/operations"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
cmd.Root.AddCommand(commandDefinition)
|
test.Command.AddCommand(commandDefinition)
|
||||||
}
|
}
|
||||||
|
|
||||||
var commandDefinition = &cobra.Command{
|
var commandDefinition = &cobra.Command{
|
||||||
Use: "memtest remote:path",
|
Use: "memory remote:path",
|
||||||
Short: `Load all the objects at remote:path and report memory stats.`,
|
Short: `Load all the objects at remote:path into memory and report memory stats.`,
|
||||||
Hidden: true,
|
|
||||||
Run: func(command *cobra.Command, args []string) {
|
Run: func(command *cobra.Command, args []string) {
|
||||||
cmd.CheckArgs(1, 1, command, args)
|
cmd.CheckArgs(1, 1, command, args)
|
||||||
fsrc := cmd.NewFsSrc(args)
|
fsrc := cmd.NewFsSrc(args)
|
27
cmd/test/test.go
Normal file
27
cmd/test/test.go
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
package test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/rclone/rclone/cmd"
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
cmd.Root.AddCommand(Command)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Command definition for cobra
|
||||||
|
var Command = &cobra.Command{
|
||||||
|
Use: "test <subcommand>",
|
||||||
|
Short: `Run a test command`,
|
||||||
|
Long: `Rclone test is used to run test commands.
|
||||||
|
|
||||||
|
Select which test comand you want with the subcommand, eg
|
||||||
|
|
||||||
|
rclone test memory remote:
|
||||||
|
|
||||||
|
Each subcommand has its own options which you can see in their help.
|
||||||
|
|
||||||
|
**NB** Be careful running these commands, they may do strange things
|
||||||
|
so reading their documentation first is recommended.
|
||||||
|
`,
|
||||||
|
}
|
Loading…
Reference in a new issue