2022-09-02 19:18:23 +00:00
// Copyright 2019 The Gitea Authors. All rights reserved.
2022-11-27 18:20:29 +00:00
// SPDX-License-Identifier: MIT
2022-09-02 19:18:23 +00:00
package e2e
import (
"context"
"net"
"net/http"
"net/url"
"testing"
"time"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/tests"
2024-07-30 19:41:10 +00:00
"github.com/stretchr/testify/require"
2022-09-02 19:18:23 +00:00
)
func onGiteaRunTB ( t testing . TB , callback func ( testing . TB , * url . URL ) , prepare ... bool ) {
if len ( prepare ) == 0 || prepare [ 0 ] {
defer tests . PrepareTestEnv ( t , 1 ) ( )
}
s := http . Server {
2023-08-12 16:30:16 +00:00
Handler : testE2eWebRoutes ,
2022-09-02 19:18:23 +00:00
}
u , err := url . Parse ( setting . AppURL )
2024-07-30 19:41:10 +00:00
require . NoError ( t , err )
2022-09-02 19:18:23 +00:00
listener , err := net . Listen ( "tcp" , u . Host )
i := 0
for err != nil && i <= 10 {
time . Sleep ( 100 * time . Millisecond )
listener , err = net . Listen ( "tcp" , u . Host )
i ++
}
2024-07-30 19:41:10 +00:00
require . NoError ( t , err )
2022-09-02 19:18:23 +00:00
u . Host = listener . Addr ( ) . String ( )
defer func ( ) {
ctx , cancel := context . WithTimeout ( context . Background ( ) , 2 * time . Minute )
s . Shutdown ( ctx )
cancel ( )
} ( )
go s . Serve ( listener )
// Started by config go ssh.Listen(setting.SSH.ListenHost, setting.SSH.ListenPort, setting.SSH.ServerCiphers, setting.SSH.ServerKeyExchanges, setting.SSH.ServerMACs)
callback ( t , u )
}
func onGiteaRun ( t * testing . T , callback func ( * testing . T , * url . URL ) , prepare ... bool ) {
onGiteaRunTB ( t , func ( t testing . TB , u * url . URL ) {
callback ( t . ( * testing . T ) , u )
} , prepare ... )
}