Skip to content

Commit 9ceac1b

Browse files
committed
add check for driver overriding
Added check for an attempt to register a driver with an already registered name.
1 parent a2044cd commit 9ceac1b

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

queue/init.lua

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ local function register_driver(driver_name, tube_ctr)
1515
error('tube control methods must contain functions "create_space"'
1616
.. ' and "new"')
1717
end
18+
if queue.driver[driver_name] then
19+
error(('overriding registered driver "%s"'):format(driver_name))
20+
end
1821
queue.driver[driver_name] = tube_ctr
1922
end
2023

t/001-tube-init.t

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,17 @@ local engine = os.getenv('ENGINE') or 'memtx'
1212
local mock_tube = { create_space = function() end, new = function() end }
1313

1414
test:test('test queue mock addition', function(test)
15-
test:plan(2)
15+
test:plan(3)
1616

1717
local queue = require('queue')
1818
queue.register_driver('mock', mock_tube)
1919
test:is(queue.driver.mock, mock_tube)
20+
21+
local res, err = pcall(queue.register_driver, 'mock', mock_tube)
22+
local check = not res and
23+
string.match(err, 'overriding registered driver') ~= nil
24+
test:ok(check, 'check a driver override failure')
25+
2026
tnt.cfg{}
2127

2228
test:is(queue.driver.mock, mock_tube)

t/140-register-driver-after-cfg.t

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ local tap = require('tap')
33
local tnt = require('t.tnt')
44

55
local test = tap.test('test driver register')
6-
test:plan(2)
6+
test:plan(3)
77

88
local mock_tube = {
99
create_space = function() end,
@@ -35,6 +35,11 @@ local function check_driver_register()
3535
end
3636

3737
test:ok(check_standart_drivers, 'standard drivers are defined')
38+
39+
local res, err = pcall(queue.register_driver, 'mock', mock_tube)
40+
local check = not res and
41+
string.match(err, 'overriding registered driver') ~= nil
42+
test:ok(check, 'check a driver override failure')
3843
end
3944

4045
check_driver_register()

0 commit comments

Comments
 (0)