34 lines
823 B
Lua
34 lines
823 B
Lua
-- Test that metatables are protected from manipulation
|
|
|
|
-- Test 1: String metatable should return protection value, not actual metatable
|
|
local mt = getmetatable("")
|
|
if mt ~= "string" then
|
|
error("FAIL: string metatable should return 'string', got " .. tostring(mt))
|
|
end
|
|
|
|
-- Test 2: Cannot add new globals
|
|
local ok, err = pcall(function()
|
|
_G.my_new_global = "test"
|
|
end)
|
|
if ok then
|
|
error("FAIL: Should not be able to add new globals")
|
|
end
|
|
|
|
-- Test 3: Cannot modify existing globals
|
|
local ok2, err2 = pcall(function()
|
|
_G.print = nil
|
|
end)
|
|
if ok2 then
|
|
error("FAIL: Should not be able to modify print")
|
|
end
|
|
|
|
-- Test 4: Cannot replace math table
|
|
local ok3, err3 = pcall(function()
|
|
_G.math = {}
|
|
end)
|
|
if ok3 then
|
|
error("FAIL: Should not be able to replace math")
|
|
end
|
|
|
|
print("PASS: Metatables protected")
|