From fa2f990208933330b4ce07da96f3342d3b88ec9f Mon Sep 17 00:00:00 2001 From: Tobias Bieniek Date: Fri, 14 Jun 2024 18:43:32 +0200 Subject: [PATCH] tests/publish: Add `has_lib` and `bin_names` test case --- src/tests/krate/publish/manifest.rs | 28 ++++++++++ ...ublish__manifest__lib_and_bin_crate-2.snap | 52 +++++++++++++++++++ ..._publish__manifest__lib_and_bin_crate.snap | 39 ++++++++++++++ 3 files changed, 119 insertions(+) create mode 100644 src/tests/krate/publish/snapshots/all__krate__publish__manifest__lib_and_bin_crate-2.snap create mode 100644 src/tests/krate/publish/snapshots/all__krate__publish__manifest__lib_and_bin_crate.snap diff --git a/src/tests/krate/publish/manifest.rs b/src/tests/krate/publish/manifest.rs index f8ec302112b..fe3b6223e7c 100644 --- a/src/tests/krate/publish/manifest.rs +++ b/src/tests/krate/publish/manifest.rs @@ -144,3 +144,31 @@ async fn invalid_rust_version() { assert_eq!(response.status(), StatusCode::BAD_REQUEST); assert_json_snapshot!(response.json()); } + +#[tokio::test(flavor = "multi_thread")] +async fn test_lib_and_bin_crate() { + let (_app, _anon, _cookie, token) = TestApp::full().with_token(); + + let publish_builder = PublishBuilder::new("foo", "1.0.0") + .add_file("foo-1.0.0/src/lib.rs", "pub fn foo() {}") + .add_file("foo-1.0.0/src/main.rs", "fn main() {}") + .add_file("foo-1.0.0/src/bin/bar.rs", "fn main() {}"); + + let response = token.publish_crate(publish_builder).await; + assert_eq!(response.status(), StatusCode::OK); + assert_json_snapshot!(response.json(), { + ".crate.created_at" => "[datetime]", + ".crate.updated_at" => "[datetime]", + }); + + let response = token.get::<()>("/api/v1/crates/foo/1.0.0").await; + assert_eq!(response.status(), StatusCode::OK); + assert_json_snapshot!(response.json(), { + ".version.id" => any_id_redaction(), + ".version.created_at" => "[datetime]", + ".version.updated_at" => "[datetime]", + ".version.published_by.id" => id_redaction(token.as_model().user_id), + ".version.audit_actions[].time" => "[datetime]", + ".version.audit_actions[].user.id" => id_redaction(token.as_model().user_id), + }); +} diff --git a/src/tests/krate/publish/snapshots/all__krate__publish__manifest__lib_and_bin_crate-2.snap b/src/tests/krate/publish/snapshots/all__krate__publish__manifest__lib_and_bin_crate-2.snap new file mode 100644 index 00000000000..af34537cd51 --- /dev/null +++ b/src/tests/krate/publish/snapshots/all__krate__publish__manifest__lib_and_bin_crate-2.snap @@ -0,0 +1,52 @@ +--- +source: src/tests/krate/publish/manifest.rs +expression: response.json() +--- +{ + "version": { + "audit_actions": [ + { + "action": "publish", + "time": "[datetime]", + "user": { + "avatar": null, + "id": "[id]", + "login": "foo", + "name": null, + "url": "https://github.com/foo" + } + } + ], + "bin_names": [ + "bar", + "foo" + ], + "checksum": "ed125a8d83193391762787872f6363ef11d472fe9e963b984a761f970d63a7a8", + "crate": "foo", + "crate_size": 241, + "created_at": "[datetime]", + "dl_path": "/api/v1/crates/foo/1.0.0/download", + "downloads": 0, + "features": {}, + "has_lib": true, + "id": "[id]", + "license": "MIT", + "links": { + "authors": "/api/v1/crates/foo/1.0.0/authors", + "dependencies": "/api/v1/crates/foo/1.0.0/dependencies", + "version_downloads": "/api/v1/crates/foo/1.0.0/downloads" + }, + "num": "1.0.0", + "published_by": { + "avatar": null, + "id": "[id]", + "login": "foo", + "name": null, + "url": "https://github.com/foo" + }, + "readme_path": "/api/v1/crates/foo/1.0.0/readme", + "rust_version": null, + "updated_at": "[datetime]", + "yanked": false + } +} diff --git a/src/tests/krate/publish/snapshots/all__krate__publish__manifest__lib_and_bin_crate.snap b/src/tests/krate/publish/snapshots/all__krate__publish__manifest__lib_and_bin_crate.snap new file mode 100644 index 00000000000..6276f5c9547 --- /dev/null +++ b/src/tests/krate/publish/snapshots/all__krate__publish__manifest__lib_and_bin_crate.snap @@ -0,0 +1,39 @@ +--- +source: src/tests/krate/publish/manifest.rs +expression: response.json() +--- +{ + "crate": { + "badges": null, + "categories": null, + "created_at": "[datetime]", + "description": "description", + "documentation": null, + "downloads": 0, + "exact_match": false, + "homepage": null, + "id": "foo", + "keywords": null, + "links": { + "owner_team": "/api/v1/crates/foo/owner_team", + "owner_user": "/api/v1/crates/foo/owner_user", + "owners": "/api/v1/crates/foo/owners", + "reverse_dependencies": "/api/v1/crates/foo/reverse_dependencies", + "version_downloads": "/api/v1/crates/foo/downloads", + "versions": "/api/v1/crates/foo/versions" + }, + "max_stable_version": "1.0.0", + "max_version": "1.0.0", + "name": "foo", + "newest_version": "1.0.0", + "recent_downloads": null, + "repository": null, + "updated_at": "[datetime]", + "versions": null + }, + "warnings": { + "invalid_badges": [], + "invalid_categories": [], + "other": [] + } +}