#file #minimize #output #find #line #input #iteration

nightly app 最小化器

将文件最小化以找到最小测试用例

4 个稳定版本

1.2.1 2024年8月11日
1.2.0 2024年8月9日
1.1.0 2024年8月5日
1.0.0 2024年8月4日

文本处理 中排名 84

Download history • Rust 包仓库 208/week @ 2024-08-01 • Rust 包仓库 356/week @ 2024-08-08 • Rust 包仓库 247/week @ 2024-08-15 • Rust 包仓库

每月下载量 811

MIT 许可证

30KB
719

最小化器

最小化器是一个程序,可以将文件的大小最小化,同时仍满足设定的要求。

它非常适合最小化用于快速应用的文件,每次迭代小于一秒。

目前它只能在 Linux 上运行,需要 nightly rust 编译器。

如何使用

  • 为 Linux 安装 nightly rust,克隆仓库并构建项目
cargo install --path .

或者只需使用 crates.io 编译它

cargo install minimizer
  • 运行最小化器
minimizer --input-file input.txt --output-file output.txt --command "echo {}" --attempts 300 --broken-info "BROKEN"

以获取每个参数的信息,阅读源代码或运行

minimizer --help

测试它

echo "ABCDEFGH" > input.txt
echo "gABCDEFFGH" >> input.txt
echo "BCDERF" >> input.txt
echo "ABCD" >> input.txt
echo "BDCE" >> input.txt

运行

minimizer --input-file input.txt --output-file output.txt --command "cat {}" --attempts 300 --broken-info "AB"

可能会生成 output.txt 文件,其中包含内容

AB

由于算法不是确定的,所以结果可能不总是相同

使用更大的尝试次数将增加获得更小输出文件的机会,并启用依赖于逐行/字节/字符删除的附加模式。

它是如何工作的

开始时,最小化器读取文件并检查该文件是否返回预期输出。

如果是,则应用程序继续运行。

首先,应用程序检查文件是否包含有效的 utf-8 字符,如果包含,则启用两种附加模式,这些模式基于行和字符。

每个模式(在行、字符和字节的 Vec<> 上工作)在开始时都尝试从文件的开头/结尾删除项目。

后来在循环中,从中间/开始/结尾随机删除元素,以检查文件是否仍然返回预期输出。

为什么

我只是需要这个 - 我怀疑它对任何人都没有用。

许可证

MIT 许可证

依赖项

~2-10MB
~80K SLoC