add gs
This commit is contained in:
+197
@@ -0,0 +1,197 @@
|
||||
return function()
|
||||
local BacktraceReport = require(script.Parent.BacktraceReport)
|
||||
local CorePackages = game:GetService("CorePackages")
|
||||
|
||||
local tutils = require(CorePackages.Packages.tutils)
|
||||
|
||||
describe(".new", function()
|
||||
it("should return a valid report", function()
|
||||
local report = BacktraceReport.new()
|
||||
local isValid = report:validate()
|
||||
|
||||
expect(isValid).to.equal(true)
|
||||
end)
|
||||
end)
|
||||
|
||||
describe(":validate", function()
|
||||
it("should return false if the report has registers but no arch information, true otherwise", function()
|
||||
local report = BacktraceReport.new()
|
||||
|
||||
report.threads = {
|
||||
default = {
|
||||
stack = {
|
||||
[1] = {
|
||||
registers = {
|
||||
rax = "16045690984833335023",
|
||||
},
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
expect(report:validate()).to.equal(false)
|
||||
|
||||
-- invalid arch
|
||||
report.arch = {
|
||||
name = "x64",
|
||||
regsiters = nil,
|
||||
}
|
||||
|
||||
expect(report:validate()).to.equal(false)
|
||||
|
||||
-- correct arch
|
||||
report.arch = {
|
||||
name = "x64",
|
||||
registers = {
|
||||
rax = "u64",
|
||||
},
|
||||
}
|
||||
|
||||
expect(report:validate()).to.equal(true)
|
||||
end)
|
||||
end)
|
||||
|
||||
describe("IAnnotations", function()
|
||||
local IAnnotations = BacktraceReport.IAnnotations
|
||||
|
||||
it("should return false if not a table", function()
|
||||
local result = IAnnotations("string")
|
||||
expect(result).to.equal(false)
|
||||
end)
|
||||
|
||||
it("should return false if a non-table value is not string, number, or boolean", function()
|
||||
local result = IAnnotations({
|
||||
Value = function() end,
|
||||
})
|
||||
expect(result).to.equal(false)
|
||||
|
||||
result = IAnnotations({
|
||||
Value = "ha",
|
||||
Value2 = 1,
|
||||
Value3 = false,
|
||||
Recursive = {
|
||||
Value11 = "haha",
|
||||
MoreRecursive = {
|
||||
Value12 = "hahaha",
|
||||
Value22 = function() end,
|
||||
},
|
||||
},
|
||||
})
|
||||
expect(result).to.equal(false)
|
||||
end)
|
||||
|
||||
it("should return true for an empty table", function()
|
||||
expect(IAnnotations({})).to.equal(true)
|
||||
end)
|
||||
|
||||
it("should return true if a non-table value is either string, number, or boolean", function()
|
||||
local result = IAnnotations({
|
||||
Value = "ha",
|
||||
Value2 = 1,
|
||||
Value3 = false,
|
||||
Recursive = {
|
||||
Value11 = "haha",
|
||||
Value21 = 2,
|
||||
Array = {
|
||||
[1] = "hahaha",
|
||||
[2] = 3,
|
||||
[3] = true,
|
||||
},
|
||||
},
|
||||
})
|
||||
expect(result).to.equal(true)
|
||||
end)
|
||||
end)
|
||||
|
||||
describe(":addAttributes", function()
|
||||
it("should correctly add attributes", function()
|
||||
local report = BacktraceReport.new()
|
||||
report:addAttributes({
|
||||
att1 = 1,
|
||||
})
|
||||
expect(tutils.fieldCount(report.attributes)).to.equal(1)
|
||||
expect(report.attributes.att1).to.equal(1)
|
||||
report:addAttributes({
|
||||
att1 = 2,
|
||||
att2 = false,
|
||||
att3 = "test",
|
||||
})
|
||||
expect(tutils.fieldCount(report.attributes)).to.equal(3)
|
||||
expect(report.attributes.att1).to.equal(2)
|
||||
expect(report.attributes.att2).to.equal(false)
|
||||
expect(report.attributes.att3).to.equal("test")
|
||||
end)
|
||||
end)
|
||||
|
||||
describe(":addAnnotations", function()
|
||||
it("should correctly add annotations", function()
|
||||
local environmentVariables = {
|
||||
ENV_VAR_EXAMPLE = "example",
|
||||
}
|
||||
local dependencies = {
|
||||
Roact = {
|
||||
version = "0.2.0",
|
||||
},
|
||||
Otter = {
|
||||
version = "0.1.0",
|
||||
},
|
||||
}
|
||||
|
||||
local report = BacktraceReport.new()
|
||||
|
||||
report:addAnnotations({
|
||||
EnvironmentVariables = environmentVariables,
|
||||
})
|
||||
expect(tutils.fieldCount(report.annotations)).to.equal(1)
|
||||
expect(tutils.deepEqual(report.annotations.EnvironmentVariables, environmentVariables)).to.equal(true)
|
||||
|
||||
report:addAnnotations({
|
||||
SomeProperty = true,
|
||||
Dependencies = dependencies,
|
||||
})
|
||||
expect(tutils.fieldCount(report.annotations)).to.equal(3)
|
||||
expect(tutils.deepEqual(report.annotations.EnvironmentVariables, environmentVariables)).to.equal(true)
|
||||
expect(report.annotations.SomeProperty).to.equal(true)
|
||||
expect(tutils.deepEqual(report.annotations.Dependencies, dependencies)).to.equal(true)
|
||||
end)
|
||||
end)
|
||||
|
||||
describe(":addStackToThread", function()
|
||||
it("should correctly add stack to the thread with the name provided", function()
|
||||
local stack1 = {
|
||||
[1] = {
|
||||
line = "100",
|
||||
funcName = "field testError",
|
||||
sourceCode = "1",
|
||||
}
|
||||
}
|
||||
local stack2 = {
|
||||
[1] = {
|
||||
line = "110",
|
||||
funcName = "field ?",
|
||||
sourceCode = "2",
|
||||
}
|
||||
}
|
||||
|
||||
local report = BacktraceReport.new()
|
||||
|
||||
report:addStackToThread(stack1, "main")
|
||||
expect(tutils.fieldCount(report.threads)).to.equal(1)
|
||||
expect(tutils.deepEqual(report.threads.main.stack, stack1)).to.equal(true)
|
||||
|
||||
report:addStackToThread(stack2, "1")
|
||||
expect(tutils.fieldCount(report.threads)).to.equal(2)
|
||||
expect(tutils.deepEqual(report.threads.main.stack, stack1)).to.equal(true)
|
||||
expect(tutils.deepEqual(report.threads["1"].stack, stack2)).to.equal(true)
|
||||
end)
|
||||
end)
|
||||
|
||||
describe(".fromMessageAndStack", function()
|
||||
it("should return a valid report", function()
|
||||
local report = BacktraceReport.fromMessageAndStack("index nil", "Script 'Workspace.Script', Line 3")
|
||||
local isValid = report:validate()
|
||||
|
||||
expect(isValid).to.equal(true)
|
||||
end)
|
||||
end)
|
||||
end
|
||||
Reference in New Issue
Block a user