我对 Rust 绝对是菜鸟,而且 Rust 书似乎没有涵盖我的单元测试的具体用例。
我正在为我的大学学位实施计算机语言基准游戏。为了保持一致,我决定每种语言和算法实现都应遵守以下目录结构:
root
|
|__ language_1
| |
| |__ algorithm_1
| | |
| | |__ algorithm_1 <-- The algorithm logic.
| | |
| | |__ algorithm_1_tests <-- Tests.
| | |
| | |__ algorithm_1_run <-- A `main` function to execute the algorithm logic.
| |
| |__ algorithm_2
|
|__ language_2
...
Run Code Online (Sandbox Code Playgroud)
我需要这种一致性,因为我稍后将编写一个 bash 脚本来遍历此目录树结构,并能够轻松编译(如果需要)并运行必要的文件。
我目前正在使用 Rust 编程语言学习和编写算法。我将算法创建为库文件,并有一个单独的文件来调用库文件并执行其中的函数。这很好用。
我的问题在于测试。我希望有一个包含所有测试的单独文件,导入原始算法逻辑文件,并调用(和断言)函数。
为了使这一点更清楚,我将提供一个我正在运行的模拟示例:
root
|
|__ rust
| |
| |__ algorithm
| …Run Code Online (Sandbox Code Playgroud) 我能够通过docker build -t foo/bar ..
这是它的Dockerfile:
FROM ubuntu:20.04
COPY benchmark.sh /home/benchmarking-programming-languages/benchmark.sh
CMD [ "/home/benchmarking-programming-languages/benchmark.sh -v" ]
Run Code Online (Sandbox Code Playgroud)
这是文件benchmark.sh:
FROM ubuntu:20.04
COPY benchmark.sh /home/benchmarking-programming-languages/benchmark.sh
CMD [ "/home/benchmarking-programming-languages/benchmark.sh -v" ]
Run Code Online (Sandbox Code Playgroud)
但是,通过运行它docker run -it foo/bar会出现错误:
调用远程方法“docker-run-container”时出错:错误:(HTTP 代码 400)意外 - 无法创建垫片:OCI 运行时创建失败:container_linux.go:380:启动容器进程导致:exec:“/home/benchmarking-编程语言/benchmark.sh -v": stat /home/benchmarking-programming-languages/benchmark.sh -v: 没有这样的文件或目录: 未知
尽管如此,当通过 shell 将图像作为容器运行时docker run -it foo/bar sh,我不仅可以看到该文件,而且可以毫无错误地执行它!
有人可以提出错误发生的原因以及如何修复它吗?
我读过许多在承诺中添加超时的不同方法,但大多数(如果不是全部)似乎都利用了该setTimeout()方法。根据定义:
The setTimeout() method calls a function or evaluates an expression after a specified number of milliseconds.
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是一种表达方式:
"If the function executed inside the promise (that will either resolve or
reject the promise), does not complete within a specified x number of
milliseconds, automatically reject or raise an exception."
Run Code Online (Sandbox Code Playgroud)
如果这与上面定义的相同(使用该setTimeout()方法),我们将不胜感激!
bash ×1
docker ×1
dockerfile ×1
javascript ×1
node.js ×1
promise ×1
rust ×1
testing ×1
timeout ×1
unit-testing ×1