Skip to content

Commit 52f35a9

Browse files
committed
use indexmap instead of hasmap in reports
1 parent d4aacb7 commit 52f35a9

File tree

5 files changed

+40
-31
lines changed

5 files changed

+40
-31
lines changed

Cargo.lock

Lines changed: 13 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ remove_dir_all = "0.5.2"
6969
ctrlc = "3.1.3"
7070
prometheus = "0.7.0"
7171
cargo_metadata = "0.9.1"
72+
indexmap = "1.4.0"
7273

7374
[dev-dependencies]
7475
assert_cmd = "0.10.1"

src/report/analyzer.rs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ use crate::results::{
44
FailureReason,
55
TestResult::{self, BuildFail},
66
};
7+
use indexmap::IndexMap;
78
use std::collections::BTreeSet;
8-
use std::collections::HashMap;
99

1010
pub enum ToolchainSelect {
1111
Start,
@@ -22,20 +22,20 @@ pub enum ReportConfig {
2222
pub enum ReportCrates {
2323
Plain(Vec<CrateResult>),
2424
Complete {
25-
tree: HashMap<Crate, Vec<CrateResult>>,
26-
results: HashMap<TestResult, Vec<CrateResult>>,
25+
tree: IndexMap<Crate, Vec<CrateResult>>,
26+
results: IndexMap<TestResult, Vec<CrateResult>>,
2727
},
2828
}
2929

3030
#[cfg_attr(test, derive(Debug, PartialEq))]
3131
pub struct TestResults {
32-
pub categories: HashMap<Comparison, ReportCrates>,
33-
pub info: HashMap<Comparison, u32>,
32+
pub categories: IndexMap<Comparison, ReportCrates>,
33+
pub info: IndexMap<Comparison, u32>,
3434
}
3535

3636
fn analyze_detailed(toolchain: usize, crates: Vec<CrateResult>) -> ReportCrates {
37-
let mut tree = HashMap::new();
38-
let mut results = HashMap::new();
37+
let mut tree = IndexMap::new();
38+
let mut results = IndexMap::new();
3939

4040
let mut root = Vec::new();
4141
for krate in crates {
@@ -75,7 +75,7 @@ fn analyze_detailed(toolchain: usize, crates: Vec<CrateResult>) -> ReportCrates
7575
}
7676

7777
pub fn analyze_report(test: RawTestResults) -> TestResults {
78-
let mut comparison = HashMap::new();
78+
let mut comparison = IndexMap::new();
7979
for krate in test.crates {
8080
comparison
8181
.entry(krate.res)
@@ -86,9 +86,9 @@ pub fn analyze_report(test: RawTestResults) -> TestResults {
8686
let info = comparison
8787
.iter()
8888
.map(|(&key, vec)| (key, vec.len() as u32))
89-
.collect::<HashMap<_, _>>();
89+
.collect::<IndexMap<_, _>>();
9090

91-
let mut categories = HashMap::new();
91+
let mut categories = IndexMap::new();
9292
for (cat, crates) in comparison {
9393
if let ReportConfig::Complete(toolchain) = cat.report_config() {
9494
// variants in an enum are numbered following an
@@ -191,18 +191,18 @@ mod tests {
191191
panic!("invalid crate type")
192192
}
193193
})
194-
.collect::<HashMap<_, _>>();
194+
.collect::<IndexMap<_, _>>();
195195
let analyzed = analyze_report(raw);
196196

197-
let mut info = HashMap::new();
197+
let mut info = IndexMap::new();
198198
info.insert(Comparison::Regressed, 5);
199199
info.insert(Comparison::Fixed, 2);
200200
info.insert(Comparison::SameTestPass, 1);
201201

202202
macro_rules! create_results {
203203
($src:expr, $($key:expr => ($($krate:expr),*)),*) => {
204204
{
205-
let mut map = HashMap::new();
205+
let mut map = IndexMap::new();
206206
$(
207207
let mut crates = Vec::new();
208208
$(
@@ -248,7 +248,7 @@ mod tests {
248248

249249
let test_pass = ReportCrates::Plain(vec![crates.remove("test-pass").unwrap()]);
250250

251-
let mut categories = HashMap::new();
251+
let mut categories = IndexMap::new();
252252
categories.insert(Comparison::Regressed, regressed);
253253
categories.insert(Comparison::Fixed, fixed);
254254
categories.insert(Comparison::SameTestPass, test_pass);

src/report/archives.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use crate::prelude::*;
55
use crate::report::{compare, ReportWriter};
66
use crate::results::{EncodedLog, EncodingType, ReadResults};
77
use flate2::{write::GzEncoder, Compression};
8-
use std::collections::HashMap;
8+
use indexmap::IndexMap;
99
use tar::{Builder as TarBuilder, Header as TarHeader};
1010

1111
#[derive(Serialize)]
@@ -23,7 +23,7 @@ pub fn write_logs_archives<DB: ReadResults, W: ReportWriter>(
2323
) -> Fallible<Vec<Archive>> {
2424
let mut archives = Vec::new();
2525
let mut all = TarBuilder::new(GzEncoder::new(Vec::new(), Compression::default()));
26-
let mut by_comparison = HashMap::new();
26+
let mut by_comparison = IndexMap::new();
2727

2828
for krate in crates {
2929
if config.should_skip(krate) {
@@ -86,7 +86,7 @@ pub fn write_logs_archives<DB: ReadResults, W: ReportWriter>(
8686
path: "logs-archives/all.tar.gz".to_string(),
8787
});
8888

89-
for (comparison, archive) in by_comparison.drain() {
89+
for (comparison, archive) in by_comparison.drain(..) {
9090
let data = archive.into_inner()?.finish()?;
9191
dest.write_bytes(
9292
&format!("logs-archives/{}.tar.gz", comparison),

src/report/html.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use crate::report::{
66
ResultColor, ResultName, TestResults,
77
};
88
use crate::results::{EncodingType, FailureReason, TestResult};
9-
use std::collections::HashMap;
9+
use indexmap::IndexMap;
1010

1111
#[derive(Serialize)]
1212
struct NavbarItem {
@@ -27,11 +27,11 @@ enum ReportCratesHTML {
2727
Plain(Vec<CrateResultHTML>),
2828
Tree {
2929
count: u32,
30-
tree: HashMap<String, Vec<CrateResultHTML>>,
30+
tree: IndexMap<String, Vec<CrateResultHTML>>,
3131
},
3232
RootResults {
3333
count: u32,
34-
results: HashMap<String, Vec<CrateResultHTML>>,
34+
results: IndexMap<String, Vec<CrateResultHTML>>,
3535
},
3636
}
3737

@@ -62,10 +62,10 @@ struct ResultsContext<'a> {
6262
ex: &'a Experiment,
6363
nav: Vec<NavbarItem>,
6464
categories: Vec<(Comparison, ReportCratesHTML)>,
65-
info: HashMap<Comparison, u32>,
65+
info: IndexMap<Comparison, u32>,
6666
full: bool,
6767
crates_count: usize,
68-
comparison_colors: HashMap<Comparison, Color>,
68+
comparison_colors: IndexMap<Comparison, Color>,
6969
result_colors: Vec<Color>,
7070
result_names: Vec<String>,
7171
}
@@ -103,8 +103,8 @@ fn write_report<W: ReportWriter>(
103103
dest: &W,
104104
output_templates: bool,
105105
) -> Fallible<()> {
106-
let mut comparison_colors = HashMap::new();
107-
let mut test_results_to_int = HashMap::new();
106+
let mut comparison_colors = IndexMap::new();
107+
let mut test_results_to_int = IndexMap::new();
108108
let mut result_colors = Vec::new();
109109
let mut result_names = Vec::new();
110110

@@ -165,7 +165,7 @@ fn write_report<W: ReportWriter>(
165165
.collect::<Vec<_>>(),
166166
)
167167
})
168-
.collect::<HashMap<_, _>>();
168+
.collect::<IndexMap<_, _>>();
169169
let results = results
170170
.into_iter()
171171
.map(|(res, krates)| {
@@ -182,7 +182,7 @@ fn write_report<W: ReportWriter>(
182182
.collect::<Vec<_>>(),
183183
)
184184
})
185-
.collect::<HashMap<_, _>>();
185+
.collect::<IndexMap<_, _>>();
186186

187187
vec![
188188
(

0 commit comments

Comments
 (0)