From 2990b5a3090655c3d56cd1835c5dfb59114da003 Mon Sep 17 00:00:00 2001
From: Luca Bigliardi <shammash@google.com>
Date: Sat, 27 Mar 2021 15:52:48 +0100
Subject: [PATCH] fix ghost test

Signed-off-by: Luca Bigliardi <shammash@google.com>
---
 irc_test.go | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/irc_test.go b/irc_test.go
index 97b36b4..5a521c5 100644
--- a/irc_test.go
+++ b/irc_test.go
@@ -494,18 +494,24 @@ func TestGhostAndIdentify(t *testing.T) {
 	notifier, _, ctx, cancel, stopWg := makeTestNotifier(t, config)
 	notifier.NickservDelayWait = 0 * time.Second
 
-	var testStep, usedNick, unregisteredNickHandler sync.WaitGroup
+	var testStep sync.WaitGroup
 
-	// Trigger 433 for first nick
-	usedNick.Add(1)
-	unregisteredNickHandler.Add(1)
-	nickHandler := func(conn *bufio.ReadWriter, line *irc.Line) error {
+	// Trigger 433 for first nick when we see the USER command
+	userHandler := func(conn *bufio.ReadWriter, line *irc.Line) error {
 		var err error
 		if line.Args[0] == "foo" {
 			_, err = conn.WriteString(":example.com 433 * foo :nick in use\n")
 		}
-		usedNick.Done()
-		unregisteredNickHandler.Wait()
+		return err
+	}
+	server.SetHandler("USER", userHandler)
+
+	// Trigger 001 when we see NICK foo^
+	nickHandler := func(conn *bufio.ReadWriter, line *irc.Line) error {
+		var err error
+		if line.Args[0] == "foo^" {
+			_, err = conn.WriteString(":example.com 001 foo^ :Welcome\n")
+		}
 		return err
 	}
 	server.SetHandler("NICK", nickHandler)
@@ -521,10 +527,6 @@ func TestGhostAndIdentify(t *testing.T) {
 	testStep.Add(1)
 	go notifier.Run(ctx, stopWg)
 
-	usedNick.Wait()
-	server.SetHandler("NICK", nil)
-	unregisteredNickHandler.Done()
-
 	testStep.Wait()
 
 	cancel()