【发布时间】:2015-07-20 04:07:08
【问题描述】:
我想要学习一些 lua/moonscript 的方法是将我很棒的配置文件 (rc.lua) 迁移到 moonscript 和 unit-test 沿途的一些东西。为此,我将 rc.lua 设置为需要这样的 moonscript 配置文件
package.path = pathsToAdd .. package.path
-- a bit of a hassle to amend the lua require paths
-- correctly; I boldly assume for now that these are not the
-- cause of the problem
require('moonscript')
require('config')
对于第一个单元测试,检查我的配置是否调用了模块“齿轮”的特定功能,一切都相当顺利。我最终嘲笑了每次后续调用的 gears 模块
require('gears')
通过像这样设置单元测试
package.loaded.gears = myMockVersion
快进到当我的测试配置文件需要“糟糕”模块时: 它的 init.lua 被调用,立即执行
return
{
client = require("awful.client");
...
}
这导致 client.lua 做
...
local tag = require("awful.tag")
...
local client = {}
-- define lots of functions, register some signal handlers
return client
现在,对于仍在阅读的每个人来说,tag.lua 中的问题:
...
local capi =
{
...
client = client,
...
}
...
capi.client.connect_signal(...)
最后一次调用抛出一个好旧的
attempt to index a nil value (field 'client')
我认为这是因为 client.lua 还没有通过最初的几个 require 调用,因此在全局范围内根本不可用,或者至少还没有定义它的功能。
最后,这让我想到了一个问题:
为什么这甚至会在你日常的启动过程中运行(糟糕的几乎是核心模块),以及在尝试复制它所在的环境时我错过了什么。
非常感谢您。
真心的
【问题讨论】:
标签: lua awesome-wm moonscript