我有一个项目所有的包,包括。 nosetests
本身安装在特定于该项目的virtualenv中,存储在~/.virtualenvs
下。但是,M-x nosetests-one
和M-x nosetests-all
等(显然)甚至没有查看virtualenv bin
目录中的命令,因此这些命令失败并显示一条错误消息,指出命令{{1}无法找到;即使不是这样,他们也会调用错误的nosetests
二进制文件,因为我需要在我的virtualenv中调用测试而不是全局环境。
我已经尝试了几次谷歌搜索来找到解决方案,但我找不到比我现有的hacky(但简单可靠)方法更好的方法,只需将nosetests
设置为硬编码值即可。项目的nose-global-name
文件:
.dir-locals.el
但是,尽管这是一个可行的解决方案,但我希望有一个更通用的解决方案,不需要对每个新项目进行手动调整。
答案 0 :(得分:2)
看看这段代码。它将项目名称提取为父目录
(nose-find-project-root)
。在你的情况下,它是myproject
。然后呢
暂时将nose-global-name
设置为您当前拥有的那个(自当前项目以来)
名称是nosetests
)。
(defun nosetests-all-virtualenv ()
(interactive)
(let ((nose-global-name
(format
"~/.virtualenvs/%s/bin/nosetests"
(car
(last
(delete
""
(split-string
(nose-find-project-root)
"/")))))))
(nosetests-all)))