Files
kandev/apps/backend/internal/task/archivecascade/context_test.go
T
Clément Fiere 01b0dedd6c fix: harden task archive lifecycle recovery (#3651)
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
2026-09-14 16:34:25 +01:00

50 lines
1.3 KiB
Go

package archivecascade
import (
"context"
"testing"
"time"
)
func TestContinuationContextSurvivesCancellationAndRetainsDeadline(t *testing.T) {
parent, cancelParent := context.WithDeadline(context.Background(), time.Now().Add(time.Minute))
ctx, cancel := ContinuationContext(parent)
defer cancel()
defer cancelParent()
parentDeadline, _ := parent.Deadline()
deadline, ok := ctx.Deadline()
if !ok {
t.Fatal("continuation context has no deadline")
}
if deadline.After(parentDeadline) {
t.Fatalf("continuation deadline %s exceeds caller deadline %s", deadline, parentDeadline)
}
cancelParent()
if err := ctx.Err(); err != nil {
t.Fatalf("continuation canceled with caller: %v", err)
}
}
func TestContinuationContextUsesCapturedDeadline(t *testing.T) {
parent, cancelParent := context.WithCancel(context.Background())
defer cancelParent()
capturedDeadline := time.Now().Add(time.Minute)
ctx, cancel := ContinuationContextUntil(parent, capturedDeadline)
defer cancel()
deadline, ok := ctx.Deadline()
if !ok {
t.Fatal("continuation context has no deadline")
}
if deadline.After(capturedDeadline) {
t.Fatalf("continuation deadline %s exceeds captured deadline %s", deadline, capturedDeadline)
}
cancelParent()
if err := ctx.Err(); err != nil {
t.Fatalf("continuation canceled with caller: %v", err)
}
}