-- vim:foldmethod=marker local r = require 'repl' -- we don't call it 'repl' so we don't shadow -- repl in the plugin environment pcall(require, 'luarocks.loader') require 'Test.More' local utils = require 'test-utils' plan(5) local clone = r:clone() do -- basic tests {{{ local with_plugin = clone:clone() function with_plugin:foo() end local line_no local _, err = pcall(function() with_plugin:loadplugin(function() line_no = utils.next_line_number() function repl:foo() end end) end) like(err, string.format("%d: The 'foo' method already exists", line_no)) with_plugin:loadplugin(function() function repl:bar() return 17 end end) is(with_plugin:bar(), 17) with_plugin:loadplugin(function() repl.baz = 18 end) is(with_plugin.baz, 18) end -- }}} do -- conflict tests {{{ local clone = r:clone() local line_no clone:loadplugin(function() function repl:foo() end end) local _, err = pcall(function() clone:loadplugin(function() line_no = utils.next_line_number() function repl:foo() end end) end) like(err, tostring(line_no) .. ": The 'foo' method already exists") end -- }}} do -- proxy tests {{{ local clone = r:clone() clone:loadplugin(function() features = 'foo' end) clone:loadplugin(function() ok(repl:hasfeature 'foo') end) end -- }}}