integrations

package
v1.17.3 Latest Latest
Warning

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

Go to latest
Published: Oct 15, 2022 License: MIT Imports: 19 Imported by: 0

README

Integrations tests

Integration tests can be run with make commands for the appropriate backends, namely:

make test-mysql
make test-pgsql
make test-sqlite

Make sure to perform a clean build before running tests:

make clean build

Run all tests via local drone

drone exec --local --build-event "pull_request"

Run sqlite integrations tests

Start tests

make test-sqlite

Run MySQL integrations tests

Setup a MySQL database inside docker

docker run -e "MYSQL_DATABASE=test" -e "MYSQL_ALLOW_EMPTY_PASSWORD=yes" -p 3306:3306 --rm --name mysql mysql:latest #(just ctrl-c to stop db and clean the container)
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --rm --name elasticsearch elasticsearch:7.6.0 #(in a second terminal, just ctrl-c to stop db and clean the container)

Start tests based on the database container

TEST_MYSQL_HOST=localhost:3306 TEST_MYSQL_DBNAME=test TEST_MYSQL_USERNAME=root TEST_MYSQL_PASSWORD='' make test-mysql

Run pgsql integrations tests

Setup a pgsql database inside docker

docker run -e "POSTGRES_DB=test" -p 5432:5432 --rm --name pgsql postgres:latest #(just ctrl-c to stop db and clean the container)

Start tests based on the database container

TEST_PGSQL_HOST=localhost:5432 TEST_PGSQL_DBNAME=test TEST_PGSQL_USERNAME=postgres TEST_PGSQL_PASSWORD=postgres make test-pgsql

Run mssql integrations tests

Setup a mssql database inside docker

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_PID=Standard" -e "SA_PASSWORD=MwantsaSecurePassword1" -p 1433:1433 --rm --name mssql microsoft/mssql-server-linux:latest #(just ctrl-c to stop db and clean the container)

Start tests based on the database container

TEST_MSSQL_HOST=localhost:1433 TEST_MSSQL_DBNAME=gitea_test TEST_MSSQL_USERNAME=sa TEST_MSSQL_PASSWORD=MwantsaSecurePassword1 make test-mssql

Running individual tests

Example command to run GPG test:

For SQLite:

make test-sqlite#GPG

For other databases(replace mssql to mysql, mysql8 or pgsql):

TEST_MSSQL_HOST=localhost:1433 TEST_MSSQL_DBNAME=test TEST_MSSQL_USERNAME=sa TEST_MSSQL_PASSWORD=MwantsaSecurePassword1 make test-mssql#GPG

Setting timeouts for declaring long-tests and long-flushes

We appreciate that some testing machines may not be very powerful and the default timeouts for declaring a slow test or a slow clean-up flush may not be appropriate.

You can either:

  • Within the test ini file set the following section:
[integration-tests]
SLOW_TEST = 10s ; 10s is the default value
SLOW_FLUSH = 5S ; 5s is the default value
  • Set the following environment variables:
GITEA_SLOW_TEST_TIME="10s" GITEA_SLOW_FLUSH_TIME="5s" make test-sqlite

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewTestLogger added in v1.9.0

func NewTestLogger() log.LoggerProvider

NewTestLogger creates a TestLogger as a log.LoggerProvider

func PrintCurrentTest added in v1.9.0

func PrintCurrentTest(t testing.TB, skip ...int) func()

PrintCurrentTest prints the current test to os.Stdout

func Printf added in v1.9.0

func Printf(format string, args ...interface{})

Printf takes a format and args and prints the string to os.Stdout

Types

type HTMLDoc

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

HTMLDoc struct

func NewHTMLParser

func NewHTMLParser(t testing.TB, body *bytes.Buffer) *HTMLDoc

NewHTMLParser parse html file

func (*HTMLDoc) AssertElement added in v1.3.0

func (doc *HTMLDoc) AssertElement(t testing.TB, selector string, checkExists bool)

AssertElement check if element by selector exists or does not exist depending on checkExists

func (*HTMLDoc) Find added in v1.12.6

func (doc *HTMLDoc) Find(selector string) *goquery.Selection

Find gets the descendants of each element in the current set of matched elements, filtered by a selector. It returns a new Selection object containing these matched elements.

func (*HTMLDoc) GetCSRF

func (doc *HTMLDoc) GetCSRF() string

GetCSRF for getting CSRF token value from input

func (*HTMLDoc) GetInputValueByID

func (doc *HTMLDoc) GetInputValueByID(id string) string

GetInputValueByID for get input value by id

func (*HTMLDoc) GetInputValueByName

func (doc *HTMLDoc) GetInputValueByName(name string) string

GetInputValueByName for get input value by name

type TestLogger added in v1.9.0

type TestLogger struct {
	log.WriterLogger
}

TestLogger is a logger which will write to the testing log

func (*TestLogger) Content added in v1.17.0

func (log *TestLogger) Content() (string, error)

Content returns the content accumulated in the content provider

func (*TestLogger) Flush added in v1.9.0

func (log *TestLogger) Flush()

Flush when log should be flushed

func (*TestLogger) GetName added in v1.9.0

func (log *TestLogger) GetName() string

GetName returns the default name for this implementation

func (*TestLogger) Init added in v1.9.0

func (log *TestLogger) Init(config string) error

Init inits connection writer with json config. json config only need key "level".

func (*TestLogger) ReleaseReopen added in v1.13.0

func (log *TestLogger) ReleaseReopen() error

ReleaseReopen does nothing

Jump to

Keyboard shortcuts

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