| author | |
| committer | |
| log | 90fde14c5f4406c284ec030186172b3db4697258 |
| tree | 1a5f2ae17ce10105b1d9c97b069f6703cf72a196 |
| parent | a91a8df6791b6fe228ad616acd9fbbde46451651 |
When comparing slice elements, `std.meta.eql` is used which only compares pointer address and length to determine equality for pointer types. This previously led to confusing results where `expectEqualSlices` would appear to fail on seemingly equal slices (judging by the output of `expectEqualSlices`. For example:
try testing.expectEqualSlices(
[]const i64,
&[_][]const i64{ &[_]i64{ 1, 2, 3 }, &[_]i64{ 5, 5, 5 } },
&[_][]const i64{ &[_]i64{ 1, 2, 3 }, &[_]i64{ 5, 5, 5 } },
);
Previously, this would result in:
============ expected this output: ============= len: 2 (0x2)
[0]: { 1, 2, 3 }
[1]: { 5, 5, 5 }
============= instead found this: ============== len: 2 (0x2)
[0]: { 1, 2, 3 }
[1]: { 5, 5, 5 }
================================================
After this commit, it will result in:
============ expected this output: ============= len: 2 (0x2)
[0]i64@7ff7e2773758: { 1, 2, 3 }
[1]i64@7ff7e2773770: { 5, 5, 5 }
============= instead found this: ============== len: 2 (0x2)
[0]i64@7ff7e2773788: { 1, 2, 3 }
[1]i64@7ff7e27737a0: { 5, 5, 5 }
================================================1 files changed, 5 insertions(+), 1 deletions(-)
lib/std/testing.zig+5-1| ... | @@ -394,7 +394,11 @@ fn SliceDiffer(comptime T: type) type { | ... | @@ -394,7 +394,11 @@ fn SliceDiffer(comptime T: type) type { |
| 394 | var full_index = self.start_index + i; | 394 | var full_index = self.start_index + i; |
| 395 | const diff = if (i < self.actual.len) !std.meta.eql(self.actual[i], value) else true; | 395 | const diff = if (i < self.actual.len) !std.meta.eql(self.actual[i], value) else true; |
| 396 | if (diff) try self.ttyconf.setColor(writer, .red); | 396 | if (diff) try self.ttyconf.setColor(writer, .red); |
| 397 | try writer.print("[{}]: {any}\n", .{ full_index, value }); | 397 | if (@typeInfo(T) == .Pointer) { |
| 398 | try writer.print("[{}]{*}: {any}\n", .{ full_index, value, value }); | ||
| 399 | } else { | ||
| 400 | try writer.print("[{}]: {any}\n", .{ full_index, value }); | ||
| 401 | } | ||
| 398 | if (diff) try self.ttyconf.setColor(writer, .reset); | 402 | if (diff) try self.ttyconf.setColor(writer, .reset); |
| 399 | } | 403 | } |
| 400 | } | 404 | } |