From b108fa6722c5e0f57961a3c13009dd2a81bf38c3 Mon Sep 17 00:00:00 2001 From: David Ortiz Date: Tue, 14 Nov 2017 11:23:24 +0100 Subject: [PATCH] linked_list: raise error when trying to modify read-only list --- apicast/src/linked_list.lua | 5 ++++- spec/linked_list_spec.lua | 2 +- spec/policy_chain_spec.lua | 6 +++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/apicast/src/linked_list.lua b/apicast/src/linked_list.lua index 607523356..cbc90bace 100644 --- a/apicast/src/linked_list.lua +++ b/apicast/src/linked_list.lua @@ -1,4 +1,5 @@ local setmetatable = setmetatable +local error = error local _M = { @@ -14,7 +15,9 @@ end local ro_mt = { __index = __index, - __newindex = noop, + __newindex = function() + error("readonly list") + end, } local rw_mt = { diff --git a/spec/linked_list_spec.lua b/spec/linked_list_spec.lua index 3278cd434..e6fa7d62e 100644 --- a/spec/linked_list_spec.lua +++ b/spec/linked_list_spec.lua @@ -14,7 +14,7 @@ describe('linked_list', function() it('returns a list that cannot be modified', function() local list = linked_list.readonly({ a = 1 }) - list.abc = 123 + assert.has_error(function() list.abc = 123 end, 'readonly list') assert.is_nil(list.abc) end) diff --git a/spec/policy_chain_spec.lua b/spec/policy_chain_spec.lua index da02747c0..84547156a 100644 --- a/spec/policy_chain_spec.lua +++ b/spec/policy_chain_spec.lua @@ -125,9 +125,9 @@ describe('policy_chain', function() local shared_data = chain:export() - -- This does not raise, but it does not do anything. - shared_data.new_shared_data = 'some_data' - + assert.has_error(function() + shared_data.new_shared_data = 'some_data' + end, 'readonly list') assert.is_nil(shared_data.new_shared_data) end)