Skip to content

Commit 7314e5b

Browse files
arlosiTurbo87
authored andcommitted
Use BTreeMap for features to ensure stable sorting
1 parent a26e319 commit 7314e5b

File tree

6 files changed

+15
-15
lines changed

6 files changed

+15
-15
lines changed

src/downloads_counter.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ mod tests {
247247
use crate::models::{Crate, NewCrate, NewUser, NewVersion, User};
248248
use diesel::PgConnection;
249249
use semver::Version;
250-
use std::collections::HashMap;
250+
use std::collections::BTreeMap;
251251

252252
#[test]
253253
fn test_increment_and_persist_all() {
@@ -452,7 +452,7 @@ mod tests {
452452
let version = NewVersion::new(
453453
self.krate.id,
454454
&Version::parse(&format!("{}.0.0", self.next_version)).unwrap(),
455-
&HashMap::new(),
455+
&BTreeMap::new(),
456456
None,
457457
None,
458458
0,

src/models/version.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::collections::HashMap;
1+
use std::collections::BTreeMap;
22

33
use chrono::NaiveDateTime;
44
use diesel::prelude::*;
@@ -127,7 +127,7 @@ impl NewVersion {
127127
pub fn new(
128128
crate_id: i32,
129129
num: &semver::Version,
130-
features: &HashMap<String, Vec<String>>,
130+
features: &BTreeMap<String, Vec<String>>,
131131
license: Option<String>,
132132
license_file: Option<&str>,
133133
crate_size: i32,

src/tests/builders/publish.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use cargo_registry::views::krate_publish as u;
2-
use std::{collections::HashMap, io::Read};
2+
use std::{collections::BTreeMap, collections::HashMap, io::Read};
33

44
use flate2::{write::GzEncoder, Compression};
55
use once_cell::sync::Lazy;
@@ -36,7 +36,7 @@ pub struct PublishBuilder {
3636
readme: Option<String>,
3737
tarball: Vec<u8>,
3838
version: semver::Version,
39-
features: HashMap<u::EncodableFeatureName, Vec<u::EncodableFeature>>,
39+
features: BTreeMap<u::EncodableFeatureName, Vec<u::EncodableFeature>>,
4040
}
4141

4242
impl PublishBuilder {
@@ -56,7 +56,7 @@ impl PublishBuilder {
5656
readme: None,
5757
tarball: EMPTY_TARBALL_BYTES.to_vec(),
5858
version: semver::Version::parse("1.0.0").unwrap(),
59-
features: HashMap::new(),
59+
features: BTreeMap::new(),
6060
}
6161
}
6262

src/tests/builders/version.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use cargo_registry::{
33
schema::{dependencies, versions},
44
util::errors::AppResult,
55
};
6-
use std::collections::HashMap;
6+
use std::collections::BTreeMap;
77

88
use chrono::NaiveDateTime;
99
use diesel::prelude::*;
@@ -12,7 +12,7 @@ use diesel::prelude::*;
1212
pub struct VersionBuilder<'a> {
1313
created_at: Option<NaiveDateTime>,
1414
dependencies: Vec<(i32, Option<&'static str>)>,
15-
features: HashMap<String, Vec<String>>,
15+
features: BTreeMap<String, Vec<String>>,
1616
license: Option<&'a str>,
1717
license_file: Option<&'a str>,
1818
num: semver::Version,
@@ -36,7 +36,7 @@ impl<'a> VersionBuilder<'a> {
3636
VersionBuilder {
3737
created_at: None,
3838
dependencies: Vec::new(),
39-
features: HashMap::new(),
39+
features: BTreeMap::new(),
4040
license: None,
4141
license_file: None,
4242
num,

src/views/krate_publish.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//! and manages the serialising and deserialising of this information
33
//! to and from structs. The serlializing is only utilised in
44
//! integration tests.
5-
use std::collections::HashMap;
5+
use std::collections::{BTreeMap, HashMap};
66

77
use serde::{de, Deserialize, Deserializer, Serialize, Serializer};
88

@@ -17,7 +17,7 @@ pub struct EncodableCrateUpload {
1717
pub name: EncodableCrateName,
1818
pub vers: EncodableCrateVersion,
1919
pub deps: Vec<EncodableCrateDependency>,
20-
pub features: HashMap<EncodableFeatureName, Vec<EncodableFeature>>,
20+
pub features: BTreeMap<EncodableFeatureName, Vec<EncodableFeature>>,
2121
pub description: Option<String>,
2222
pub homepage: Option<String>,
2323
pub documentation: Option<String>,
@@ -53,7 +53,7 @@ pub struct EncodableCategoryList(pub Vec<EncodableCategory>);
5353
pub struct EncodableCategory(pub String);
5454
#[derive(Serialize, Debug, Deref)]
5555
pub struct EncodableFeature(pub String);
56-
#[derive(PartialEq, Eq, Hash, Serialize, Debug, Deref)]
56+
#[derive(PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Debug, Deref)]
5757
pub struct EncodableFeatureName(pub String);
5858

5959
#[derive(Serialize, Deserialize, Debug)]

src/worker/update_downloads.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ mod test {
8585
use super::*;
8686
use crate::email::Emails;
8787
use crate::models::{Crate, NewCrate, NewUser, NewVersion, User, Version};
88-
use std::collections::HashMap;
88+
use std::collections::BTreeMap;
8989

9090
fn user(conn: &PgConnection) -> User {
9191
NewUser::new(2, "login", None, None, "access_token")
@@ -103,7 +103,7 @@ mod test {
103103
let version = NewVersion::new(
104104
krate.id,
105105
&semver::Version::parse("1.0.0").unwrap(),
106-
&HashMap::new(),
106+
&BTreeMap::new(),
107107
None,
108108
None,
109109
0,

0 commit comments

Comments
 (0)