| ... | @@ -1146,6 +1146,30 @@ pub fn GetFinalPathNameByHandle( | ... | @@ -1146,6 +1146,30 @@ pub fn GetFinalPathNameByHandle( |
| 1146 | } | 1146 | } |
| 1147 | } | 1147 | } |
| 1148 | | 1148 | |
| | 1149 | test "GetFinalPathNameByHandle" { |
| | 1150 | if (comptime builtin.os.tag != .windows) |
| | 1151 | return; |
| | 1152 | |
| | 1153 | //any file will do |
| | 1154 | const file = try std.fs.openSelfExe(.{}); |
| | 1155 | defer file.close(); |
| | 1156 | const handle = file.handle; |
| | 1157 | //make this large enough for the test runner exe path |
| | 1158 | var buffer = std.mem.zeroes([1 << 10]u16); |
| | 1159 | |
| | 1160 | //check with sufficient size |
| | 1161 | const nt_length = (try GetFinalPathNameByHandle(handle, .{ .volume_name = .Nt }, buffer[0..])).len; |
| | 1162 | const dos_length = (try GetFinalPathNameByHandle(handle, .{ .volume_name = .Dos }, buffer[0..])).len; |
| | 1163 | |
| | 1164 | //check with insufficient size |
| | 1165 | std.testing.expectError(error.NameTooLong, GetFinalPathNameByHandle(handle, .{ .volume_name = .Nt }, buffer[0 .. nt_length - 1])); |
| | 1166 | std.testing.expectError(error.NameTooLong, GetFinalPathNameByHandle(handle, .{ .volume_name = .Dos }, buffer[0 .. dos_length - 1])); |
| | 1167 | |
| | 1168 | //check with exactly-sufficient size |
| | 1169 | _ = try GetFinalPathNameByHandle(handle, .{ .volume_name = .Nt }, buffer[0..nt_length]); |
| | 1170 | _ = try GetFinalPathNameByHandle(handle, .{ .volume_name = .Dos }, buffer[0..dos_length]); |
| | 1171 | } |
| | 1172 | |
| 1149 | pub const QueryInformationFileError = error{Unexpected}; | 1173 | pub const QueryInformationFileError = error{Unexpected}; |
| 1150 | | 1174 | |
| 1151 | pub fn QueryInformationFile( | 1175 | pub fn QueryInformationFile( |