chore(ci): use qdm12/log library to have timed logs for tests

This commit is contained in:
Quentin McGaw
2025-11-26 12:44:39 +00:00
parent 57d8eb03c5
commit 08a7aae5f1
7 changed files with 46 additions and 21 deletions
+3 -3
View File
@@ -5,12 +5,12 @@ import (
"fmt"
)
func MullvadTest(ctx context.Context) error {
func MullvadTest(ctx context.Context, logger Logger) error {
expectedSecrets := []string{
"Wireguard private key",
"Wireguard address",
}
secrets, err := readSecrets(ctx, expectedSecrets)
secrets, err := readSecrets(ctx, expectedSecrets, logger)
if err != nil {
return fmt.Errorf("reading secrets: %w", err)
}
@@ -23,5 +23,5 @@ func MullvadTest(ctx context.Context) error {
"WIREGUARD_PRIVATE_KEY=" + secrets[0],
"WIREGUARD_ADDRESSES=" + secrets[1],
}
return simpleTest(ctx, env)
return simpleTest(ctx, env, logger)
}
+3 -3
View File
@@ -5,11 +5,11 @@ import (
"fmt"
)
func ProtonVPNTest(ctx context.Context) error {
func ProtonVPNTest(ctx context.Context, logger Logger) error {
expectedSecrets := []string{
"Wireguard private key",
}
secrets, err := readSecrets(ctx, expectedSecrets)
secrets, err := readSecrets(ctx, expectedSecrets, logger)
if err != nil {
return fmt.Errorf("reading secrets: %w", err)
}
@@ -21,5 +21,5 @@ func ProtonVPNTest(ctx context.Context) error {
"SERVER_COUNTRIES=United States",
"WIREGUARD_PRIVATE_KEY=" + secrets[0],
}
return simpleTest(ctx, env)
return simpleTest(ctx, env, logger)
}
+10 -3
View File
@@ -8,17 +8,24 @@ import (
"strings"
)
func readSecrets(ctx context.Context, expectedSecrets []string) (lines []string, err error) {
type Logger interface {
Info(msg string)
Infof(format string, args ...any)
}
func readSecrets(ctx context.Context, expectedSecrets []string,
logger Logger,
) (lines []string, err error) {
scanner := bufio.NewScanner(os.Stdin)
lines = make([]string, 0, len(expectedSecrets))
for i := range expectedSecrets {
fmt.Println("🤫 reading", expectedSecrets[i], "from Stdin...")
logger.Infof("🤫 reading %s from Stdin...", expectedSecrets[i])
if !scanner.Scan() {
break
}
lines = append(lines, strings.TrimSpace(scanner.Text()))
fmt.Println("🤫 "+expectedSecrets[i], "secret read successfully")
logger.Infof("🤫 %s secret read successfully", expectedSecrets[i])
if ctx.Err() != nil {
return nil, ctx.Err()
}
+7 -7
View File
@@ -16,7 +16,7 @@ import (
func ptrTo[T any](v T) *T { return &v }
func simpleTest(ctx context.Context, env []string) error {
func simpleTest(ctx context.Context, env []string, logger Logger) error {
const timeout = 30 * time.Second
ctx, cancel := context.WithTimeout(ctx, timeout)
defer cancel()
@@ -57,7 +57,7 @@ func simpleTest(ctx context.Context, env []string) error {
return fmt.Errorf("starting container: %w", err)
}
return waitForLogLine(ctx, client, containerID, beforeStartTime)
return waitForLogLine(ctx, client, containerID, beforeStartTime, logger)
}
func stopContainer(client *client.Client, containerID string) {
@@ -74,7 +74,7 @@ func stopContainer(client *client.Client, containerID string) {
var successRegexp = regexp.MustCompile(`^.+Public IP address is .+$`)
func waitForLogLine(ctx context.Context, client *client.Client, containerID string,
beforeStartTime time.Time,
beforeStartTime time.Time, logger Logger,
) error {
logOptions := container.LogsOptions{
ShowStdout: true,
@@ -105,13 +105,13 @@ func waitForLogLine(ctx context.Context, client *client.Client, containerID stri
}
err := scanner.Err()
if err != nil && err != io.EOF {
logSeenLines(linesSeen)
logSeenLines(logger, linesSeen)
return fmt.Errorf("reading log stream: %w", err)
}
// The scanner is either done or cannot read because of EOF
fmt.Println("The log scanner stopped")
logSeenLines(linesSeen)
logger.Info("the log scanner stopped")
logSeenLines(logger, linesSeen)
// Check if the container is still running
inspect, err := client.ContainerInspect(ctx, containerID)
@@ -126,7 +126,7 @@ func waitForLogLine(ctx context.Context, client *client.Client, containerID stri
return ctx.Err()
}
func logSeenLines(lines []string) {
func logSeenLines(logger Logger, lines []string) {
fmt.Println("Logs seen so far:")
for _, line := range lines {
fmt.Println(" " + line)