diff options
| -rwxr-xr-x | scripts/mktests | 65 | 
1 files changed, 59 insertions, 6 deletions
| diff --git a/scripts/mktests b/scripts/mktests index 757e360..ad8c4f5 100755 --- a/scripts/mktests +++ b/scripts/mktests @@ -18,14 +18,68 @@ local tests       = { }  local lpeg        = require "lpeg"  local lpegmatch   = lpeg.match +config            = { luaotfload = { } } +luatexbase        = { } +  kpse.set_program_name "luatex"  require "lualibs"  require "luaotfload-basics-gen.lua"  require "luaotfload-log.lua" -require "luaotfload-parsers" -require "luaotfload-configuration" -require "luaotfload-database" + +fonts = { names = { } } -- for db; normally provided by the fontloaders + +local require_init = { } + +local loadmodule = function (name) +    local v = require ("luaotfload-" .. name) +    if v then +        local mod = { } +        local tv  = type (v) +        if tv == "table" then +            mod.name = name +            mod.init = v.init +            require_init [#require_init + 1] = mod +        elseif tv == "function" then +            mod.name = name +            mod.init = v +            require_init [#require_init + 1] = mod +        end +    end +end + +require "alt_getopt" + +loadmodule "log.lua"       --- this populates the luaotfload.log.* namespace +loadmodule "parsers"       --- fonts.conf, configuration, and request syntax +loadmodule "configuration" --- configuration file handling +loadmodule "database" +loadmodule "resolvers"     --- Font lookup + +do --- init_modules +    --- NB we don’t command the logger at this point. +    local todo = #require_init +    local ret  = true +    for i = 1, todo do +        local mod  = require_init[i] +        local name = mod.name +        local init = mod.init +        if type (init) ~= "function" then +            error ("luaotfload broken; module " +                   .. name .. " missing initializers!") +        end +        local v = mod.init () +        if v == true then +            --- evaluated well +        elseif type (v) == "table" then +            luaotfload[name] = v +        else +            error ("luaotfload broken; initialization of module " +                   .. name .. " returned " .. tostring (v) .. ".") +            return false +        end +    end +end  local names = fonts.names @@ -234,7 +288,6 @@ local default_spec = {  local resolve_font_name = function ()    local failed, total = 0, 0 -  local resolve_name = names.resolve_name    for nset = 1, #font_name_tests do      local set = font_name_tests[nset] @@ -246,7 +299,7 @@ local resolve_font_name = function ()          local input_spec = table.copy (default_spec)          input_spec.name = input          input_spec.specification = input_spec.lookup .. ":" .. input -        local result = resolve_name (input_spec) == output +        local result = fonts.names.lookup_font_name (input_spec) == output          total = total + 1          if not result then            failed = failed + 1 @@ -260,7 +313,7 @@ local resolve_font_name = function ()                                  .. ":" .. input_spec.name          input_spec.optsize = input_spec.optsize or default_spec.optsize          input_spec.style   = translate_style [input_spec.style] -        local result = resolve_name (input_spec) == output +        local result = fonts.names.lookup_font_name (input_spec) == output          total = total + 1          if not result then            failed = failed + 1 | 
