diff --git a/src/expect/src/matchers.lua b/src/expect/src/matchers.lua index e045117e..0e435400 100644 --- a/src/expect/src/matchers.lua +++ b/src/expect/src/matchers.lua @@ -756,8 +756,14 @@ local function toEqual( end else message = function() - return matcherHint(matcherName, nil, nil, options) - .. "\n\n" + local retval = matcherHint(matcherName, nil, nil, options) .. "\n\n" + if type(received) == "buffer" or type(expected) == "buffer" then + retval = retval + .. DIM_COLOR("If comparing buffers, consider reading their data and comparing that instead") + .. "\n\n" + end + + return retval .. printDiffOrStringify(expected, received, EXPECTED_LABEL, RECEIVED_LABEL, isExpand(self.expand)) end end diff --git a/src/jest-get-type/src/__tests__/getType.spec.lua b/src/jest-get-type/src/__tests__/getType.spec.lua index 85651308..573d9dc4 100644 --- a/src/jest-get-type/src/__tests__/getType.spec.lua +++ b/src/jest-get-type/src/__tests__/getType.spec.lua @@ -59,6 +59,10 @@ describe(".getType()", function() expect(getType(true)).toBe("boolean") end) + it("buffer", function() + expect(getType(buffer.fromstring("test"))).toBe("buffer") + end) + -- ROBLOX deviation start: additional symbol tests it("symbol", function() expect(getType(Symbol("test"))).toBe("symbol") diff --git a/src/jest-get-type/src/init.lua b/src/jest-get-type/src/init.lua index b4558bba..e08978ee 100644 --- a/src/jest-get-type/src/init.lua +++ b/src/jest-get-type/src/init.lua @@ -32,6 +32,9 @@ local function getType(value: any): string if typeof(value) == "boolean" then return "boolean" end + if typeof(value) == "buffer" then + return "buffer" + end if typeof(value) == "function" then return "function" end diff --git a/src/jest-roblox-shared/src/expect.lua b/src/jest-roblox-shared/src/expect.lua index b6a459ea..b72e5ed8 100644 --- a/src/jest-roblox-shared/src/expect.lua +++ b/src/jest-roblox-shared/src/expect.lua @@ -139,6 +139,8 @@ local function eq( return a == b elseif className == "regexp" then return tostring(a) == tostring(b) + elseif className == "buffer" then + return buffer.tostring(a) == buffer.tostring(b) end if typeof(a) ~= "table" or typeof(b) ~= "table" then diff --git a/src/pretty-format/src/init.lua b/src/pretty-format/src/init.lua index 71317da3..3e095051 100644 --- a/src/pretty-format/src/init.lua +++ b/src/pretty-format/src/init.lua @@ -144,6 +144,11 @@ local function printBasicValue( return val end + if typeOf == "buffer" then + local bytes = { string.byte(buffer.tostring(val), 1, -1) } + return string.format("buffer { size = %*, data = %q }", buffer.len(val), table.concat(bytes, "/")) + end + -- ROBLOX deviation: output classname for Instance types if typeOf == "Instance" then return val.ClassName