在bash中编写多个简单的脚本时,我常常想知道如何使代码可测试.
通常很难为bash代码编写测试,因为它在获取值并返回值的函数上很少,而在检查和设置环境中的某些方面的函数中很高,修改文件系统,调用程序等 - 依赖于环境或具有副作用的功能.因此,设置和测试代码变得比它们测试的代码复杂得多.
例如,考虑一个简单的测试函数:
function add_to_file() {
local f=$1
cat >> $f
sort -u $f -o $f
}
Run Code Online (Sandbox Code Playgroud)
此功能的测试代码可能包括:
add_to_file.before:
foo
bar
baz
Run Code Online (Sandbox Code Playgroud)
add_to_file.after:
bar
baz
foo
qux
Run Code Online (Sandbox Code Playgroud)
和测试代码:
function test_add_to_file() {
cp add_to_file.{before,tmp}
add_to_file add_to_file.tmp
cmp add_to_file.{tmp,after} && echo pass || echo fail
rm add_to_file.tmp
}
Run Code Online (Sandbox Code Playgroud)
这里有5行代码由6行测试代码和7行数据测试.
现在考虑一个稍微复杂的案例:
function distribute() {
local file=$1 ; shift
local hosts=( "$@" )
for host in "${hosts[@]}" ; do
rsync -ae ssh $file $host:$file
done
}
Run Code Online (Sandbox Code Playgroud)
我甚至不能说如何开始为此测试...
那么,有一个很好的方法在bash脚本中做TDD,还是我应该放弃并把我的努力放在别的地方?
首先看看这个网址:
此目录不存在,但不知何故stackoverflow可以将最后一个目录作为参数传递给他的基本脚本.
这可以配置IIS或Apache吗?怎么样?
我使用的伪代码:
for all V vertices: visited[n]=0
pick any vertex r from graph and set visited[r]=1
For all edges e incident to r
PQ.insert()
while(PQ is not empty)//line 1
f=PQ.min()//f(r,s) is such that visited[s]=0
for all edges e(s,t) incident to s//line 2
if(visited[t]==0)
PQ.insert(e);//line 3
else
PQ.delete(e);//line 4
visited[s]=1;
end while;
Run Code Online (Sandbox Code Playgroud)
根据我的理解:
V-1次数。2E时间对于每一行 2:第 3 行和第 4 行需要log E时间,因为我们正在PQ逐条添加/删除所有边。
所以总time= V-1+2E.logE=E.log E
但是书上说是的 …
有许多正则表达式可以匹配 URL。但是,我正在尝试匹配未出现在<a>超链接标记(HREF、内部值等)中的任何位置的 URL 。所以这些中的任何 URL 都不应该匹配:
<a href="http://www.example.com/">某事</a> <a href="http://www.example.com/">http://www.example2.com</a> <a href="http://www.example.com/"><b>东西</b>http://www.example.com/<span>test</span></a>
<a></a>应该匹配任何外部的 URL 。
我尝试过的一种方法是使用否定前瞻来查看<a>URL 之后的第一个标签是开头<a>还是结尾</a>。如果是关闭,</a>则 URL 必须位于超链接内。我认为这个想法没问题,但是负向前瞻正则表达式不起作用(或者更准确地说,正则表达式没有正确编写)。任何提示都非常感谢。
在尝试提取zip文件时,我收到错误:
c:\ path \name.zip不是RAR存档
没有要提取的文件
我的代码是:
p.StartInfo.FileName = @"C:\Program Files\WinRAR\rar.exe";
p.StartInfo.Arguments = string.Format("x -o- {2} \"{0}\" * \"{1}\"\\ ",
szFN,
outFolder,
passWord == null ? "" : string.Format("-p\"{0}\"", passWord));
Run Code Online (Sandbox Code Playgroud)
GUI版本可以提取zip和7z文件.
为什么这不起作用?如何提取zip和7z文件?
(注意:我有7zip的不同源代码.我想我可以合并这两个,只有当文件有rar扩展时才使用上面的.但我不喜欢那个解决方案.)
我想输出(以编程方式 - C#)我的程序集中所有类的列表.
任何提示或示例代码如何做到这一点?反射?
我有一些代码,我想在页面上运行.我的问题是我不希望它在任何一点上运行多次.它可以运行多次,但只是在其自身的另一个实例正在运行时.我正在使用jQuery并加载ajax内容.
我只需要一些东西来阻止用户点击匆忙的时间并建立起来并ping我的服务器堆.
这可能吗?
谢谢.
我需要将已安装的TrueCrypt磁盘中的文件加载到内存中.有没有办法以编程方式执行此操作?TrueCrypt是否提供API?
我认为最好的尝试方法是挂载卷(当然提示用户输入密码),打开文件,然后卸载卷.有没有办法自动完成这个?
我在Windows Vista上.我有C#,Python和Perl随时可用.
我希望在某些CPU使用条件下测试几台机器上的系统响应能力等.不幸的是,我只能创建~100%的使用率(无限循环)或没有足够的CPU使用率(我正在使用C#).
有没有办法,粗略的近似,因为其他任务也在系统上运行,以20,30,40%(等等)步骤人为地创建CPU使用?
据我所知,系统之间存在差异,因为CPU会有所不同.它更多地是关于可自定义CPU密集型计算的算法/想法,这些算法/想法在当前CPU上创建了足够的使用而没有最大化它我可以调整它们然后以某种方式调整它们以创建所需的百分比.