aboutsummaryrefslogtreecommitdiff
path: root/test/functional/api/compatibility_spec.lua
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2016-10-26 15:20:00 +0200
committerJustin M. Keyes <justinkz@gmail.com>2016-10-28 14:33:13 +0200
commitc5f5f427c6f8d1b4136bf41171f8f0980561080e (patch)
tree3ee5625e251a64d270c1ef7f761a3725b1e84a44 /test/functional/api/compatibility_spec.lua
parentf25797f86976cbccf697d6df953154c5e59656e6 (diff)
downloadrneovim-c5f5f427c6f8d1b4136bf41171f8f0980561080e.tar.gz
rneovim-c5f5f427c6f8d1b4136bf41171f8f0980561080e.tar.bz2
rneovim-c5f5f427c6f8d1b4136bf41171f8f0980561080e.zip
api: api_info()['version']
API level is disconnected from NVIM version. The API metadata holds the current API level, and the lowest backwards-compatible level supported by this instance. Release 0.1.6 is the first release that reports the Nvim version and API level. metadata['version'] = { major: 0, minor: 1, patch: 6, api_level: 1, api_compatible: 0, api_prerelease: false, } The API level may remain unchanged across Nvim releases if the API has not changed. When changing the API, - set NVIM_API_PRERELEASE to true - increment NVIM_API_LEVEL (at most once per Nvim version) - adjust NVIM_API_LEVEL_COMPAT if backwards-compatibility was broken api_level_0.mpack was generated from Nvim 0.1.5 with: nvim --api-info
Diffstat (limited to 'test/functional/api/compatibility_spec.lua')
-rw-r--r--test/functional/api/compatibility_spec.lua65
1 files changed, 0 insertions, 65 deletions
diff --git a/test/functional/api/compatibility_spec.lua b/test/functional/api/compatibility_spec.lua
deleted file mode 100644
index e0fc625b46..0000000000
--- a/test/functional/api/compatibility_spec.lua
+++ /dev/null
@@ -1,65 +0,0 @@
-
-local helpers = require('test.functional.helpers')(after_each)
-local lfs = require('lfs')
-local mpack = require('mpack')
-local clear, eq, neq = helpers.clear, helpers.eq, helpers.neq
-
-local read_mpack_file = function(fname)
- local fd = io.open(fname, 'rb')
- local data = fd:read('*a')
- fd:close()
- local unpack = mpack.Unpacker()
- return unpack(data)
-end
-
--- ignore metadata in API function spec
-local remove_function_metadata = function(fspec)
- fspec['can_fail'] = nil
- fspec['async'] = nil
- fspec['method'] = nil
- fspec['since'] = nil
- fspec['deprecated_since'] = nil
- fspec['receives_channel_id'] = nil
- for idx,_ in ipairs(fspec['parameters']) do
- fspec['parameters'][idx][2] = ''
- end
-end
-
-clear()
-local api_level = helpers.call('api_info')['api_level']
-
-describe('api compatibility', function()
- before_each(clear)
-
- it("version metadata is sane", function()
- local info = helpers.call('api_info')
- local current = info['api_level']['current']
- local compatibility = info['api_level']['compatibility']
- neq(current, nil)
- neq(compatibility, nil)
- assert(current >= compatibility)
- end)
-
- for ver = api_level['compatibility'], api_level['current'] do
- local path = 'test/functional/fixtures/api-info/' .. tostring(ver) .. '.mpack'
- it('are backwards compatible with api level '..ver, function()
- if lfs.attributes(path,"mode") ~= "file" then
- pending("No fixture found, skipping test")
- return
- end
-
- local old_api = read_mpack_file(path)
- local api = helpers.call('api_info')
-
- for _, fspec in ipairs(old_api['functions']) do
- remove_function_metadata(fspec)
- for _, fspec_new in ipairs(api['functions']) do
- if fspec['name'] == fspec_new['name'] then
- remove_function_metadata(fspec_new)
- eq(fspec, fspec_new)
- end
- end
- end
- end)
- end
-end)