mirror of
https://github.com/ivuorinen/gibidify.git
synced 2026-01-26 03:24:05 +00:00
* chore(ci): update go to 1.25, add permissions and envs * fix(ci): update pr-lint.yml * chore: update go, fix linting * fix: tests and linting * fix(lint): lint fixes, renovate should now pass * fix: updates, security upgrades * chore: workflow updates, lint * fix: more lint, checkmake, and other fixes * fix: more lint, convert scripts to POSIX compliant * fix: simplify codeql workflow * tests: increase test coverage, fix found issues * fix(lint): editorconfig checking, add to linters * fix(lint): shellcheck, add to linters * fix(lint): apply cr comment suggestions * fix(ci): remove step-security/harden-runner * fix(lint): remove duplication, apply cr fixes * fix(ci): tests in CI/CD pipeline * chore(lint): deduplication of strings * fix(lint): apply cr comment suggestions * fix(ci): actionlint * fix(lint): apply cr comment suggestions * chore: lint, add deps management
108 lines
3.2 KiB
Go
108 lines
3.2 KiB
Go
package testutil
|
|
|
|
import (
|
|
"errors"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestVerifyContentContains(t *testing.T) {
|
|
// Test successful verification
|
|
t.Run("all substrings present", func(t *testing.T) {
|
|
content := "This is a test file with multiple lines"
|
|
VerifyContentContains(t, content, []string{"test file", "multiple lines"})
|
|
// If we get here, the test passed
|
|
})
|
|
|
|
// Test empty expected substrings
|
|
t.Run("empty expected substrings", func(t *testing.T) {
|
|
content := "Any content"
|
|
VerifyContentContains(t, content, []string{})
|
|
// Should pass with no expected strings
|
|
})
|
|
|
|
// For failure cases, we'll test indirectly by verifying behavior
|
|
t.Run("verify error reporting", func(t *testing.T) {
|
|
// We can't easily test the failure case directly since it calls t.Errorf
|
|
// But we can at least verify the function doesn't panic
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
t.Errorf("VerifyContentContains panicked: %v", r)
|
|
}
|
|
}()
|
|
|
|
// This would normally fail, but we're just checking it doesn't panic
|
|
content := "test"
|
|
expected := []string{"not found"}
|
|
// Create a subtest that we expect to fail
|
|
t.Run("expected_failure", func(t *testing.T) {
|
|
t.Skip("Skipping actual failure test")
|
|
VerifyContentContains(t, content, expected)
|
|
})
|
|
})
|
|
}
|
|
|
|
func TestMustSucceed(t *testing.T) {
|
|
// Test with nil error (should succeed)
|
|
t.Run("nil error", func(t *testing.T) {
|
|
MustSucceed(t, nil, "successful operation")
|
|
// If we get here, the test passed
|
|
})
|
|
|
|
// Test error behavior without causing test failure
|
|
t.Run("verify error handling", func(t *testing.T) {
|
|
// We can't test the failure case directly since it calls t.Fatalf
|
|
// But we can verify the function exists and is callable
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
t.Errorf("MustSucceed panicked: %v", r)
|
|
}
|
|
}()
|
|
|
|
// Create a subtest that we expect to fail
|
|
t.Run("expected_failure", func(t *testing.T) {
|
|
t.Skip("Skipping actual failure test")
|
|
MustSucceed(t, errors.New("test error"), "failed operation")
|
|
})
|
|
})
|
|
}
|
|
|
|
func TestCloseFile(t *testing.T) {
|
|
// Test closing a normal file
|
|
t.Run("close normal file", func(t *testing.T) {
|
|
file, err := os.CreateTemp(t.TempDir(), "test")
|
|
if err != nil {
|
|
t.Fatalf("Failed to create test file: %v", err)
|
|
}
|
|
|
|
CloseFile(t, file)
|
|
|
|
// Verify file is closed by trying to write to it
|
|
_, writeErr := file.Write([]byte("test"))
|
|
if writeErr == nil {
|
|
t.Error("Expected write to fail on closed file")
|
|
}
|
|
})
|
|
|
|
// Test that CloseFile doesn't panic on already closed files
|
|
// Note: We can't easily test the error case without causing test failure
|
|
// since CloseFile calls t.Errorf, which is the expected behavior
|
|
t.Run("verify CloseFile function exists and is callable", func(t *testing.T) {
|
|
// This test just verifies the function signature and basic functionality
|
|
// The error case is tested in integration tests where failures are expected
|
|
file, err := os.CreateTemp(t.TempDir(), "test")
|
|
if err != nil {
|
|
t.Fatalf("Failed to create test file: %v", err)
|
|
}
|
|
|
|
// Test normal case - file should close successfully
|
|
CloseFile(t, file)
|
|
|
|
// Verify file is closed
|
|
_, writeErr := file.Write([]byte("test"))
|
|
if writeErr == nil {
|
|
t.Error("Expected write to fail on closed file")
|
|
}
|
|
})
|
|
}
|