diff --git a/graphql/accessor_shard_cache.lua b/graphql/accessor_shard_cache.lua index 8d767bd..97b0225 100644 --- a/graphql/accessor_shard_cache.lua +++ b/graphql/accessor_shard_cache.lua @@ -1,6 +1,6 @@ local json = require('json') -local shard = require('shard') local utils = require('graphql.utils') +local shard = utils.optional_require('shard') local request_batch = require('graphql.request_batch') local accessor_shard_index_info = require('graphql.accessor_shard_index_info') diff --git a/test/extra/no_shard/shard.lua b/test/extra/no_shard/shard.lua new file mode 100644 index 0000000..84ec2c4 --- /dev/null +++ b/test/extra/no_shard/shard.lua @@ -0,0 +1 @@ +error('shard should not be mandatory dependency') diff --git a/test/extra/shard_optional.lua b/test/extra/shard_optional.lua new file mode 100755 index 0000000..d8b5aa2 --- /dev/null +++ b/test/extra/shard_optional.lua @@ -0,0 +1,35 @@ +#!/usr/bin/env tarantool + +-- https://github.com/tarantool/graphql/issues/218 + +local fio = require('fio') +local tap = require('tap') + +-- require in-repo version of graphql/ sources despite current working directory +local cur_dir = fio.abspath(debug.getinfo(1).source:match("@?(.*/)") + :gsub('/./', '/'):gsub('/+$', '')) +package.path = + cur_dir .. '/../../?/init.lua' .. ';' .. + cur_dir .. '/../../?.lua' .. ';' .. + package.path + +-- require no_shard/shard.lua instead of the real shard module +package.path = + cur_dir .. '/no_shard/?/init.lua' .. ';' .. + cur_dir .. '/no_shard/?.lua' .. ';' .. + package.path + +local graphql = require('graphql') +local testdata = require('test.testdata.common_testdata') + +local test = tap.test('optional shard') +test:plan(1) + +box.cfg{wal_mode='none'} + +local cfg = testdata.get_test_metadata() +cfg.accessor = 'space' +local ok = pcall(graphql.new, cfg) +test:ok(ok, 'shard is optional') + +os.exit(test:check() == true and 0 or 1) diff --git a/test/test_utils.lua b/test/test_utils.lua index fdfd4a5..5eacdf3 100644 --- a/test/test_utils.lua +++ b/test/test_utils.lua @@ -10,10 +10,10 @@ local log = require('log') local yaml = require('yaml') local avro_schema = require('avro_schema') local digest = require('digest') -local shard = require('shard') +local utils = require('graphql.utils') +local shard = utils.optional_require('shard') local graphql = require('graphql') local multirunner = require('test.common.multirunner') -local utils = require('graphql.utils') local test_run = utils.optional_require('test_run') test_run = test_run and test_run.new()