envtest

package
v0.24.0 Latest Latest
Warning

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

Go to latest
Published: Sep 12, 2022 License: Apache-2.0 Imports: 26 Imported by: 0

README

Starport Integration Tests

The Starport integration tests build a new application and run all Starport commands to check the Starport code integrity. The runners and helper methods are located in this current folder. The test commands are split into folders, for better concurrency, each folder is a parallel job into the CI workflow. To create a new one, we only need to create a new folder. This will be automatically detected and added into the PR CI checks, or we can only create new tests into an existing folder or file.

Running synchronously all integration tests can be very slow. The command below can run everything:

go test -v -timeout 120m ./integration

Or you can just run a specific test folder, like the list types test

go test -v -timeout 120m ./integration/list

Usage

  • Create a new env and scaffold an empty chain:
var (
    env  = envtest.New(t)
    path = env.Scaffold("github.com/test/blog")
)
  • Now, you can use the env to run the starport commands and check the success status:
env.Must(env.Exec("create a list with bool",
    step.NewSteps(step.New(
        step.Exec(envtest.IgniteApp, "s", "list", "--yes", "document", "signed:bool"),
        step.Workdir(path),
    )),
))
env.EnsureAppIsSteady(path)
  • To check if the command returns an error, you can add the envtest.ExecShouldError() step:
env.Must(env.Exec("should prevent creating a list with duplicated fields",
    step.NewSteps(step.New(
        step.Exec(envtest.IgniteApp, "s", "list", "--yes", "company", "name", "name"),
        step.Workdir(path),
    )),
    envtest.ExecShouldError(),
))
env.EnsureAppIsSteady(path)

Documentation

Index

Constants

View Source
const (
	IgniteApp = "ignite"
	Stargate  = "stargate"
)
View Source
const ServeTimeout = time.Minute * 15

Variables

This section is empty.

Functions

func Contains added in v0.24.0

func Contains(s, partial string) bool

func HasTestVerboseFlag added in v0.24.0

func HasTestVerboseFlag() bool

Types

type App added in v0.24.0

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

func (App) Binary added in v0.24.0

func (a App) Binary() string

Binary returns the binary name of the app. Can be executed directly w/o any path after app.Serve is called, since it should be in the $PATH.

func (App) EditConfig added in v0.24.0

func (a App) EditConfig(apply func(*chainconfig.Config))

func (App) EnableFaucet added in v0.24.0

func (a App) EnableFaucet(coins, coinsMax []string) (faucetAddr string)

EnableFaucet enables faucet by finding a random port for the app faucet and update config.yml with this port and provided coins options.

func (App) EnsureSteady added in v0.24.0

func (a App) EnsureSteady()

EnsureSteady ensures that app living at the path can compile and its tests are passing.

func (App) RandomizeServerPorts added in v0.24.0

func (a App) RandomizeServerPorts() chainconfig.Host

RandomizeServerPorts randomizes server ports for the app at path, updates its config.yml and returns new values.

func (App) Serve added in v0.24.0

func (a App) Serve(msg string, options ...ExecOption) (ok bool)

Serve serves an application lives under path with options where msg describes the execution from the serving action. unless calling with Must(), Serve() will not exit test runtime on failure.

func (*App) SetConfigPath added in v0.24.0

func (a *App) SetConfigPath(path string)

func (App) Simulate added in v0.24.0

func (a App) Simulate(numBlocks, blockSize int)

Simulate runs the simulation test for the app

func (App) SourcePath added in v0.24.0

func (a App) SourcePath() string

func (App) UseRandomHomeDir added in v0.24.0

func (a App) UseRandomHomeDir() (homeDirPath string)

UseRandomHomeDir sets in the blockchain config files generated temporary directories for home directories Returns the random home directory

type AppOption added in v0.24.0

type AppOption func(*App)

func AppConfigPath added in v0.24.0

func AppConfigPath(path string) AppOption

func AppHomePath added in v0.24.0

func AppHomePath(path string) AppOption

type Env

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

Env provides an isolated testing environment and what's needed to make it possible.

func New

func New(t *testing.T) Env

New creates a new testing environment.

func (Env) App added in v0.24.0

func (e Env) App(path string, options ...AppOption) App

func (Env) AppHome added in v0.24.0

func (e Env) AppHome(name string) string

AppHome returns app's root home/data dir path.

func (Env) Ctx

func (e Env) Ctx() context.Context

Ctx returns parent context for the test suite to use for cancelations.

func (Env) Exec

func (e Env) Exec(msg string, steps step.Steps, options ...ExecOption) (ok bool)

Exec executes a command step with options where msg describes the expectation from the test. unless calling with Must(), Exec() will not exit test runtime on failure.

func (Env) HasFailed added in v0.24.0

func (e Env) HasFailed() bool

func (Env) Home

func (e Env) Home() string

Home returns user's home dir.

func (Env) IsAppServed

func (e Env) IsAppServed(ctx context.Context, host chainconfig.Host) error

IsAppServed checks that app is served properly and servers are started to listening before ctx canceled.

func (Env) IsFaucetServed

func (e Env) IsFaucetServed(ctx context.Context, faucetClient cosmosfaucet.HTTPClient) error

IsFaucetServed checks that faucet of the app is served properly

func (Env) Must

func (e Env) Must(ok bool)

Must fails the immediately if not ok. t.Fail() needs to be called for the failing tests before running Must().

func (Env) RequireExpectations added in v0.24.0

func (e Env) RequireExpectations()

func (Env) Scaffold

func (e Env) Scaffold(name string, flags ...string) App

Scaffold scaffolds an app to a unique appPath and returns it.

func (Env) SetCleanup

func (e Env) SetCleanup(f func())

SetCleanup registers a function to be called when the test (or subtest) and all its subtests complete.

func (Env) TmpDir

func (e Env) TmpDir() (path string)

TmpDir creates a new temporary directory.

type ExecOption

type ExecOption func(*execOptions)

func ExecCtx

func ExecCtx(ctx context.Context) ExecOption

ExecCtx sets cancelation context for the execution.

func ExecRetry

func ExecRetry() ExecOption

ExecRetry retries command until it is successful before context is canceled.

func ExecShouldError

func ExecShouldError() ExecOption

ExecShouldError sets the expectations of a command's execution to end with a failure.

func ExecStderr

func ExecStderr(w io.Writer) ExecOption

ExecStderr captures stderr of an execution.

func ExecStdout

func ExecStdout(w io.Writer) ExecOption

ExecStdout captures stdout of an execution.

Jump to

Keyboard shortcuts

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