Skip to content

Commit 7e36cf1

Browse files
committed
Make warnings about invalid crate names be JSON instead of text
And cargo will handle making nice english messages out of them.
1 parent b69fa22 commit 7e36cf1

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

src/krate.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -745,11 +745,6 @@ pub fn new(req: &mut Request) -> CargoResult<Response> {
745745
let ignored_invalid_categories = try!(
746746
Category::update_crate(try!(req.tx()), &krate, &categories)
747747
);
748-
let warnings: Vec<String> =
749-
ignored_invalid_categories.iter().map(|category| {
750-
format!("'{}' is not a recognized category name \
751-
and has been ignored.", category)
752-
}).collect();
753748

754749
// Upload the crate to S3
755750
let mut handle = req.app().handle();
@@ -806,7 +801,13 @@ pub fn new(req: &mut Request) -> CargoResult<Response> {
806801
bomb.path = None;
807802

808803
#[derive(RustcEncodable)]
809-
struct R { krate: EncodableCrate, warnings: Vec<String> }
804+
struct Warnings { invalid_categories: Vec<String> }
805+
let warnings = Warnings {
806+
invalid_categories: ignored_invalid_categories,
807+
};
808+
809+
#[derive(RustcEncodable)]
810+
struct R { krate: EncodableCrate, warnings: Warnings }
810811
Ok(req.json(&R { krate: krate.minimal_encodable(), warnings: warnings }))
811812
}
812813

src/tests/krate.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ struct CrateMeta { total: i32 }
2626
#[derive(RustcDecodable)]
2727
struct GitCrate { name: String, vers: String, deps: Vec<String>, cksum: String }
2828
#[derive(RustcDecodable)]
29-
struct GoodCrate { krate: EncodableCrate, warnings: Vec<String> }
29+
struct Warnings { invalid_categories: Vec<String> }
30+
#[derive(RustcDecodable)]
31+
struct GoodCrate { krate: EncodableCrate, warnings: Warnings }
3032
#[derive(RustcDecodable)]
3133
struct CrateResponse { krate: EncodableCrate, versions: Vec<EncodableVersion>, keywords: Vec<EncodableKeyword> }
3234
#[derive(RustcDecodable)]
@@ -896,7 +898,7 @@ fn good_categories() {
896898
let json: GoodCrate = ::json(&mut response);
897899
assert_eq!(json.krate.name, "foo");
898900
assert_eq!(json.krate.max_version, "1.0.0");
899-
assert_eq!(json.warnings.len(), 0);
901+
assert_eq!(json.warnings.invalid_categories.len(), 0);
900902
}
901903

902904
#[test]
@@ -910,8 +912,7 @@ fn ignored_categories() {
910912
let json: GoodCrate = ::json(&mut response);
911913
assert_eq!(json.krate.name, "foo");
912914
assert_eq!(json.krate.max_version, "1.0.0");
913-
assert_eq!(json.warnings, vec!["\'bar\' is not a recognized category name \
914-
and has been ignored.".to_string()]);
915+
assert_eq!(json.warnings.invalid_categories, vec!["bar".to_string()]);
915916
}
916917

917918
#[test]

0 commit comments

Comments
 (0)