Compare commits
7 Commits
v1.6.3
...
integratio
Author | SHA1 | Date | |
---|---|---|---|
![]() |
c69d9a1259 | ||
![]() |
e6491c955a | ||
![]() |
c0b8342b32 | ||
![]() |
6f16f24a98 | ||
![]() |
b5239acd9b | ||
![]() |
73ace6b829 | ||
![]() |
bf78fbc9f4 |
6
.gitmodules
vendored
6
.gitmodules
vendored
@@ -49,3 +49,9 @@
|
||||
[submodule "vendor/github.com/petermattis/goid"]
|
||||
path = vendor/github.com/petermattis/goid
|
||||
url = https://github.com/petermattis/goid
|
||||
[submodule "vendor/github.com/thoj/go-ircevent"]
|
||||
path = vendor/github.com/thoj/go-ircevent
|
||||
url = https://github.com/thoj/go-ircevent
|
||||
[submodule "vendor/github.com/stretchr/testify"]
|
||||
path = vendor/github.com/stretchr/testify
|
||||
url = https://github.com/stretchr/testify
|
||||
|
@@ -202,6 +202,10 @@ func (server *Server) Shutdown() {
|
||||
server.Global("shutting down...")
|
||||
}
|
||||
|
||||
func (server *Server) Stop() {
|
||||
server.done <- true
|
||||
}
|
||||
|
||||
func (server *Server) Run() {
|
||||
for {
|
||||
select {
|
||||
@@ -212,7 +216,7 @@ func (server *Server) Run() {
|
||||
// Give at least 1s for clients to see the shutdown
|
||||
go func() {
|
||||
time.Sleep(1 * time.Second)
|
||||
server.done <- true
|
||||
server.Stop()
|
||||
}()
|
||||
|
||||
case conn := <-server.newConns:
|
||||
|
185
main_test.go
Normal file
185
main_test.go
Normal file
@@ -0,0 +1,185 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"log"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/thoj/go-ircevent"
|
||||
|
||||
eris "github.com/prologic/eris/irc"
|
||||
)
|
||||
|
||||
var (
|
||||
done chan bool
|
||||
server *eris.Server
|
||||
|
||||
client *irc.Connection
|
||||
clients map[string]*irc.Connection
|
||||
|
||||
tls = flag.Bool("tls", false, "run tests with TLS")
|
||||
)
|
||||
|
||||
func setupServer() *eris.Server {
|
||||
config := &eris.Config{}
|
||||
|
||||
config.Network.Name = "Test"
|
||||
config.Server.Name = "test"
|
||||
config.Server.Description = "Test"
|
||||
config.Server.Listen = []string{":6667"}
|
||||
|
||||
server := eris.NewServer(config)
|
||||
|
||||
go server.Run()
|
||||
|
||||
return server
|
||||
}
|
||||
|
||||
func newClient(nick, user, name string, start bool) *irc.Connection {
|
||||
client := irc.IRC(nick, user)
|
||||
client.RealName = name
|
||||
|
||||
err := client.Connect("localhost:6667")
|
||||
if err != nil {
|
||||
log.Fatalf("error setting up test client: %s", err)
|
||||
}
|
||||
|
||||
if start {
|
||||
go client.Loop()
|
||||
}
|
||||
|
||||
return client
|
||||
}
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
flag.Parse()
|
||||
|
||||
done = make(chan bool)
|
||||
|
||||
server = setupServer()
|
||||
|
||||
client = newClient("test", "test", "Test", true)
|
||||
clients = make(map[string]*irc.Connection)
|
||||
clients["test1"] = newClient("test1", "test", "Test 1", true)
|
||||
clients["test2"] = newClient("test2", "test", "Test 2", true)
|
||||
|
||||
result := m.Run()
|
||||
|
||||
for _, client := range clients {
|
||||
client.Quit()
|
||||
}
|
||||
|
||||
server.Stop()
|
||||
|
||||
os.Exit(result)
|
||||
}
|
||||
|
||||
func TestConnection(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
var (
|
||||
expected bool
|
||||
actual chan bool
|
||||
)
|
||||
|
||||
expected = true
|
||||
actual = make(chan bool)
|
||||
|
||||
client := newClient("connect", "connect", "Connect", false)
|
||||
|
||||
client.AddCallback("001", func(e *irc.Event) {
|
||||
defer func() { done <- true }()
|
||||
|
||||
actual <- true
|
||||
})
|
||||
|
||||
time.AfterFunc(1*time.Second, func() { done <- true })
|
||||
defer client.Quit()
|
||||
go client.Loop()
|
||||
<-done
|
||||
|
||||
assert.Equal(expected, <-actual)
|
||||
}
|
||||
|
||||
func TestRplWelcome(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
var (
|
||||
expected string
|
||||
actual chan string
|
||||
)
|
||||
|
||||
expected = "Welcome to the .* Internet Relay Network .*!.*@.*"
|
||||
actual = make(chan string)
|
||||
|
||||
client := newClient("connect", "connect", "Connect", false)
|
||||
|
||||
client.AddCallback("001", func(e *irc.Event) {
|
||||
defer func() { done <- true }()
|
||||
|
||||
actual <- e.Message()
|
||||
})
|
||||
|
||||
time.AfterFunc(1*time.Second, func() { done <- true })
|
||||
defer client.Quit()
|
||||
go client.Loop()
|
||||
<-done
|
||||
|
||||
assert.Regexp(expected, <-actual)
|
||||
}
|
||||
|
||||
func TestUser_JOIN(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
var (
|
||||
expected []string
|
||||
actual chan string
|
||||
)
|
||||
|
||||
expected = []string{"test", "=", "#test", "@test"}
|
||||
actual = make(chan string)
|
||||
|
||||
client.AddCallback("353", func(e *irc.Event) {
|
||||
defer func() { done <- true }()
|
||||
|
||||
for i := range e.Arguments {
|
||||
actual <- e.Arguments[i]
|
||||
}
|
||||
})
|
||||
|
||||
time.AfterFunc(1*time.Second, func() { done <- true })
|
||||
client.Join("#test")
|
||||
client.SendRaw("NAMES #test")
|
||||
<-done
|
||||
|
||||
for i := range expected {
|
||||
assert.Equal(expected[i], <-actual)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUser_PRIVMSG(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
var (
|
||||
expected string
|
||||
actual chan string
|
||||
)
|
||||
|
||||
expected = "Hello World!"
|
||||
actual = make(chan string)
|
||||
|
||||
clients["test1"].AddCallback("PRIVMSG", func(e *irc.Event) {
|
||||
defer func() { done <- true }()
|
||||
|
||||
actual <- e.Message()
|
||||
})
|
||||
|
||||
time.AfterFunc(1*time.Second, func() { done <- true })
|
||||
client.Privmsg("test1", expected)
|
||||
<-done
|
||||
|
||||
assert.Equal(expected, <-actual)
|
||||
}
|
1
vendor/github.com/stretchr/testify
generated
vendored
Submodule
1
vendor/github.com/stretchr/testify
generated
vendored
Submodule
Submodule vendor/github.com/stretchr/testify added at 2aa2c176b9
1
vendor/github.com/thoj/go-ircevent
generated
vendored
Submodule
1
vendor/github.com/thoj/go-ircevent
generated
vendored
Submodule
Submodule vendor/github.com/thoj/go-ircevent added at db5bd176f7
2
vendor/golang.org/x/crypto
generated
vendored
2
vendor/golang.org/x/crypto
generated
vendored
Submodule vendor/golang.org/x/crypto updated: b080dc9a8c...365904b0f3
2
vendor/golang.org/x/sys
generated
vendored
2
vendor/golang.org/x/sys
generated
vendored
Submodule vendor/golang.org/x/sys updated: 4ff8c001ce...a204229cd8
2
vendor/golang.org/x/text
generated
vendored
2
vendor/golang.org/x/text
generated
vendored
Submodule vendor/golang.org/x/text updated: 88f656faf3...a352c5cd19
Reference in New Issue
Block a user