Skip to content

Commit e37d92a

Browse files
Merge #1336
1336: Correct uploading features with `/`s r=sgrif There was a use of `valid_feature_name` that didn't get changed to `valid_feature`. I've added a regression test that exercises more of the stack to ensure this doesn't happen again in the future.
2 parents e493395 + 24ba779 commit e37d92a

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

src/views/krate_publish.rs

+13-1
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ impl<'de> Deserialize<'de> for FeatureName {
121121
impl<'de> Deserialize<'de> for Feature {
122122
fn deserialize<D: Deserializer<'de>>(d: D) -> Result<Feature, D::Error> {
123123
let s = String::deserialize(d)?;
124-
if !Crate::valid_feature_name(&s) {
124+
if !Crate::valid_feature(&s) {
125125
let value = de::Unexpected::Str(&s);
126126
let expected = "a valid feature name";
127127
Err(de::Error::invalid_value(value, &expected))
@@ -225,3 +225,15 @@ impl ToSql<Text, Pg> for Feature {
225225
ToSql::<Text, Pg>::to_sql(&**self, out)
226226
}
227227
}
228+
229+
#[test]
230+
fn feature_deserializes_for_valid_features() {
231+
use serde_json as json;
232+
233+
assert!(json::from_str::<Feature>("\"foo\"").is_ok());
234+
assert!(json::from_str::<Feature>("\"\"").is_err());
235+
assert!(json::from_str::<Feature>("\"/\"").is_err());
236+
assert!(json::from_str::<Feature>("\"%/%\"").is_err());
237+
assert!(json::from_str::<Feature>("\"a/a\"").is_ok());
238+
assert!(json::from_str::<Feature>("\"32-column-tables\"").is_ok());
239+
}

0 commit comments

Comments
 (0)