我正在使用Vimrunner对Vim插件进行单元测试.一切正常,但我正在寻找一种更好/规范的方式来执行脚本本地功能.由于它们在脚本外部不是直接可见的,因此我现在公开脚本<SID>并将其添加到我的调用中以便运行它们.
我必须将此代码添加到我的插件中以公开SID:
function! s:SID()
let fullname = expand("<sfile>")
return matchstr(fullname, '<SNR>\d\+_')
endfunction
let g:my_plugin_SID = s:SID()
Run Code Online (Sandbox Code Playgroud)
这将使SID暴露为例如<SNR>18_.由于Vim函数都是全局函数,并且只是名称,因此可以通过在SID前面为脚本调用脚本本地函数:
:call <SNR>18_some_function()
Run Code Online (Sandbox Code Playgroud)
然后我在一个规范中这样做:
describe "s:reverse_string" do
let!(:sid) { VIM.command("echo g:my_plugin_SID") }
def reverse_string(string)
VIM.command("echo #{sid}reverse_string('#{string}')")
end
it "does something" do
reverse_string("foo").should == "oof"
end
end
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
我已经使用Vim和病原体一段时间了,事情进展顺利,但最近我开始使用我的ftplugin配置加载订单问题.
我现在遇到的具体问题是python-mode覆盖了我的ftplugin设置.我有一个~/.vim/ftplugin/python.vim包含以下行:
setlocal textwidth=119
Run Code Online (Sandbox Code Playgroud)
python-mode附带了自己的ftplugin文件,该文件也设置textwidth了~/.vim/bundle/python-mode/ftplugin/python/pymode.vim.
问题是Vim现在正在我的ftplugin文件之后加载python-mode的ftplugin文件,所以我最终得到了它textwidth=79.我最近不得不重新安装MacPorts,我认为库存配置必须改变.
我尝试了各种技巧,包括在调用病原体之前关闭文件类型/插件检测,根据其他各种 答案,但没有一个能帮助.
通过使用verbose set textwidth?和一些echomsg调试,我知道两个ftplugin文件都被调用,并且它们被错误地调用(根据我的需要).
有没有办法迫使Vim/pathogen在插件之后调用我的ftplugin文件?
我甚至尝试将我的设置放入~/.vim/after/plugin/pymode.vim,但是在病原体设置插件后立即加载,所以它仍然在ftplugin文件之前运行,只有在我编辑Python文件后才会加载.
我正在使用WTForms-JSON并处理嵌套表单。我想让内部表单可选,但如果存在内部表单,我希望它的字段是必需的。我遇到的问题是FormField不接受验证器。
(虽然我使用的是 WTForms-JSON,但我相信这也适用于 vanilla WTForms。)
这段代码有效,但不符合我想要的方式:
class InnerForm(Form):
foo_id = IntegerField("Foo ID", [Required()])
class OuterForm(Form):
inner = FormField(InnerForm)
Run Code Online (Sandbox Code Playgroud)
上面代码的问题inner是隐式需要。奇怪的是,虽然validate()回报率False时inner被省略了,errors是空的。
此代码不起作用:
class InnerForm(Form):
foo_id = IntegerField("Foo ID", [Required()])
class OuterForm(Form):
inner = FormField(InnerForm, "Inner", [Optional()])
Run Code Online (Sandbox Code Playgroud)
后者产生此错误:
TypeError: FormField does not accept any validators. Instead, define them on the enclosed form.
Run Code Online (Sandbox Code Playgroud)
我的问题是:我怎样才能使inner可选,但foo_id如果inner存在则需要?
我使用的是vimgrep与cw开在搜索结果中quickfix的缓冲区.每次我在quickFix列表中选择一行时,光标都会转移到新的文件缓冲区.如何避免这种情况并将光标始终保留在quickFix列表中?
我有一个可用的 Karma 设置,使用 Webpack。每当我修改测试文件或其任何依赖项时,所有测试都会运行。这一切都很好,但我真的很喜欢它只运行最少数量的测试。如果我更改测试文件,它应该只运行该测试文件。如果我更改源文件,它应该运行任何具有该源文件作为依赖项的测试文件(通过require)。
这是我的相关部分karma.config.js:
files: [
{
pattern: '**/*.test.js',
watched: true,
included: true,
served: true
},
],
preprocessors: {
'**/*.test.js': ['webpack']
},
webpack: {
resolve: {
root: path.join(__dirname, '..', 'webpack'),
extensions: ['', '.js', '.jsx'],
},
module: {
loaders: [
{
test: /.jsx?$/,
loader: 'babel-loader',
exclude: [/node_modules/],
query: {
presets: ['es2015', 'react']
}
},
]
},
},
Run Code Online (Sandbox Code Playgroud)
完整的karma.config.js文件在 gist 中。
我熟悉其他问题中提到的解决方案,包括process.env.npm_config_single_file,但这不是我想要做的。
根据我上面的配置,我希望它将每个文件作为单独的 webpack 处理,这也由 …
我遇到了ksh脚本中的行,这些脚本声明了一个变量并在同一行上提供了另一个shell脚本.例如:
MYVARIABLE="abc" . ~core/script.sh
Run Code Online (Sandbox Code Playgroud)
这是否会产生与单独声明它们不同的行为?例如:
MYVARIABLE="abc"
. ~core/script.sh
Run Code Online (Sandbox Code Playgroud) 我试图找到一种方法来采取特定的关系,并将其移动到数组的末尾。基本上,我有一个current_account,我想使用此帐户并将其移到帐户关系数组的末尾,这样当我在关系上进行迭代时,它将最后显示。我想建立一个范围并在可能的情况下使用SQL,这是我的尝试,但实际上并没有得到任何帮助。
的HTML
<% current_user.accounts.current_sort(current_account).each do |account| %>
<li><%= link_to account.name, switch_account_accounts_path(account_id: account.id) %></li>
<% end %>
Run Code Online (Sandbox Code Playgroud)
当前返回一个由created_at帐户排序的列表。我不希望它在创建时被排序,而是current_account在最底部,所以我创建了一个作用域,current_sort但不确定在这里做什么。
CURRENT_SORT帐户的范围
scope :current_sort, lambda { |account|
}
Run Code Online (Sandbox Code Playgroud)
我希望该范围返回关联数组中最后一个传入的帐户。如何使用SQL或Ruby做到这一点?
我正在尝试让我的django应用程序向运行此服务的iOS应用程序的iOS设备发送推送通知.我正在尝试使用pyapns发送通知.但我无法连接到Apple推送通知服务器.
这项服务大部分已经完成,这是我在退出测试版之前想要开始工作的最后一件事.您可以访问http://pagemove.se/阅读有关该应用程序的信息.
这是日志:
Traceback (most recent call last): File "", line 1, in File "/usr/local/lib/python2.7/dist-packages/pyapns/client.py", line 75, in wrapper return func(*a, **kw) File "/usr/local/lib/python2.7/dist-packages/pyapns/client.py", line 67, in wrapper return func(*a, **kw) File "/usr/local/lib/python2.7/dist-packages/pyapns/client.py", line 97, in notify return _xmlrpc_thread(*f_args) File "/usr/local/lib/python2.7/dist-packages/pyapns/client.py", line 127, in _xmlrpc_thread errback(e) File "/usr/local/lib/python2.7/dist-packages/pyapns/client.py", line 65, in errback_wrapper errback(e) # not an instance of UnknownAppID - nothing we can do here File "/usr/local/lib/python2.7/dist-packages/pyapns/client.py", line 55, in errback raise e xmlrpclib.Fault:
有人有这个问题吗?与.pem文件可以是一回事吗?或者ubuntu-server的设置?我可以忘记在路由器中打开一些端口吗?
编辑 …
我正在解决 mongodb 大学的 mongodb 教程。他们的网站有一个名为“下载作业”的链接。当我单击链接时,没有下载任何内容,而是要下载的 json 文件显示在网址为https://somepath.json的网页上。
我的问题是当你有指向 json 文件的 URL 时如何下载它?
我正在使用带有一些复杂的依赖注入夹具的pytest。我的灯具在长链中使用其他灯具。我希望能够针对特定测试更改链中间的某些固定装置。
鉴于这些(简化的)装置:
@pytest.fixture
def cache():
return Cache()
# Use cache fixture in a new fixture.
@pytest.fixture
def resource(cache):
return Resource(cache=cache, working=True)
# Use resource fixture in a new fixture.
@pytest.fixture
def service(resource):
return Service(resource=resource)
Run Code Online (Sandbox Code Playgroud)
和一些测试:
def test_service_when_resource_working(service):
assert service.status == "good"
def test_service_when_resource_broken(service):
assert service.status == "bad"
Run Code Online (Sandbox Code Playgroud)
如何覆盖resource灯具,使其像这样:
@pytest.fixture
def broken_resource(cache):
return Resource(cache=cache, working=False)
Run Code Online (Sandbox Code Playgroud)
...但仅适用于test_service_when_resource_broken测试用例?我可以创建一个broken_serviceusing broken_resource,但是现实是依赖链很长,我想重用所有的固定装置,但是有选择地在中间为某些选定的测试更改它们。
我想做这样的事情(伪代码):
@pytest.override_fixture('resource', 'broken_resource')
def test_service_when_resource_broken(service):
# service should have been instantiated with broken_resource instead of resource.
assert …Run Code Online (Sandbox Code Playgroud) vim ×3
python ×2
arel ×1
arrays ×1
browser ×1
django ×1
karma-runner ×1
ksh ×1
pathogen ×1
pytest ×1
python-mode ×1
ruby ×1
shell ×1
unit-testing ×1
unix ×1
vimrunner ×1
wtforms ×1
wtforms-json ×1