mirror of
https://github.com/rwinkhart/go-winio.git
synced 2026-09-05 16:47:31 -04:00
Addressed Feedback
Signed-off-by: Varun Gokulnath <gvarun22@outlook.com>
This commit is contained in:
+95
-2
@@ -6,10 +6,17 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
const (
|
||||
testLxSymlinkAbsolutePath = "/usr/bin/bash"
|
||||
testWindowsSymlinkPath = `C:\Windows\System32`
|
||||
testLxSymlinkRelativePath = "../bin/sh"
|
||||
testLxSymlinkSpecialCharsPath = "/path/with spaces/and-special!@#$%/файл.txt"
|
||||
)
|
||||
|
||||
func TestLxSymlinkRoundTrip(t *testing.T) {
|
||||
// Test LX symlink encode/decode
|
||||
original := &ReparsePoint{
|
||||
Target: "/usr/bin/bash",
|
||||
Target: testLxSymlinkAbsolutePath,
|
||||
IsMountPoint: false,
|
||||
IsLxSymlink: true,
|
||||
}
|
||||
@@ -38,7 +45,7 @@ func TestLxSymlinkRoundTrip(t *testing.T) {
|
||||
func TestWindowsSymlinkNotLx(t *testing.T) {
|
||||
// Test that regular Windows symlinks are not marked as LX
|
||||
original := &ReparsePoint{
|
||||
Target: `C:\Windows\System32`,
|
||||
Target: testWindowsSymlinkPath,
|
||||
IsMountPoint: false,
|
||||
IsLxSymlink: false,
|
||||
}
|
||||
@@ -57,3 +64,89 @@ func TestWindowsSymlinkNotLx(t *testing.T) {
|
||||
t.Errorf("Windows symlink incorrectly marked as LX symlink")
|
||||
}
|
||||
}
|
||||
|
||||
func TestLxSymlinkEmptyTarget(t *testing.T) {
|
||||
// Test LX symlink with empty target
|
||||
original := &ReparsePoint{
|
||||
Target: "",
|
||||
IsMountPoint: false,
|
||||
IsLxSymlink: true,
|
||||
}
|
||||
|
||||
// Encode
|
||||
encoded := EncodeReparsePoint(original)
|
||||
|
||||
// Decode
|
||||
decoded, err := DecodeReparsePoint(encoded)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to decode: %v", err)
|
||||
}
|
||||
|
||||
// Verify
|
||||
if decoded.Target != original.Target {
|
||||
t.Errorf("Target mismatch: got %q, want %q", decoded.Target, original.Target)
|
||||
}
|
||||
if !decoded.IsLxSymlink {
|
||||
t.Errorf("IsLxSymlink should be true")
|
||||
}
|
||||
}
|
||||
|
||||
func TestLxSymlinkRelativePath(t *testing.T) {
|
||||
// Test LX symlink with relative path
|
||||
original := &ReparsePoint{
|
||||
Target: testLxSymlinkRelativePath,
|
||||
IsMountPoint: false,
|
||||
IsLxSymlink: true,
|
||||
}
|
||||
|
||||
// Encode
|
||||
encoded := EncodeReparsePoint(original)
|
||||
|
||||
// Decode
|
||||
decoded, err := DecodeReparsePoint(encoded)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to decode: %v", err)
|
||||
}
|
||||
|
||||
// Verify
|
||||
if decoded.Target != original.Target {
|
||||
t.Errorf("Target mismatch: got %q, want %q", decoded.Target, original.Target)
|
||||
}
|
||||
if !decoded.IsLxSymlink {
|
||||
t.Errorf("IsLxSymlink should be true")
|
||||
}
|
||||
}
|
||||
|
||||
func TestLxSymlinkSpecialCharacters(t *testing.T) {
|
||||
// Test LX symlink with special characters and Unicode
|
||||
original := &ReparsePoint{
|
||||
Target: testLxSymlinkSpecialCharsPath,
|
||||
IsMountPoint: false,
|
||||
IsLxSymlink: true,
|
||||
}
|
||||
|
||||
// Encode
|
||||
encoded := EncodeReparsePoint(original)
|
||||
|
||||
// Decode
|
||||
decoded, err := DecodeReparsePoint(encoded)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to decode: %v", err)
|
||||
}
|
||||
|
||||
// Verify
|
||||
if decoded.Target != original.Target {
|
||||
t.Errorf("Target mismatch: got %q, want %q", decoded.Target, original.Target)
|
||||
}
|
||||
if !decoded.IsLxSymlink {
|
||||
t.Errorf("IsLxSymlink should be true")
|
||||
}
|
||||
}
|
||||
|
||||
func TestEncodeReparsePointNil(t *testing.T) {
|
||||
// Test encoding a nil ReparsePoint
|
||||
encoded := EncodeReparsePoint(nil)
|
||||
if encoded != nil {
|
||||
t.Errorf("Expected nil result for nil input, got %v", encoded)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user