5个版本
使用旧的Rust 2015
0.2.0 | 2022年5月10日 |
---|---|
0.1.3 | 2020年3月25日 |
0.1.2 | 2018年6月9日 |
0.1.1 | 2018年6月7日 |
0.1.0 | 2018年5月14日 |
285 在 测试 中排名
每月40次下载
在 junitxml2subunit 中使用
25KB
494 行
Subunit Rust
此仓库包含subunit v2协议的Rust实现。它提供了在Rust中本地读写subunit流的接口。subunit v2协议在testing-cabal/subunit仓库中进行了文档化。
读取subunit数据包
读取subunit数据包首先需要一个实现Read特质的对象,其中包含subunit流。parse_subunit()函数用于首先将整个流缓冲到内存中,然后解析内容并返回一个Event结构体的向量。例如,解析来自文件的subunit流
let mut f = File::open("results.subunit")?;
let events = parse_subunit(f).unwrap();
在这个例子中,results.subunit文件将使用一个Event结构体在events向量中打开并解析,每个文件中的subunit数据包对应一个Event结构体。
写入subunit数据包
写入subunit数据包首先需要创建一个事件结构来描述数据包的内容。例如
let mut event_start = Event {
status: Some("inprogress".to_string()),
test_id: Some("A_test_id".to_string()),
timestamp: Some(Utc.ymd(2014, 7, 8).and_hms(9, 10, 11)),
tags: Some(vec!["tag_a".to_string(), "tag_b".to_string()]),
file_content: None,
file_name: None,
mime_type: None,
route_code: None
};
典型的测试事件通常涉及2个数据包,一个标记测试的开始,另一个标记测试的结束
let mut event_end = Event {
status: Some("success".to_string()),
test_id: Some("A_test_id".to_string()),
timestamp: Some(Utc.ymd(2014, 7, 8).and_hms(9, 12, 0)),
tags: Some(vec!["tag_a".to_string(), "tag_b".to_string()]),
file_content: Some("stdout content".to_string().into_bytes()),
file_name: Some("stdout:''".to_string()),
mime_type: Some("text/plain;charset=utf8".to_string()),
route_code: None
};
然后您希望将数据包写入某个地方。任何实现std::io::Write特质的对象都可以用于数据包,包括诸如文件和TCPStream之类的对象。在这种情况下,我们将使用Vec将其保留在内存中
let mut subunit_stream: Vec<u8> = Vec::new();
subunit_stream = event_start.write(subunit_stream)?;
subunit_stream = event_end.write(subunit_stream)?;
这样,subunit_stream缓冲区将包含该测试事件的subunit流内容。
依赖关系
~1.5MB
~21K SLoC