opentofu/internal/tofu/util_test.go

39 lines
625 B
Go
Raw Normal View History

// Copyright (c) The OpenTofu Authors
// SPDX-License-Identifier: MPL-2.0
// Copyright (c) 2023 HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
2023-09-20 07:16:53 -05:00
package tofu
2014-09-17 12:53:24 -05:00
import (
"testing"
"time"
)
func TestSemaphore(t *testing.T) {
s := NewSemaphore(2)
timer := time.AfterFunc(time.Second, func() {
panic("deadlock")
})
defer timer.Stop()
s.Acquire()
if !s.TryAcquire() {
t.Fatalf("should acquire")
}
if s.TryAcquire() {
t.Fatalf("should not acquire")
}
s.Release()
s.Release()
// This release should panic
defer func() {
r := recover()
if r == nil {
t.Fatalf("should panic")
}
}()
s.Release()
}