From e4bb5c712cba4a73191f70c975467acb8e57d69e Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 13 Feb 2025 12:54:09 +0100 Subject: [PATCH 1/3] api/projects: update container expiration policy endpoint tests --- src/api/projects/create.rs | 6 +++-- src/api/projects/edit.rs | 54 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/src/api/projects/create.rs b/src/api/projects/create.rs index 506e0591..a5500e45 100644 --- a/src/api/projects/create.rs +++ b/src/api/projects/create.rs @@ -2085,7 +2085,8 @@ mod tests { "&container_expiration_policy_attributes%5Benabled%5D=true", "&container_expiration_policy_attributes%5Bkeep_n%5D=5", "&container_expiration_policy_attributes%5Bolder_than%5D=7d", - "&container_expiration_policy_attributes%5Bname_regex%5D=%3Alatest", + "&container_expiration_policy_attributes%5Bname_regex_delete%5D=%3Aoldest", + "&container_expiration_policy_attributes%5Bname_regex_keep%5D=%3Alatest", )) .build() .unwrap(); @@ -2099,7 +2100,8 @@ mod tests { .enabled(true) .keep_n(ContainerExpirationKeepN::Five) .older_than(ContainerExpirationOlderThan::OneWeek) - .name_regex(":latest") + .name_regex_keep(":latest") + .name_regex_delete(":oldest") .build() .unwrap(), ) diff --git a/src/api/projects/edit.rs b/src/api/projects/edit.rs index b1fa73fb..fdf638c8 100644 --- a/src/api/projects/edit.rs +++ b/src/api/projects/edit.rs @@ -1305,6 +1305,54 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } + #[test] + fn endpoint_container_expiration_policy_attributes_name_regex_delete() { + let endpoint = ExpectedUrl::builder() + .method(Method::PUT) + .endpoint("projects/simple%2Fproject") + .content_type("application/x-www-form-urlencoded") + .body_str("container_expiration_policy_attributes%5Bname_regex_delete%5D=%3Aoldest") + .build() + .unwrap(); + let client = SingleTestClient::new_raw(endpoint, ""); + + let endpoint = EditProject::builder() + .project("simple/project") + .container_expiration_policy_attributes( + ContainerExpirationPolicy::builder() + .name_regex_delete(":oldest") + .build() + .unwrap(), + ) + .build() + .unwrap(); + api::ignore(endpoint).query(&client).unwrap(); + } + + #[test] + fn endpoint_container_expiration_policy_attributes_name_regex_keep() { + let endpoint = ExpectedUrl::builder() + .method(Method::PUT) + .endpoint("projects/simple%2Fproject") + .content_type("application/x-www-form-urlencoded") + .body_str("container_expiration_policy_attributes%5Bname_regex_keep%5D=%3Alatest") + .build() + .unwrap(); + let client = SingleTestClient::new_raw(endpoint, ""); + + let endpoint = EditProject::builder() + .project("simple/project") + .container_expiration_policy_attributes( + ContainerExpirationPolicy::builder() + .name_regex_keep(":latest") + .build() + .unwrap(), + ) + .build() + .unwrap(); + api::ignore(endpoint).query(&client).unwrap(); + } + #[test] fn endpoint_container_expiration_policy_attributes_all() { let endpoint = ExpectedUrl::builder() @@ -1316,7 +1364,8 @@ mod tests { "&container_expiration_policy_attributes%5Benabled%5D=true", "&container_expiration_policy_attributes%5Bkeep_n%5D=5", "&container_expiration_policy_attributes%5Bolder_than%5D=7d", - "&container_expiration_policy_attributes%5Bname_regex%5D=%3Alatest", + "&container_expiration_policy_attributes%5Bname_regex_delete%5D=%3Aoldest", + "&container_expiration_policy_attributes%5Bname_regex_keep%5D=%3Alatest", )) .build() .unwrap(); @@ -1330,7 +1379,8 @@ mod tests { .enabled(true) .keep_n(ContainerExpirationKeepN::Five) .older_than(ContainerExpirationOlderThan::OneWeek) - .name_regex(":latest") + .name_regex_keep(":latest") + .name_regex_delete(":oldest") .build() .unwrap(), ) -- GitLab From fe22f3562b6ee5e1f6a976a8fbdb10d4b2b9e6be Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 13 Feb 2025 12:52:30 +0100 Subject: [PATCH 2/3] deprecations: remove APIs deprecatoed prior to 0.1700.0 --- CHANGELOG.md | 73 ++++ src/api/groups/create.rs | 30 -- src/api/groups/edit.rs | 29 -- src/api/groups/group.rs | 26 -- src/api/groups/members/add.rs | 79 ---- src/api/issues.rs | 8 +- src/api/issues/projects.rs | 78 ---- src/api/projects/create.rs | 358 ----------------- src/api/projects/edit.rs | 360 ------------------ src/api/projects/issues/create.rs | 31 -- src/api/projects/issues/edit.rs | 75 ---- src/api/projects/issues/notes/create.rs | 33 -- src/api/projects/issues/notes/edit.rs | 35 -- src/api/projects/members.rs | 2 - src/api/projects/members/add.rs | 129 ------- src/api/projects/members/member.rs | 58 +-- src/api/projects/members/members.rs | 49 +-- src/api/projects/merge_requests.rs | 13 - src/api/projects/merge_requests/changes.rs | 165 -------- src/api/projects/merge_requests/create.rs | 74 ---- src/api/projects/merge_requests/edit.rs | 58 --- .../projects/merge_requests/merge_requests.rs | 9 +- .../projects/merge_requests/notes/create.rs | 39 -- src/api/projects/merge_requests/notes/edit.rs | 8 - src/api/projects/pipelines/pipelines.rs | 11 - src/api/projects/protected_branches.rs | 1 - .../projects/protected_branches/protect.rs | 5 +- src/api/projects/registry/repositories.rs | 58 --- src/api/users/users.rs | 18 - src/webhooks.rs | 3 - 30 files changed, 81 insertions(+), 1834 deletions(-) delete mode 100644 src/api/projects/merge_requests/changes.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index cb0c0626..8cee5e47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,76 @@ +# v0.1708.3 (unreleased) + +## Breaking changes + + * Removal of APIs deprecated prior to 0.1700.0. Includes: + - `api::groups::CreateGroup::emails_disabled` + - `api::groups::EditGroup::emails_disabled` + - `api::groups::Groups::with_projects` + - `api::groups::members::AddGroupMember::tasks_to_be_done` + - `api::groups::members::AddGroupMember::tasks_project_id` + - `api::issues::IssueOrderBy::WeightFields` + - `api::issues::ProjectIssuesBuilder::without_milestone` + - `api::issues::ProjectIssuesBuilder::any_milestone` + - `api::issues::ProjectIssuesBuilder::milestone` + - `api::projects::ContainerExpirationPolicy::name_regex` + - `api::projects::CreateProject::operations_access_level` + - `api::projects::CreateProject::emails_disabled` + - `api::projects::CreateProject::container_registry_enabled` + - `api::projects::CreateProject::tag_list` + - `api::projects::CreateProject::build_coverage_regex` + - `api::projects::CreateProject::approvals_before_merge` + - `api::projects::CreateProject::issues_enabled` + - `api::projects::CreateProject::merge_requests_enabled` + - `api::projects::CreateProject::jobs_enabled` + - `api::projects::CreateProject::wiki_enabled` + - `api::projects::CreateProject::snippets_enabled` + - `api::projects::CreateProject::tag` + - `api::projects::CreateProject::tags` + - `api::projects::EditProject::operations_access_level` + - `api::projects::EditProject::emails_disabled` + - `api::projects::EditProject::container_registry_enabled` + - `api::projects::EditProject::build_coverage_regex` + - `api::projects::EditProject::approvals_before_merge` + - `api::projects::EditProject::issues_enabled` + - `api::projects::EditProject::merge_requests_enabled` + - `api::projects::EditProject::jobs_enabled` + - `api::projects::EditProject::wiki_enabled` + - `api::projects::EditProject::snippets_enabled` + - `api::projects::EditProject::tag` + - `api::projects::EditProject::tags` + - `api::projects::EditProject::printing_merge_requests_link_enabled` + - `api::projects::issues::CreateIssue::epic_iid` + - `api::projects::issues::EditIssue::epic_iid` + - `api::projects::issues::EditIssue::issue_iid` + - `api::projects::issues::EditIssue::remove_labels` + - `api::projects::issues::notes::CreateIssueNote::confidential` + - `api::projects::issues::notes::EditIssueNote::confidential` + - `api::projects::members::ProjectInviteTasksToBeDone` + - `api::projects::members::AddProjectMember::task_to_be_done` + - `api::projects::members::AddProjectMember::tasks_to_be_done` + - `api::projects::members::AddProjectMember::tasks_project_id` + - `api::projects::members::ProjectMember::all_builder` + - `api::projects::members::ProjectMembers::all_builder` + - `api::projects::merge_requests::MergeRequestPipelines` + - `api::projects::merge_requests::MergeRequestPipelinesBuilder` + - `api::projects::merge_requests::MergeRequestPipelinesBuilderError` + - `api::projects::merge_requests::MergeRequestChanges` + - `api::projects::merge_requests::MergeRequestChangesBuilder` + - `api::projects::merge_requests::MergeRequestChangesBuilderError` + - `api::projects::merge_requests::CreateMergeRequest::approvals_before_merge` + - `api::projects::merge_requests::CreateMergeRequest::allow_maintainer_to_push` + - `api::projects::merge_requests::EditMergeRequest::allow_maintainer_to_push` + - `api::projects::merge_requests::EditMergeRequest::remove_labels` + - `api::projects::merge_requests::MergeRequests::search_in` + - `api::projects::merge_requests::note::CreateMergeRequestNote::merge_request_diff_sha` + - `api::projects::merge_requests::note::EditMergeRequestNote::merge_request_diff_sha` + - `api::projects::pipelines::Pipelines::name` + - `api::projects::protected_branches::ProtectedAccessLevel` + - `api::projects::registry::Repositories::tags` + - `api::projects::registry::Repositories::tags_count` + - `api::users::ExternalProvider::id` + - `webhooks::MergeRequestHookAttrs::work_in_progress` + # v0.1708.2 ## Fixes diff --git a/src/api/groups/create.rs b/src/api/groups/create.rs index fe04470f..6ca70488 100644 --- a/src/api/groups/create.rs +++ b/src/api/groups/create.rs @@ -289,10 +289,6 @@ pub struct CreateGroup<'a> { /// The access level to the group that is required to create subgroups. #[builder(default)] subgroup_creation_level: Option, - /// Disable email notifications from the group. - #[builder(default)] - #[deprecated(since = "0.1606.1", note = "use `emails_enabled` instead")] - emails_disabled: Option, /// Enable email notifications from the group. #[builder(default)] emails_enabled: Option, @@ -378,11 +374,6 @@ impl Endpoint for CreateGroup<'_> { defaults.add_query(&mut params); } - #[allow(deprecated)] - { - params.push_opt("emails_disabled", self.emails_disabled); - } - params.into_body() } } @@ -721,27 +712,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_emails_disabled() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("groups") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!("name=name", "&path=path", "&emails_disabled=false")) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = CreateGroup::builder() - .name("name") - .path("path") - .emails_disabled(false) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_emails_enabled() { let endpoint = ExpectedUrl::builder() diff --git a/src/api/groups/edit.rs b/src/api/groups/edit.rs index fd841ea7..e85f276b 100644 --- a/src/api/groups/edit.rs +++ b/src/api/groups/edit.rs @@ -87,10 +87,6 @@ pub struct EditGroup<'a> { /// The access level to the group that is required to create subgroups. #[builder(default)] subgroup_creation_level: Option, - /// Disable email notifications from the group. - #[builder(default)] - #[deprecated(since = "0.1606.1", note = "use `emails_enabled` instead")] - emails_disabled: Option, /// Enable email notifications from the group. #[builder(default)] emails_enabled: Option, @@ -334,11 +330,6 @@ impl Endpoint for EditGroup<'_> { defaults.add_query(&mut params); } - #[allow(deprecated)] - { - params.push_opt("emails_disabled", self.emails_disabled); - } - params.into_body() } } @@ -612,26 +603,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_emails_disabled() { - let endpoint = ExpectedUrl::builder() - .method(Method::PUT) - .endpoint("groups/simple%2Fgroup") - .content_type("application/x-www-form-urlencoded") - .body_str("emails_disabled=false") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = EditGroup::builder() - .group("simple/group") - .emails_disabled(false) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_emails_enabled() { let endpoint = ExpectedUrl::builder() diff --git a/src/api/groups/group.rs b/src/api/groups/group.rs index 09f94da5..ad2a5646 100644 --- a/src/api/groups/group.rs +++ b/src/api/groups/group.rs @@ -20,10 +20,6 @@ pub struct Group<'a> { /// Include custom attributes in the response. #[builder(default)] with_custom_attributes: Option, - /// Include project information. - #[deprecated(note = "use `GroupProjects` instead (unimplemented)")] - #[builder(default)] - with_projects: Option, } impl<'a> Group<'a> { @@ -47,11 +43,6 @@ impl Endpoint for Group<'_> { params.push_opt("with_custom_attributes", self.with_custom_attributes); - #[allow(deprecated)] - { - params.push_opt("with_projects", self.with_projects); - } - params } } @@ -101,21 +92,4 @@ mod tests { .unwrap(); api::ignore(endpoint).query(&client).unwrap(); } - - #[test] - fn endpoint_with_projects() { - let endpoint = ExpectedUrl::builder() - .endpoint("groups/group%2Fsubgroup") - .add_query_params(&[("with_projects", "true")]) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = Group::builder() - .group("group/subgroup") - .with_projects(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } } diff --git a/src/api/groups/members/add.rs b/src/api/groups/members/add.rs index 331e24b4..3120f2c2 100644 --- a/src/api/groups/members/add.rs +++ b/src/api/groups/members/add.rs @@ -6,7 +6,6 @@ use chrono::NaiveDate; use derive_builder::Builder; -use itertools::Itertools; use crate::api::common::{AccessLevel, NameOrId}; use crate::api::endpoint_prelude::*; @@ -59,18 +58,6 @@ pub struct AddGroupMember<'a> { /// The source of the invitation. #[builder(setter(into), default)] invite_source: Option>, - /// Tasks the inviter wants the member to focus on. - /// - /// Requires `tasks_project_id`. - #[builder(setter(name = "_tasks_to_be_done"), default, private)] - #[deprecated(note = "removed upstream")] - tasks_to_be_done: Vec, - /// The project ID in which to create task issues. - /// - /// Requires `tasks_to_be_done`. - #[builder(default)] - #[deprecated(note = "removed upstream")] - tasks_project_id: Option, } impl<'a> AddGroupMember<'a> { @@ -80,29 +67,6 @@ impl<'a> AddGroupMember<'a> { } } -impl AddGroupMemberBuilder<'_> { - /// Focus on the given task. - #[deprecated(note = "removed upstream")] - pub fn task_to_be_done(&mut self, task: GroupInviteTasksToBeDone) -> &mut Self { - self.tasks_to_be_done - .get_or_insert_with(Vec::new) - .push(task); - self - } - - /// Focus on the given tasks. - #[deprecated(note = "removed upstream")] - pub fn tasks_to_be_done(&mut self, iter: I) -> &mut Self - where - I: Iterator, - { - self.tasks_to_be_done - .get_or_insert_with(Vec::new) - .extend(iter); - self - } -} - impl Endpoint for AddGroupMember<'_> { fn method(&self) -> Method { Method::POST @@ -121,19 +85,6 @@ impl Endpoint for AddGroupMember<'_> { .push_opt("expires_at", self.expires_at) .push_opt("invite_source", self.invite_source.as_ref()); - #[allow(deprecated)] - { - params - .extend( - self.tasks_to_be_done - .iter() - .map(|task| task.as_value()) - .unique() - .map(|value| ("tasks_to_be_done[]", value)), - ) - .push_opt("tasks_project_id", self.tasks_project_id); - } - params.into_body() } } @@ -278,34 +229,4 @@ mod tests { .unwrap(); api::ignore(endpoint).query(&client).unwrap(); } - - #[test] - #[allow(deprecated)] - fn endpoint_tasks_to_be_done() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("groups/group%2Fsubgroup/members") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!( - "user_id=1", - "&access_level=30", - "&tasks_to_be_done%5B%5D=ci", - "&tasks_to_be_done%5B%5D=code", - "&tasks_project_id=1", - )) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = AddGroupMember::builder() - .group("group/subgroup") - .user(1) - .access_level(AccessLevel::Developer) - .task_to_be_done(GroupInviteTasksToBeDone::Ci) - .tasks_to_be_done([GroupInviteTasksToBeDone::Code].iter().copied()) - .tasks_project_id(1) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } } diff --git a/src/api/issues.rs b/src/api/issues.rs index 8f98fdd6..f4533602 100644 --- a/src/api/issues.rs +++ b/src/api/issues.rs @@ -354,9 +354,6 @@ pub enum IssueOrderBy { Weight, /// Sort by type. Title, - /// Sort by weight. - #[deprecated(note = "use `Weight` instead (`gitlab` crate typo)")] - WeightFields, } impl IssueOrderBy { @@ -371,8 +368,7 @@ impl IssueOrderBy { IssueOrderBy::MilestoneDue => "milestone_due", IssueOrderBy::Popularity => "popularity", IssueOrderBy::Title => "title", - #[allow(deprecated)] - IssueOrderBy::Weight | IssueOrderBy::WeightFields => "weight", + IssueOrderBy::Weight => "weight", } } } @@ -561,8 +557,6 @@ mod tests { (IssueOrderBy::Popularity, "popularity"), (IssueOrderBy::Weight, "weight"), (IssueOrderBy::Title, "title"), - #[allow(deprecated)] - (IssueOrderBy::WeightFields, "weight"), ]; for (i, s) in items { diff --git a/src/api/issues/projects.rs b/src/api/issues/projects.rs index f7f2558c..08352d13 100644 --- a/src/api/issues/projects.rs +++ b/src/api/issues/projects.rs @@ -177,30 +177,6 @@ impl<'a> ProjectIssuesBuilder<'a> { self } - /// Filter issues without a milestone. - #[deprecated(since = "0.1602.1", note = "Use `milestone_id` instead.")] - pub fn without_milestone(&mut self) -> &mut Self { - self.milestone_id = Some(Some(IssueMilestone::None)); - self - } - - /// Filter issues with any milestone. - #[deprecated(since = "0.1602.1", note = "Use `milestone_id` instead.")] - pub fn any_milestone(&mut self) -> &mut Self { - self.milestone_id = Some(Some(IssueMilestone::Any)); - self - } - - /// Filter issues with a given milestone. - #[deprecated(since = "0.1602.1", note = "Use `milestone_id` instead.")] - pub fn milestone(&mut self, milestone: M) -> &mut Self - where - M: Into>, - { - self.milestone_id = Some(Some(IssueMilestone::Named(milestone.into()))); - self - } - /// Filter unassigned issues. pub fn unassigned(&mut self) -> &mut Self { self.assignee = Some(Some(Assignee::Unassigned)); @@ -571,60 +547,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_milestone_any() { - let endpoint = ExpectedUrl::builder() - .endpoint("projects/simple%2Fproject/issues") - .add_query_params(&[("milestone_id", "Any")]) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = ProjectIssues::builder() - .project("simple/project") - .any_milestone() - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - - #[test] - #[allow(deprecated)] - fn endpoint_milestone_none() { - let endpoint = ExpectedUrl::builder() - .endpoint("projects/simple%2Fproject/issues") - .add_query_params(&[("milestone_id", "None")]) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = ProjectIssues::builder() - .project("simple/project") - .without_milestone() - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - - #[test] - #[allow(deprecated)] - fn endpoint_milestone_name() { - let endpoint = ExpectedUrl::builder() - .endpoint("projects/simple%2Fproject/issues") - .add_query_params(&[("milestone_id", "1.0")]) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = ProjectIssues::builder() - .project("simple/project") - .milestone("1.0") - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_scope() { let endpoint = ExpectedUrl::builder() diff --git a/src/api/projects/create.rs b/src/api/projects/create.rs index a5500e45..a46e72a4 100644 --- a/src/api/projects/create.rs +++ b/src/api/projects/create.rs @@ -242,13 +242,6 @@ pub struct ContainerExpirationPolicy<'a> { /// Only consider containers older than this age. #[builder(default)] older_than: Option, - /// Only apply to images with names matching a regular expression. - /// - /// See the [Ruby documentation](https://ruby-doc.org/core-2.7.1/Regexp.html) for supported - /// syntax. - #[deprecated(note = "use `name_regex_delete` instead")] - #[builder(setter(into), default)] - name_regex: Option>, /// Delete images with names matching a regular expression. /// /// See the [Ruby documentation](https://ruby-doc.org/core-2.7.1/Regexp.html) for supported @@ -295,14 +288,6 @@ impl<'a> ContainerExpirationPolicy<'a> { "container_expiration_policy_attributes[name_regex_keep]", self.name_regex_keep.as_ref(), ); - - #[allow(deprecated)] - { - params.push_opt( - "container_expiration_policy_attributes[name_regex]", - self.name_regex.as_ref(), - ); - } } } @@ -540,13 +525,6 @@ pub struct CreateProject<'a> { /// Set the access level for GitLab Pages on the project. #[builder(default)] pages_access_level: Option, - /// Set the access level for operations features. - #[builder(default)] - #[deprecated( - since = "0.1602.1", - note = "Use `releases`, `environments`, `feature_flags`, `infrastructure`, and `monitor` access levels instead" - )] - operations_access_level: Option, /// Set the access level for requirements features. #[builder(default)] requirements_access_level: Option, @@ -575,10 +553,6 @@ pub struct CreateProject<'a> { #[builder(default)] model_experiments_access_level: Option, - /// Whether to enable email notifications or not. - #[builder(default)] - #[deprecated(since = "0.1606.1", note = "use `emails_enabled` instead")] - emails_disabled: Option, /// Whether to enable email notifications or not. #[builder(default)] emails_enabled: Option, @@ -591,10 +565,6 @@ pub struct CreateProject<'a> { /// Whether outdated diff discussions are resolved when a merge request is updated or not. #[builder(default)] resolve_outdated_diff_discussions: Option, - /// Whether the container registry is enabled or not. - #[builder(default)] - #[deprecated(note = "use `container_registry_access_level` instead")] - container_registry_enabled: Option, /// The expiration policy for containers. #[builder(default)] container_expiration_policy_attributes: Option>, @@ -657,9 +627,6 @@ pub struct CreateProject<'a> { /// Whether users may request access to the repository or not. #[builder(default)] request_access_enabled: Option, - /// A list of tags to apply to the repository. - #[builder(setter(name = "_tag_list"), default, private)] - tag_list: BTreeSet>, /// A list of topics to apply to the repository. #[builder(setter(name = "_topics"), default, private)] topics: BTreeSet>, @@ -680,10 +647,6 @@ pub struct CreateProject<'a> { /// version of the branch. #[builder(setter(into), default)] auto_cancel_pending_pipelines: Option, - /// The default regular expression to use for build coverage extraction. - #[builder(setter(into), default)] - #[deprecated(since = "0.1602.1", note = "removed upstream")] - build_coverage_regex: Option>, /// The path to the GitLab CI configuration file within the repository. /// /// Defaults to `.gitlab-ci.yml`. @@ -698,10 +661,6 @@ pub struct CreateProject<'a> { /// The storage shard on which to store the repository. #[builder(setter(into), default)] repository_storage: Option>, - /// How many approvals are required before allowing merges. - #[builder(default)] - #[deprecated(since = "0.1602.1", note = "Use merge request approvals APIs instead.")] - approvals_before_merge: Option, /// The classification label of the project. #[builder(setter(into), default)] external_authorization_classification_label: Option>, @@ -734,27 +693,6 @@ pub struct CreateProject<'a> { /// Whether group runners are enabled for this project or not. #[builder(default)] group_runners_enabled: Option, - - /// Whether to enable issues or not. - #[deprecated(note = "use `issues_access_level` instead")] - #[builder(default)] - issues_enabled: Option, - /// Whether to enable merge requests or not. - #[deprecated(note = "use `merge_requests_access_level` instead")] - #[builder(default)] - merge_requests_enabled: Option, - /// Whether to enable CI pipelines or not. - #[deprecated(note = "use `builds_access_level` instead")] - #[builder(default)] - jobs_enabled: Option, - /// Whether to enable the wiki or not. - #[deprecated(note = "use `wiki_access_level` instead")] - #[builder(default)] - wiki_enabled: Option, - /// Whether to enable snippets or not. - #[deprecated(note = "use `snippets_access_level` instead")] - #[builder(default)] - snippets_enabled: Option, } impl<'a> CreateProject<'a> { @@ -802,31 +740,6 @@ impl<'a> CreateProjectBuilder<'a> { self } - /// Add a tag. - #[deprecated(note = "use `topic` instead")] - pub fn tag(&mut self, tag: T) -> &mut Self - where - T: Into>, - { - self.tag_list - .get_or_insert_with(BTreeSet::new) - .insert(tag.into()); - self - } - - /// Add multiple tags. - #[deprecated(note = "use `topics` instead")] - pub fn tags(&mut self, iter: I) -> &mut Self - where - I: Iterator, - T: Into>, - { - self.tag_list - .get_or_insert_with(BTreeSet::new) - .extend(iter.map(Into::into)); - self - } - /// Add a optic. pub fn topic(&mut self, topic: T) -> &mut Self where @@ -977,7 +890,6 @@ impl Endpoint for CreateProject<'_> { ) .push_opt("lfs_enabled", self.lfs_enabled) .push_opt("request_access_enabled", self.request_access_enabled) - .extend(self.tag_list.iter().map(|value| ("tag_list[]", value))) .extend(self.topics.iter().map(|value| ("topics[]", value))) .push_opt( "printing_merge_request_link_enabled", @@ -1017,24 +929,6 @@ impl Endpoint for CreateProject<'_> { policy.add_query(&mut params); } - #[allow(deprecated)] - { - params - .push_opt("emails_disabled", self.emails_disabled) - .push_opt("issues_enabled", self.issues_enabled) - .push_opt("merge_requests_enabled", self.merge_requests_enabled) - .push_opt("jobs_enabled", self.jobs_enabled) - .push_opt("wiki_enabled", self.wiki_enabled) - .push_opt("snippets_enabled", self.snippets_enabled) - .push_opt( - "container_registry_enabled", - self.container_registry_enabled, - ) - .push_opt("operations_access_level", self.operations_access_level) - .push_opt("build_coverage_regex", self.build_coverage_regex.as_ref()) - .push_opt("approvals_before_merge", self.approvals_before_merge); - } - params.into_body() } } @@ -1565,26 +1459,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_operations_access_level() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("projects") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!("name=name", "&operations_access_level=enabled")) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = CreateProject::builder() - .name("name") - .operations_access_level(FeatureAccessLevel::Enabled) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_requirements_access_level() { let endpoint = ExpectedUrl::builder() @@ -1762,26 +1636,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_emails_disabled() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("projects") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!("name=name", "&emails_disabled=true")) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = CreateProject::builder() - .name("name") - .emails_disabled(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_emails_enabled() { let endpoint = ExpectedUrl::builder() @@ -1864,26 +1718,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_container_registry_enabled() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("projects") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!("name=name", "&container_registry_enabled=true")) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = CreateProject::builder() - .name("name") - .container_registry_enabled(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_container_expiration_policy_attributes_cadence() { let endpoint = ExpectedUrl::builder() @@ -1992,33 +1826,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - fn endpoint_container_expiration_policy_attributes_name_regex() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("projects") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!( - "name=name", - "&container_expiration_policy_attributes%5Bname_regex%5D=%3Alatest", - )) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = CreateProject::builder() - .name("name") - .container_expiration_policy_attributes( - ContainerExpirationPolicy::builder() - .name_regex(":latest") - .build() - .unwrap(), - ) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_container_expiration_policy_attributes_name_regex_delete() { let endpoint = ExpectedUrl::builder() @@ -2470,31 +2277,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_tag_list() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("projects") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!( - "name=name", - "&tag_list%5B%5D=tag1", - "&tag_list%5B%5D=tag2", - )) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = CreateProject::builder() - .name("name") - .tag("tag1") - .tags(["tag1", "tag2"].iter().copied()) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_topics() { let endpoint = ExpectedUrl::builder() @@ -2601,26 +2383,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_build_coverage_regex() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("projects") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!("name=name", "&build_coverage_regex=%5Cd%25")) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = CreateProject::builder() - .name("name") - .build_coverage_regex("\\d%") - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_ci_config_path() { let endpoint = ExpectedUrl::builder() @@ -2697,26 +2459,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_approvals_before_merge() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("projects") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!("name=name", "&approvals_before_merge=2")) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = CreateProject::builder() - .name("name") - .approvals_before_merge(2) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_external_authorization_classification_label() { let endpoint = ExpectedUrl::builder() @@ -2913,104 +2655,4 @@ mod tests { .unwrap(); api::ignore(endpoint).query(&client).unwrap(); } - - #[test] - #[allow(deprecated)] - fn endpoint_issues_enabled() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("projects") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!("name=name", "&issues_enabled=true")) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = CreateProject::builder() - .name("name") - .issues_enabled(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - - #[test] - #[allow(deprecated)] - fn endpoint_merge_requests_enabled() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("projects") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!("name=name", "&merge_requests_enabled=true")) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = CreateProject::builder() - .name("name") - .merge_requests_enabled(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - - #[test] - #[allow(deprecated)] - fn endpoint_jobs_enabled() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("projects") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!("name=name", "&jobs_enabled=true")) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = CreateProject::builder() - .name("name") - .jobs_enabled(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - - #[test] - #[allow(deprecated)] - fn endpoint_wiki_enabled() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("projects") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!("name=name", "&wiki_enabled=false")) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = CreateProject::builder() - .name("name") - .wiki_enabled(false) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - - #[test] - #[allow(deprecated)] - fn endpoint_snippets_enabled() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("projects") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!("name=name", "&snippets_enabled=false")) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = CreateProject::builder() - .name("name") - .snippets_enabled(false) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } } diff --git a/src/api/projects/edit.rs b/src/api/projects/edit.rs index fdf638c8..79a06fe2 100644 --- a/src/api/projects/edit.rs +++ b/src/api/projects/edit.rs @@ -64,13 +64,6 @@ pub struct EditProject<'a> { /// Set the access level for GitLab Pages on the project. #[builder(default)] pages_access_level: Option, - /// Set the access level for operations features. - #[builder(default)] - #[deprecated( - since = "0.1602.1", - note = "Use `releases`, `environments`, `feature_flags`, `infrastructure`, and `monitor` access levels instead" - )] - operations_access_level: Option, /// Set the access level for requirements features. #[builder(default)] requirements_access_level: Option, @@ -99,10 +92,6 @@ pub struct EditProject<'a> { #[builder(default)] model_experiments_access_level: Option, - /// Whether to enable email notifications or not. - #[builder(default)] - #[deprecated(since = "0.1606.1", note = "use `emails_enabled` instead")] - emails_disabled: Option, /// Whether to enable email notifications or not. #[builder(default)] emails_enabled: Option, @@ -115,10 +104,6 @@ pub struct EditProject<'a> { /// Whether outdated diff discussions are resolved when a merge request is updated or not. #[builder(default)] resolve_outdated_diff_discussions: Option, - /// Whether the container registry is enabled or not. - #[builder(default)] - #[deprecated(note = "use `container_registry_access_level` instead")] - container_registry_enabled: Option, /// The expiration policy for containers. #[builder(default)] container_expiration_policy_attributes: Option>, @@ -217,10 +202,6 @@ pub struct EditProject<'a> { /// version of the branch. #[builder(setter(into), default)] auto_cancel_pending_pipelines: Option, - /// The default regular expression to use for build coverage extraction. - #[builder(setter(into), default)] - #[deprecated(since = "0.1602.1", note = "removed upstream")] - build_coverage_regex: Option>, /// The path to the GitLab CI configuration file within the repository. /// /// Defaults to `.gitlab-ci.yml`. @@ -241,10 +222,6 @@ pub struct EditProject<'a> { /// The storage shard on which to store the repository. #[builder(setter(into), default)] repository_storage: Option>, - /// How many approvals are required before allowing merges. - #[builder(default)] - #[deprecated(since = "0.1602.1", note = "Use merge request approvals APIs instead.")] - approvals_before_merge: Option, /// The classification label of the project. #[builder(setter(into), default)] external_authorization_classification_label: Option>, @@ -296,27 +273,6 @@ pub struct EditProject<'a> { /// Whether environments can be rolled back or not. #[builder(default)] ci_forward_deployment_rollback_allowed: Option, - - /// Whether to enable issues or not. - #[deprecated(note = "use `issues_access_level` instead")] - #[builder(default)] - issues_enabled: Option, - /// Whether to enable merge requests or not. - #[deprecated(note = "use `merge_requests_access_level` instead")] - #[builder(default)] - merge_requests_enabled: Option, - /// Whether to enable CI pipelines or not. - #[deprecated(note = "use `builds_access_level` instead")] - #[builder(default)] - jobs_enabled: Option, - /// Whether to enable the wiki or not. - #[deprecated(note = "use `wiki_access_level` instead")] - #[builder(default)] - wiki_enabled: Option, - /// Whether to enable snippets or not. - #[deprecated(note = "use `snippets_access_level` instead")] - #[builder(default)] - snippets_enabled: Option, } impl<'a> EditProject<'a> { @@ -327,31 +283,6 @@ impl<'a> EditProject<'a> { } impl<'a> EditProjectBuilder<'a> { - /// Add a tag. - #[deprecated(note = "use `topic` instead")] - pub fn tag(&mut self, tag: T) -> &mut Self - where - T: Into>, - { - self.tag_list - .get_or_insert_with(BTreeSet::new) - .insert(tag.into()); - self - } - - /// Add multiple tags. - #[deprecated(note = "use `topics` instead")] - pub fn tags(&mut self, iter: I) -> &mut Self - where - I: Iterator, - T: Into>, - { - self.tag_list - .get_or_insert_with(BTreeSet::new) - .extend(iter.map(Into::into)); - self - } - /// Add a topic. pub fn topic(&mut self, topic: T) -> &mut Self where @@ -374,14 +305,6 @@ impl<'a> EditProjectBuilder<'a> { .extend(iter.map(Into::into)); self } - - /// Whether to enable print merge request links if branch/commits are pushed by console - /// - /// This was a typo previously; use `printing_merge_request_link_enabled` instead. - #[deprecated(note = "use `printing_merge_request_link_enabled` instead")] - pub fn printing_merge_requests_link_enabled(&mut self, enable: bool) -> &mut Self { - self.printing_merge_request_link_enabled(enable) - } } impl Endpoint for EditProject<'_> { @@ -567,24 +490,6 @@ impl Endpoint for EditProject<'_> { policy.add_query(&mut params); } - #[allow(deprecated)] - { - params - .push_opt("emails_disabled", self.emails_disabled) - .push_opt("issues_enabled", self.issues_enabled) - .push_opt("merge_requests_enabled", self.merge_requests_enabled) - .push_opt("jobs_enabled", self.jobs_enabled) - .push_opt("wiki_enabled", self.wiki_enabled) - .push_opt("snippets_enabled", self.snippets_enabled) - .push_opt( - "container_registry_enabled", - self.container_registry_enabled, - ) - .push_opt("operations_access_level", self.operations_access_level) - .push_opt("build_coverage_regex", self.build_coverage_regex.as_ref()) - .push_opt("approvals_before_merge", self.approvals_before_merge); - } - params.into_body() } } @@ -878,26 +783,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_operations_access_level() { - let endpoint = ExpectedUrl::builder() - .method(Method::PUT) - .endpoint("projects/simple%2Fproject") - .content_type("application/x-www-form-urlencoded") - .body_str("operations_access_level=enabled") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = EditProject::builder() - .project("simple/project") - .operations_access_level(FeatureAccessLevel::Enabled) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_requirements_access_level() { let endpoint = ExpectedUrl::builder() @@ -1069,26 +954,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_emails_disabled() { - let endpoint = ExpectedUrl::builder() - .method(Method::PUT) - .endpoint("projects/simple%2Fproject") - .content_type("application/x-www-form-urlencoded") - .body_str("emails_disabled=true") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = EditProject::builder() - .project("simple/project") - .emails_disabled(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_emails_enabled() { let endpoint = ExpectedUrl::builder() @@ -1165,26 +1030,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_container_registry_enabled() { - let endpoint = ExpectedUrl::builder() - .method(Method::PUT) - .endpoint("projects/simple%2Fproject") - .content_type("application/x-www-form-urlencoded") - .body_str("container_registry_enabled=true") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = EditProject::builder() - .project("simple/project") - .container_registry_enabled(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_container_expiration_policy_attributes_cadence() { let endpoint = ExpectedUrl::builder() @@ -1281,30 +1126,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - fn endpoint_container_expiration_policy_attributes_name_regex() { - let endpoint = ExpectedUrl::builder() - .method(Method::PUT) - .endpoint("projects/simple%2Fproject") - .content_type("application/x-www-form-urlencoded") - .body_str("container_expiration_policy_attributes%5Bname_regex%5D=%3Alatest") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = EditProject::builder() - .project("simple/project") - .container_expiration_policy_attributes( - ContainerExpirationPolicy::builder() - .name_regex(":latest") - .build() - .unwrap(), - ) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_container_expiration_policy_attributes_name_regex_delete() { let endpoint = ExpectedUrl::builder() @@ -1807,26 +1628,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_printing_merge_requests_link_enabled() { - let endpoint = ExpectedUrl::builder() - .method(Method::PUT) - .endpoint("projects/simple%2Fproject") - .content_type("application/x-www-form-urlencoded") - .body_str("printing_merge_request_link_enabled=true") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = EditProject::builder() - .project("simple/project") - .printing_merge_requests_link_enabled(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_lfs_enabled() { let endpoint = ExpectedUrl::builder() @@ -1865,27 +1666,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_tag_list() { - let endpoint = ExpectedUrl::builder() - .method(Method::PUT) - .endpoint("projects/simple%2Fproject") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!("tag_list%5B%5D=tag1", "&tag_list%5B%5D=tag2")) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = EditProject::builder() - .project("simple/project") - .tag("tag1") - .tags(["tag1", "tag2"].iter().copied()) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_topics() { let endpoint = ExpectedUrl::builder() @@ -1963,26 +1743,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_build_coverage_regex() { - let endpoint = ExpectedUrl::builder() - .method(Method::PUT) - .endpoint("projects/simple%2Fproject") - .content_type("application/x-www-form-urlencoded") - .body_str("build_coverage_regex=%5Cd%25") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = EditProject::builder() - .project("simple/project") - .build_coverage_regex("\\d%") - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_ci_config_path() { let endpoint = ExpectedUrl::builder() @@ -2097,26 +1857,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_approvals_before_merge() { - let endpoint = ExpectedUrl::builder() - .method(Method::PUT) - .endpoint("projects/simple%2Fproject") - .content_type("application/x-www-form-urlencoded") - .body_str("approvals_before_merge=2") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = EditProject::builder() - .project("simple/project") - .approvals_before_merge(2) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_external_authorization_classification_label() { let endpoint = ExpectedUrl::builder() @@ -2420,104 +2160,4 @@ mod tests { .unwrap(); api::ignore(endpoint).query(&client).unwrap(); } - - #[test] - #[allow(deprecated)] - fn endpoint_issues_enabled() { - let endpoint = ExpectedUrl::builder() - .method(Method::PUT) - .endpoint("projects/simple%2Fproject") - .content_type("application/x-www-form-urlencoded") - .body_str("issues_enabled=true") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = EditProject::builder() - .project("simple/project") - .issues_enabled(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - - #[test] - #[allow(deprecated)] - fn endpoint_merge_requests_enabled() { - let endpoint = ExpectedUrl::builder() - .method(Method::PUT) - .endpoint("projects/simple%2Fproject") - .content_type("application/x-www-form-urlencoded") - .body_str("merge_requests_enabled=true") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = EditProject::builder() - .project("simple/project") - .merge_requests_enabled(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - - #[test] - #[allow(deprecated)] - fn endpoint_jobs_enabled() { - let endpoint = ExpectedUrl::builder() - .method(Method::PUT) - .endpoint("projects/simple%2Fproject") - .content_type("application/x-www-form-urlencoded") - .body_str("jobs_enabled=true") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = EditProject::builder() - .project("simple/project") - .jobs_enabled(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - - #[test] - #[allow(deprecated)] - fn endpoint_wiki_enabled() { - let endpoint = ExpectedUrl::builder() - .method(Method::PUT) - .endpoint("projects/simple%2Fproject") - .content_type("application/x-www-form-urlencoded") - .body_str("wiki_enabled=false") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = EditProject::builder() - .project("simple/project") - .wiki_enabled(false) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - - #[test] - #[allow(deprecated)] - fn endpoint_snippets_enabled() { - let endpoint = ExpectedUrl::builder() - .method(Method::PUT) - .endpoint("projects/simple%2Fproject") - .content_type("application/x-www-form-urlencoded") - .body_str("snippets_enabled=false") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = EditProject::builder() - .project("simple/project") - .snippets_enabled(false) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } } diff --git a/src/api/projects/issues/create.rs b/src/api/projects/issues/create.rs index fa1de479..6b4ae4b9 100644 --- a/src/api/projects/issues/create.rs +++ b/src/api/projects/issues/create.rs @@ -75,11 +75,6 @@ pub struct CreateIssue<'a> { /// The type of issue. #[builder(default)] issue_type: Option, - - /// The internal ID of the epic to add the issue to. - #[deprecated(note = "use `epic_id` instead")] - #[builder(default)] - epic_iid: Option, } impl<'a> CreateIssue<'a> { @@ -173,11 +168,6 @@ impl Endpoint for CreateIssue<'_> { .push_opt("epic_id", self.epic_id) .push_opt("issue_type", self.issue_type); - #[allow(deprecated)] - { - params.push_opt("epic_iid", self.epic_iid); - } - params.into_body() } } @@ -548,25 +538,4 @@ mod tests { .unwrap(); api::ignore(endpoint).query(&client).unwrap(); } - - #[test] - #[allow(deprecated)] - fn endpoint_epic_iid() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("projects/simple%2Fproject/issues") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!("title=title", "&epic_iid=1")) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = CreateIssue::builder() - .project("simple/project") - .title("title") - .epic_iid(1) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } } diff --git a/src/api/projects/issues/edit.rs b/src/api/projects/issues/edit.rs index 9bef3cef..cc8066c9 100644 --- a/src/api/projects/issues/edit.rs +++ b/src/api/projects/issues/edit.rs @@ -115,11 +115,6 @@ pub struct EditIssue<'a> { #[builder(default)] issue_type: Option, - /// The internal ID of the epic to add the issue to. - #[deprecated(note = "use `epic_id` instead")] - #[builder(default)] - epic_iid: Option, - /// Updates an issue to be confidential #[builder(default)] confidential: Option, @@ -133,13 +128,6 @@ impl<'a> EditIssue<'a> { } impl<'a> EditIssueBuilder<'a> { - /// Set the issue ID. - #[deprecated(note = "use `issue` instead")] - pub fn issue_iid(&mut self, issue_iid: u64) -> &mut Self { - self.issue = Some(issue_iid); - self - } - /// Unassign the issue. pub fn unassign(&mut self) -> &mut Self { self.assignee_ids = Some(Some(IssueAssignees::Unassigned)); @@ -177,12 +165,6 @@ impl<'a> EditIssueBuilder<'a> { self } - /// Remove all labels from the issue. - #[deprecated(note = "use `clear_labels` instead")] - pub fn remove_labels(&mut self) -> &mut Self { - self.clear_labels() - } - /// Remove all labels from the issue. pub fn clear_labels(&mut self) -> &mut Self { self.labels = Some(Some(IssueLabels::Unlabeled)); @@ -300,11 +282,6 @@ impl Endpoint for EditIssue<'_> { } } - #[allow(deprecated)] - { - params.push_opt("epic_iid", self.epic_iid); - } - params.into_body() } } @@ -354,16 +331,6 @@ mod tests { EditIssue::builder().project(1).issue(1).build().unwrap(); } - #[test] - #[allow(deprecated)] - fn project_and_issue_iid_are_sufficient() { - EditIssue::builder() - .project(1) - .issue_iid(1) - .build() - .unwrap(); - } - #[test] fn endpoint() { let endpoint = ExpectedUrl::builder() @@ -524,27 +491,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_labels_remove() { - let endpoint = ExpectedUrl::builder() - .method(Method::PUT) - .endpoint("projects/simple%2Fproject/issues/1") - .content_type("application/x-www-form-urlencoded") - .body_str("labels=") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = EditIssue::builder() - .project("simple/project") - .issue(1) - .remove_labels() - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_labels_clear() { let endpoint = ExpectedUrl::builder() @@ -747,27 +693,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_epic_iid() { - let endpoint = ExpectedUrl::builder() - .method(Method::PUT) - .endpoint("projects/simple%2Fproject/issues/1") - .content_type("application/x-www-form-urlencoded") - .body_str("epic_iid=1") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = EditIssue::builder() - .project("simple/project") - .issue(1) - .epic_iid(1) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_confidential() { let endpoint = ExpectedUrl::builder() diff --git a/src/api/projects/issues/notes/create.rs b/src/api/projects/issues/notes/create.rs index 430b4f6a..d29761e5 100644 --- a/src/api/projects/issues/notes/create.rs +++ b/src/api/projects/issues/notes/create.rs @@ -23,10 +23,6 @@ pub struct CreateIssueNote<'a> { #[builder(setter(into))] body: Cow<'a, str>, - /// Whether to create a confidential note or not. - #[builder(default)] - #[deprecated(since = "0.1602.1", note = "renamed to `internal`")] - confidential: Option, /// Whether to create an internal note or not. #[builder(default)] internal: Option, @@ -61,13 +57,6 @@ impl Endpoint for CreateIssueNote<'_> { .push_opt("internal", self.internal) .push_opt("created_at", self.created_at); - #[allow(deprecated)] - { - if self.internal.is_none() { - params.push_opt("confidential", self.confidential); - } - } - params.into_body() } } @@ -147,28 +136,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_confidential() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("projects/simple%2Fproject/issues/1/notes") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!("body=body", "&confidential=true")) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = CreateIssueNote::builder() - .project("simple/project") - .issue(1) - .body("body") - .confidential(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_internal() { let endpoint = ExpectedUrl::builder() diff --git a/src/api/projects/issues/notes/edit.rs b/src/api/projects/issues/notes/edit.rs index 6c945db5..8165cf9a 100644 --- a/src/api/projects/issues/notes/edit.rs +++ b/src/api/projects/issues/notes/edit.rs @@ -24,13 +24,6 @@ pub struct EditIssueNote<'a> { /// The content of the note. #[builder(setter(into))] body: Cow<'a, str>, - /// The confidential flag of the note. - #[builder(default)] - #[deprecated( - since = "0.1602.1", - note = "Confidentiality of notes cannot be edited anymore" - )] - confidential: Option, } impl<'a> EditIssueNote<'a> { @@ -58,11 +51,6 @@ impl Endpoint for EditIssueNote<'_> { params.push("body", self.body.as_ref()); - #[allow(deprecated)] - { - params.push_opt("confidential", self.confidential); - } - params.into_body() } } @@ -156,27 +144,4 @@ mod tests { .unwrap(); api::ignore(endpoint).query(&client).unwrap(); } - - #[test] - #[allow(deprecated)] - fn endpoint_confidential() { - let endpoint = ExpectedUrl::builder() - .method(Method::PUT) - .endpoint("projects/simple%2Fproject/issues/1/notes/1") - .content_type("application/x-www-form-urlencoded") - .body_str("body=body&confidential=true") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = EditIssueNote::builder() - .project("simple/project") - .issue(1) - .note(1) - .body("body") - .confidential(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } } diff --git a/src/api/projects/members.rs b/src/api/projects/members.rs index e473858d..6534c2c3 100644 --- a/src/api/projects/members.rs +++ b/src/api/projects/members.rs @@ -28,8 +28,6 @@ pub use self::all_members::ProjectMemberState; pub use self::add::AddProjectMember; pub use self::add::AddProjectMemberBuilder; pub use self::add::AddProjectMemberBuilderError; -#[allow(deprecated)] -pub use self::add::ProjectInviteTasksToBeDone; pub use self::edit::EditProjectMember; pub use self::edit::EditProjectMemberBuilder; diff --git a/src/api/projects/members/add.rs b/src/api/projects/members/add.rs index 8d00dd7b..bc8b9d15 100644 --- a/src/api/projects/members/add.rs +++ b/src/api/projects/members/add.rs @@ -6,43 +6,9 @@ use chrono::NaiveDate; use derive_builder::Builder; -use itertools::Itertools; use crate::api::common::{AccessLevel, CommaSeparatedList, NameOrId}; use crate::api::endpoint_prelude::*; -use crate::api::ParamValue; - -/// Tasks users may be assigned upon addition to a project. -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -#[deprecated(note = "the associated parameters have been removed upstream.")] -#[non_exhaustive] -pub enum ProjectInviteTasksToBeDone { - /// Request to focus on CI tasks. - Ci, - /// Request to focus on coding tasks. - Code, - /// Request to focus on issues. - Issues, -} - -#[allow(deprecated)] -impl ProjectInviteTasksToBeDone { - /// The tasks as a query parameter. - fn as_str(self) -> &'static str { - match self { - ProjectInviteTasksToBeDone::Ci => "ci", - ProjectInviteTasksToBeDone::Code => "code", - ProjectInviteTasksToBeDone::Issues => "issues", - } - } -} - -#[allow(deprecated)] -impl ParamValue<'static> for ProjectInviteTasksToBeDone { - fn as_value(&self) -> Cow<'static, str> { - self.as_str().into() - } -} /// Add a user as a member of a project. #[derive(Debug, Builder, Clone)] @@ -63,19 +29,6 @@ pub struct AddProjectMember<'a> { /// The source of the invitation. #[builder(setter(into), default)] invite_source: Option>, - /// Tasks the inviter wants the member to focus on. - /// - /// Requires `tasks_project_id`. - #[builder(setter(name = "_tasks_to_be_done"), default, private)] - #[deprecated(note = "removed upstream")] - #[allow(deprecated)] - tasks_to_be_done: Vec, - /// The project ID in which to create task issues. - /// - /// Requires `tasks_to_be_done`. - #[builder(default)] - #[deprecated(note = "removed upstream")] - tasks_project_id: Option, } impl<'a> AddProjectMember<'a> { @@ -104,29 +57,6 @@ impl AddProjectMemberBuilder<'_> { .extend(iter); self } - - /// Focus on the given task. - #[deprecated(note = "removed upstream")] - #[allow(deprecated)] - pub fn task_to_be_done(&mut self, task: ProjectInviteTasksToBeDone) -> &mut Self { - self.tasks_to_be_done - .get_or_insert_with(Vec::new) - .push(task); - self - } - - /// Focus on the given tasks. - #[deprecated(note = "removed upstream")] - #[allow(deprecated)] - pub fn tasks_to_be_done(&mut self, iter: I) -> &mut Self - where - I: Iterator, - { - self.tasks_to_be_done - .get_or_insert_with(Vec::new) - .extend(iter); - self - } } impl Endpoint for AddProjectMember<'_> { @@ -147,19 +77,6 @@ impl Endpoint for AddProjectMember<'_> { .push_opt("expires_at", self.expires_at) .push_opt("invite_source", self.invite_source.as_ref()); - #[allow(deprecated)] - { - params - .extend( - self.tasks_to_be_done - .iter() - .map(|task| task.as_value()) - .unique() - .map(|value| ("tasks_to_be_done[]", value)), - ) - .push_opt("tasks_project_id", self.tasks_project_id); - } - params.into_body() } } @@ -170,26 +87,10 @@ mod tests { use http::Method; use crate::api::common::AccessLevel; - #[allow(deprecated)] - use crate::api::projects::members::ProjectInviteTasksToBeDone; use crate::api::projects::members::{AddProjectMember, AddProjectMemberBuilderError}; use crate::api::{self, Query}; use crate::test::client::{ExpectedUrl, SingleTestClient}; - #[test] - #[allow(deprecated)] - fn project_invite_tasks_as_str() { - let items = &[ - (ProjectInviteTasksToBeDone::Ci, "ci"), - (ProjectInviteTasksToBeDone::Code, "code"), - (ProjectInviteTasksToBeDone::Issues, "issues"), - ]; - - for (i, s) in items { - assert_eq!(i.as_str(), *s); - } - } - #[test] fn all_parameters_are_needed() { let err = AddProjectMember::builder().build().unwrap_err(); @@ -331,34 +232,4 @@ mod tests { .unwrap(); api::ignore(endpoint).query(&client).unwrap(); } - - #[test] - #[allow(deprecated)] - fn endpoint_tasks_to_be_done() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("projects/simple%2Fproject/members") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!( - "user_id=1", - "&access_level=30", - "&tasks_to_be_done%5B%5D=ci", - "&tasks_to_be_done%5B%5D=code", - "&tasks_project_id=1", - )) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = AddProjectMember::builder() - .project("simple/project") - .user(1) - .access_level(AccessLevel::Developer) - .task_to_be_done(ProjectInviteTasksToBeDone::Ci) - .tasks_to_be_done([ProjectInviteTasksToBeDone::Code].iter().copied()) - .tasks_project_id(1) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } } diff --git a/src/api/projects/members/member.rs b/src/api/projects/members/member.rs index 02a989ba..cb659625 100644 --- a/src/api/projects/members/member.rs +++ b/src/api/projects/members/member.rs @@ -17,27 +17,12 @@ pub struct ProjectMember<'a> { project: NameOrId<'a>, /// The ID of the user. user: u64, - // Whether to include ancestor users from enclosing Groups in the queried list of members. - #[builder(private)] - _include_ancestors: bool, } impl<'a> ProjectMember<'a> { /// Create a builder for the endpoint. pub fn builder() -> ProjectMemberBuilder<'a> { - ProjectMemberBuilder { - _include_ancestors: Some(false), - ..Default::default() - } - } - - /// Create an ancester-including builder for the endpoint. - #[deprecated(note = "use `api/projects/members/AllProjectMember` instead")] - pub fn all_builder() -> ProjectMemberBuilder<'a> { - ProjectMemberBuilder { - _include_ancestors: Some(true), - ..Default::default() - } + ProjectMemberBuilder::default() } } @@ -47,11 +32,7 @@ impl Endpoint for ProjectMember<'_> { } fn endpoint(&self) -> Cow<'static, str> { - if self._include_ancestors { - format!("projects/{}/members/all/{}", self.project, self.user).into() - } else { - format!("projects/{}/members/{}", self.project, self.user).into() - } + format!("projects/{}/members/{}", self.project, self.user).into() } } @@ -65,41 +46,23 @@ mod tests { fn project_and_user_are_needed() { let err = ProjectMember::builder().build().unwrap_err(); crate::test::assert_missing_field!(err, ProjectMemberBuilderError, "project"); - - #[allow(deprecated)] - let err = ProjectMember::all_builder().build().unwrap_err(); - crate::test::assert_missing_field!(err, ProjectMemberBuilderError, "project"); } #[test] fn project_is_needed() { let err = ProjectMember::builder().user(1).build().unwrap_err(); crate::test::assert_missing_field!(err, ProjectMemberBuilderError, "project"); - - #[allow(deprecated)] - let err = ProjectMember::all_builder().user(1).build().unwrap_err(); - crate::test::assert_missing_field!(err, ProjectMemberBuilderError, "project"); } #[test] fn user_is_needed() { let err = ProjectMember::builder().project(1).build().unwrap_err(); crate::test::assert_missing_field!(err, ProjectMemberBuilderError, "user"); - - #[allow(deprecated)] - let err = ProjectMember::all_builder().project(1).build().unwrap_err(); - crate::test::assert_missing_field!(err, ProjectMemberBuilderError, "user"); } #[test] fn project_and_user_are_sufficient() { ProjectMember::builder().project(1).user(1).build().unwrap(); - #[allow(deprecated)] - ProjectMember::all_builder() - .project(1) - .user(1) - .build() - .unwrap(); } #[test] @@ -117,21 +80,4 @@ mod tests { .unwrap(); api::ignore(endpoint).query(&client).unwrap(); } - - #[test] - fn endpoint_all() { - let endpoint = ExpectedUrl::builder() - .endpoint("projects/simple%2Fproject/members/all/1") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - #[allow(deprecated)] - let endpoint = ProjectMember::all_builder() - .project("simple/project") - .user(1) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } } diff --git a/src/api/projects/members/members.rs b/src/api/projects/members/members.rs index 7ceed8e9..a1c5a927 100644 --- a/src/api/projects/members/members.rs +++ b/src/api/projects/members/members.rs @@ -31,25 +31,12 @@ pub struct ProjectMembers<'a> { /// Show seat information for users. #[builder(default)] show_seat_info: Option, - // Whether to include ancestor users from enclosing Groups in the queried list of members. - #[builder(private)] - _include_ancestors: bool, } impl<'a> ProjectMembers<'a> { /// Create a builder for the endpoint. pub fn builder() -> ProjectMembersBuilder<'a> { - let mut builder = ProjectMembersBuilder::default(); - builder._include_ancestors(false); - builder - } - - /// Create a builder for the endpoint that includes ancestor groups. - #[deprecated(note = "use `api/projects/members/AllProjectMembers` instead")] - pub fn all_builder() -> ProjectMembersBuilder<'a> { - let mut builder = ProjectMembersBuilder::default(); - builder._include_ancestors(true); - builder + ProjectMembersBuilder::default() } } @@ -97,11 +84,7 @@ impl Endpoint for ProjectMembers<'_> { } fn endpoint(&self) -> Cow<'static, str> { - if self._include_ancestors { - format!("projects/{}/members/all", self.project).into() - } else { - format!("projects/{}/members", self.project).into() - } + format!("projects/{}/members", self.project).into() } fn parameters(&self) -> QueryParams { @@ -110,12 +93,9 @@ impl Endpoint for ProjectMembers<'_> { params .push_opt("query", self.query.as_ref()) .extend(self.user_ids.iter().map(|&value| ("user_ids[]", value))) + .extend(self.skip_users.iter().map(|&value| ("skip_users[]", value))) .push_opt("show_seat_info", self.show_seat_info); - if !self._include_ancestors { - params.extend(self.skip_users.iter().map(|&value| ("skip_users[]", value))); - } - params } } @@ -132,18 +112,11 @@ mod tests { fn project_is_needed() { let err = ProjectMembers::builder().build().unwrap_err(); crate::test::assert_missing_field!(err, ProjectMembersBuilderError, "project"); - - #[allow(deprecated)] - let err = ProjectMembers::all_builder().build().unwrap_err(); - crate::test::assert_missing_field!(err, ProjectMembersBuilderError, "project"); } #[test] fn project_is_sufficient() { ProjectMembers::builder().project(1).build().unwrap(); - - #[allow(deprecated)] - ProjectMembers::all_builder().project(1).build().unwrap(); } #[test] @@ -161,22 +134,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - fn endpoint_all() { - let endpoint = ExpectedUrl::builder() - .endpoint("projects/simple%2Fproject/members/all") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - #[allow(deprecated)] - let endpoint = ProjectMembers::all_builder() - .project("simple/project") - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_query() { let endpoint = ExpectedUrl::builder() diff --git a/src/api/projects/merge_requests.rs b/src/api/projects/merge_requests.rs index da7de5e6..9788a58a 100644 --- a/src/api/projects/merge_requests.rs +++ b/src/api/projects/merge_requests.rs @@ -13,7 +13,6 @@ pub mod approval_state; pub mod approvals; mod approve; pub mod awards; -mod changes; mod commits; mod create; mod diffs; @@ -69,18 +68,6 @@ pub use self::commits::MergeRequestCommits; pub use self::commits::MergeRequestCommitsBuilder; pub use self::commits::MergeRequestCommitsBuilderError; -#[deprecated(note = "use `pipelines::MergeRequestPipelines` instead")] -pub use self::pipelines::MergeRequestPipelines; -#[deprecated(note = "use `pipelines::MergeRequestPipelinesBuilder` instead")] -pub use self::pipelines::MergeRequestPipelinesBuilder; -#[deprecated(note = "use `pipelines::MergeRequestPipelinesBuilderError` instead")] -pub use self::pipelines::MergeRequestPipelinesBuilderError; - -#[allow(deprecated)] -pub use self::changes::MergeRequestChanges; -pub use self::changes::MergeRequestChangesBuilder; -pub use self::changes::MergeRequestChangesBuilderError; - pub use self::merge_requests::MergeRequests; pub use self::merge_requests::MergeRequestsBuilder; pub use self::merge_requests::MergeRequestsBuilderError; diff --git a/src/api/projects/merge_requests/changes.rs b/src/api/projects/merge_requests/changes.rs deleted file mode 100644 index 8e69e8f4..00000000 --- a/src/api/projects/merge_requests/changes.rs +++ /dev/null @@ -1,165 +0,0 @@ -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those s. - -#![allow(deprecated)] - -use derive_builder::Builder; - -use crate::api::common::NameOrId; -use crate::api::endpoint_prelude::*; - -/// Shows information of a merge request including its files and changes. -#[derive(Debug, Builder, Clone)] -#[builder(setter(strip_option))] -#[deprecated(note = "Deprecated by GitLab. Use `MergeRequestDiffs` instead")] -pub struct MergeRequestChanges<'a> { - /// The project with the merge request. - #[builder(setter(into))] - project: NameOrId<'a>, - /// The ID of the merge request. - merge_request: u64, - - /// Retrieve changes diffs via Gitaly - #[builder(default)] - access_raw_diffs: Option, - /// Return diffs as unified diffs. - #[builder(default)] - unidiff: Option, -} - -impl<'a> MergeRequestChanges<'a> { - /// Create a builder for the endpoint. - pub fn builder() -> MergeRequestChangesBuilder<'a> { - MergeRequestChangesBuilder::default() - } -} - -impl Endpoint for MergeRequestChanges<'_> { - fn method(&self) -> Method { - Method::GET - } - - fn endpoint(&self) -> Cow<'static, str> { - format!( - "projects/{}/merge_requests/{}/changes", - self.project, self.merge_request, - ) - .into() - } - - fn body(&self) -> Result)>, BodyError> { - let mut params = FormParams::default(); - - params - .push_opt("access_raw_diffs", self.access_raw_diffs) - .push_opt("unidiff", self.unidiff); - - params.into_body() - } -} - -#[cfg(test)] -mod tests { - use http::Method; - - use crate::api::projects::merge_requests::{ - MergeRequestChanges, MergeRequestChangesBuilderError, - }; - use crate::api::{self, Query}; - use crate::test::client::{ExpectedUrl, SingleTestClient}; - - #[test] - fn project_and_merge_request_are_needed() { - let err = MergeRequestChanges::builder().build().unwrap_err(); - crate::test::assert_missing_field!(err, MergeRequestChangesBuilderError, "project"); - } - - #[test] - fn project_is_needed() { - let err = MergeRequestChanges::builder() - .merge_request(1) - .build() - .unwrap_err(); - crate::test::assert_missing_field!(err, MergeRequestChangesBuilderError, "project"); - } - - #[test] - fn merge_request_is_needed() { - let err = MergeRequestChanges::builder() - .project(1) - .build() - .unwrap_err(); - crate::test::assert_missing_field!(err, MergeRequestChangesBuilderError, "merge_request"); - } - - #[test] - fn project_and_merge_request_are_sufficient() { - MergeRequestChanges::builder() - .project(1) - .merge_request(1) - .build() - .unwrap(); - } - - #[test] - fn endpoint() { - let endpoint = ExpectedUrl::builder() - .method(Method::GET) - .endpoint("projects/simple%2Fproject/merge_requests/1/changes") - .content_type("application/x-www-form-urlencoded") - .body_str("") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = MergeRequestChanges::builder() - .project("simple/project") - .merge_request(1) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - - #[test] - fn endpoint_access_raw_diffs() { - let endpoint = ExpectedUrl::builder() - .method(Method::GET) - .endpoint("projects/simple%2Fproject/merge_requests/1/changes") - .content_type("application/x-www-form-urlencoded") - .body_str("access_raw_diffs=true") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = MergeRequestChanges::builder() - .project("simple/project") - .merge_request(1) - .access_raw_diffs(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - - #[test] - fn endpoint_unidiff() { - let endpoint = ExpectedUrl::builder() - .method(Method::GET) - .endpoint("projects/simple%2Fproject/merge_requests/1/changes") - .content_type("application/x-www-form-urlencoded") - .body_str("unidiff=true") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = MergeRequestChanges::builder() - .project("simple/project") - .merge_request(1) - .unidiff(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } -} diff --git a/src/api/projects/merge_requests/create.rs b/src/api/projects/merge_requests/create.rs index b8dc3842..c580517b 100644 --- a/src/api/projects/merge_requests/create.rs +++ b/src/api/projects/merge_requests/create.rs @@ -93,12 +93,6 @@ pub struct CreateMergeRequest<'a> { /// The ID of the milestone to add the merge request to. #[builder(default)] milestone_id: Option, - /// How many approvals are required before merging will be allowed. - /// - /// Note that this must be more than the project limit (if present). - #[builder(default)] - #[deprecated(since = "0.1602.1", note = "Use merge request approvals APIs instead.")] - approvals_before_merge: Option, /// Whether to remove the source branch once merged or not. #[builder(default)] remove_source_branch: Option, @@ -108,11 +102,6 @@ pub struct CreateMergeRequest<'a> { /// Whether to squash the branch when merging or not. #[builder(default)] squash: Option, - - /// Whether to allow collaboration with maintainers of the target project or not. - #[deprecated(note = "use `allow_collaboration` instead")] - #[builder(default)] - allow_maintainer_to_push: Option, } impl<'a> CreateMergeRequest<'a> { @@ -258,13 +247,6 @@ impl Endpoint for CreateMergeRequest<'_> { reviewer.add_params(&mut params); } - #[allow(deprecated)] - { - params - .push_opt("allow_maintainer_to_push", self.allow_maintainer_to_push) - .push_opt("approvals_before_merge", self.approvals_before_merge); - } - params.into_body() } } @@ -640,34 +622,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_approvals_before_merge() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("projects/simple%2Fproject/merge_requests") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!( - "source_branch=source%2Fbranch", - "&target_branch=target%2Fbranch", - "&title=title", - "&approvals_before_merge=2", - )) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = CreateMergeRequest::builder() - .project("simple/project") - .source_branch("source/branch") - .target_branch("target/branch") - .title("title") - .approvals_before_merge(2) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_remove_source_branch() { let endpoint = ExpectedUrl::builder() @@ -748,32 +702,4 @@ mod tests { .unwrap(); api::ignore(endpoint).query(&client).unwrap(); } - - #[test] - #[allow(deprecated)] - fn endpoint_allow_maintainer_to_push() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("projects/simple%2Fproject/merge_requests") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!( - "source_branch=source%2Fbranch", - "&target_branch=target%2Fbranch", - "&title=title", - "&allow_maintainer_to_push=true", - )) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = CreateMergeRequest::builder() - .project("simple/project") - .source_branch("source/branch") - .target_branch("target/branch") - .title("title") - .allow_maintainer_to_push(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } } diff --git a/src/api/projects/merge_requests/edit.rs b/src/api/projects/merge_requests/edit.rs index ad1fcef0..04735447 100644 --- a/src/api/projects/merge_requests/edit.rs +++ b/src/api/projects/merge_requests/edit.rs @@ -103,11 +103,6 @@ pub struct EditMergeRequest<'a> { /// Whether to allow collaboration with maintainers of the target project or not. #[builder(default)] allow_collaboration: Option, - - /// Whether to allow collaboration with maintainers of the target project or not. - #[deprecated(note = "use `allow_collaboration` instead")] - #[builder(default)] - allow_maintainer_to_push: Option, } impl<'a> EditMergeRequest<'a> { @@ -196,12 +191,6 @@ impl<'a> EditMergeRequestBuilder<'a> { self } - /// Remove all labels from the issue. - #[deprecated(note = "use `clear_labels` instead")] - pub fn remove_labels(&mut self) -> &mut Self { - self.clear_labels() - } - /// Remove all labels from the issue. pub fn clear_labels(&mut self) -> &mut Self { self.labels = Some(Some(MergeRequestLabels::Unlabeled)); @@ -317,11 +306,6 @@ impl Endpoint for EditMergeRequest<'_> { reviewer.add_params(&mut params); } - #[allow(deprecated)] - { - params.push_opt("allow_maintainer_to_push", self.allow_maintainer_to_push); - } - params.into_body() } } @@ -600,27 +584,6 @@ mod tests { api::ignore(endpoint).query(&client).unwrap(); } - #[test] - #[allow(deprecated)] - fn endpoint_labels_remove() { - let endpoint = ExpectedUrl::builder() - .method(Method::PUT) - .endpoint("projects/simple%2Fproject/merge_requests/1") - .content_type("application/x-www-form-urlencoded") - .body_str("labels=") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = EditMergeRequest::builder() - .project("simple/project") - .merge_request(1) - .remove_labels() - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - #[test] fn endpoint_labels_clear() { let endpoint = ExpectedUrl::builder() @@ -802,25 +765,4 @@ mod tests { .unwrap(); api::ignore(endpoint).query(&client).unwrap(); } - - #[test] - #[allow(deprecated)] - fn endpoint_allow_maintainer_to_push() { - let endpoint = ExpectedUrl::builder() - .method(Method::PUT) - .endpoint("projects/simple%2Fproject/merge_requests/1") - .content_type("application/x-www-form-urlencoded") - .body_str("allow_maintainer_to_push=true") - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = EditMergeRequest::builder() - .project("simple/project") - .merge_request(1) - .allow_maintainer_to_push(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } } diff --git a/src/api/projects/merge_requests/merge_requests.rs b/src/api/projects/merge_requests/merge_requests.rs index 1ec57ab6..658e42ad 100644 --- a/src/api/projects/merge_requests/merge_requests.rs +++ b/src/api/projects/merge_requests/merge_requests.rs @@ -15,7 +15,7 @@ use crate::api::endpoint_prelude::*; use crate::api::helpers::{Labels, ReactionEmoji}; use crate::api::merge_requests::{ ApproverIds, Assignee, MergeRequestMilestone, MergeRequestOrderBy, MergeRequestScope, - MergeRequestSearchScope, MergeRequestState, MergeRequestView, + MergeRequestState, MergeRequestView, }; #[derive(Debug, Clone)] @@ -401,13 +401,6 @@ impl<'a> MergeRequestsBuilder<'a> { self.my_reaction_emoji = Some(Some(ReactionEmoji::Emoji(emoji.into()))); self } - - /// The scopes to look for search query within. - #[deprecated(note = "not actually supported by GitLab")] - #[allow(deprecated)] - pub fn search_in(&mut self, _: MergeRequestSearchScope) -> &mut Self { - self - } } impl Endpoint for MergeRequests<'_> { diff --git a/src/api/projects/merge_requests/notes/create.rs b/src/api/projects/merge_requests/notes/create.rs index 5241588c..3c255e29 100644 --- a/src/api/projects/merge_requests/notes/create.rs +++ b/src/api/projects/merge_requests/notes/create.rs @@ -46,20 +46,6 @@ impl<'a> CreateMergeRequestNote<'a> { } } -impl<'a> CreateMergeRequestNoteBuilder<'a> { - /// The SHA of the head of the merge request. - #[deprecated( - since = "0.1602.1", - note = "typo in GitLab docs; use `merge_request_diff_head_sha` instead." - )] - pub fn merge_request_diff_sha(&mut self, merge_request_diff_sha: M) -> &mut Self - where - M: Into>, - { - self.merge_request_diff_head_sha(merge_request_diff_sha) - } -} - impl Endpoint for CreateMergeRequestNote<'_> { fn method(&self) -> Method { Method::POST @@ -235,29 +221,4 @@ mod tests { .unwrap(); api::ignore(endpoint).query(&client).unwrap(); } - - #[test] - #[allow(deprecated)] - fn endpoint_merge_request_diff_sha() { - let endpoint = ExpectedUrl::builder() - .method(Method::POST) - .endpoint("projects/simple%2Fproject/merge_requests/1/notes") - .content_type("application/x-www-form-urlencoded") - .body_str(concat!( - "body=body", - "&merge_request_diff_head_sha=deadbeefdeadbeefdeadbeefdeadbeefdeadbeef", - )) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = CreateMergeRequestNote::builder() - .project("simple/project") - .merge_request(1) - .body("body") - .merge_request_diff_sha("deadbeefdeadbeefdeadbeefdeadbeefdeadbeef") - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } } diff --git a/src/api/projects/merge_requests/notes/edit.rs b/src/api/projects/merge_requests/notes/edit.rs index bb61b7b2..f07dba40 100644 --- a/src/api/projects/merge_requests/notes/edit.rs +++ b/src/api/projects/merge_requests/notes/edit.rs @@ -24,14 +24,6 @@ pub struct EditMergeRequestNote<'a> { /// The content of the note. #[builder(setter(into))] body: Cow<'a, str>, - /// The SHA of the head of the merge request. - /// - /// Required when using the `/merge` command to verify that the intended commit is being - /// merged. - #[builder(setter(into), default)] - #[allow(dead_code)] - #[deprecated(since = "0.1602.1", note = "not available when editing a note")] - merge_request_diff_sha: Option>, } impl<'a> EditMergeRequestNote<'a> { diff --git a/src/api/projects/pipelines/pipelines.rs b/src/api/projects/pipelines/pipelines.rs index c244f660..e6180c8d 100644 --- a/src/api/projects/pipelines/pipelines.rs +++ b/src/api/projects/pipelines/pipelines.rs @@ -252,17 +252,6 @@ impl<'a> Pipelines<'a> { } } -impl<'a> PipelinesBuilder<'a> { - /// Filter pipelines by the name of the triggering user. - #[deprecated(note = "use `username` instead; `name` was never accepted by GitLab")] - pub fn name(&mut self, _: N) -> &mut Self - where - N: Into>, - { - self - } -} - impl Endpoint for Pipelines<'_> { fn method(&self) -> Method { Method::GET diff --git a/src/api/projects/protected_branches.rs b/src/api/projects/protected_branches.rs index 1974ccd1..7570b6d8 100644 --- a/src/api/projects/protected_branches.rs +++ b/src/api/projects/protected_branches.rs @@ -17,7 +17,6 @@ pub use self::protect::ProtectBranch; pub use self::protect::ProtectBranchBuilder; pub use self::protect::ProtectBranchBuilderError; pub use self::protect::ProtectedAccess; -pub use self::protect::ProtectedAccessLevel; pub use self::unprotect::UnprotectBranch; pub use self::unprotect::UnprotectBranchBuilder; diff --git a/src/api/projects/protected_branches/protect.rs b/src/api/projects/protected_branches/protect.rs index 654fabc1..ea01a39a 100644 --- a/src/api/projects/protected_branches/protect.rs +++ b/src/api/projects/protected_branches/protect.rs @@ -9,13 +9,10 @@ use std::collections::BTreeSet; use derive_builder::Builder; -use crate::api::common::{NameOrId, ProtectedAccessLevelWithAccess}; +use crate::api::common::{NameOrId, ProtectedAccessLevel, ProtectedAccessLevelWithAccess}; use crate::api::endpoint_prelude::*; use crate::api::ParamValue; -#[deprecated(note = "use `api/common/ProtectedAccessLevel` instead")] -pub use crate::api::common::ProtectedAccessLevel; - /// Granular protected access controls for branches. #[derive(Debug, Clone, Copy, PartialEq, Eq)] #[non_exhaustive] diff --git a/src/api/projects/registry/repositories.rs b/src/api/projects/registry/repositories.rs index dc9a01d6..8524fb4d 100644 --- a/src/api/projects/registry/repositories.rs +++ b/src/api/projects/registry/repositories.rs @@ -16,15 +16,6 @@ pub struct Repositories<'a> { /// The project to query for repositories. #[builder(setter(into))] project: NameOrId<'a>, - - /// Include tags for each repository in response. - #[builder(default)] - #[deprecated(since = "0.1602.1", note = "Removed in GitLab 15.0")] - tags: Option, - /// Include tags_count for each repository in response. - #[builder(default)] - #[deprecated(since = "0.1602.1", note = "Removed in GitLab 15.0")] - tags_count: Option, } impl<'a> Repositories<'a> { @@ -42,19 +33,6 @@ impl Endpoint for Repositories<'_> { fn endpoint(&self) -> Cow<'static, str> { format!("projects/{}/registry/repositories", self.project).into() } - - fn parameters(&self) -> QueryParams { - let mut params = QueryParams::default(); - - #[allow(deprecated)] - { - params - .push_opt("tags", self.tags) - .push_opt("tags_count", self.tags_count); - } - - params - } } impl Pageable for Repositories<'_> {} @@ -90,40 +68,4 @@ mod tests { .unwrap(); api::ignore(endpoint).query(&client).unwrap(); } - - #[test] - #[allow(deprecated)] - fn endpoint_tags() { - let endpoint = ExpectedUrl::builder() - .endpoint("projects/simple%2Fproject/registry/repositories") - .add_query_params(&[("tags", "true")]) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = Repositories::builder() - .project("simple/project") - .tags(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } - - #[test] - #[allow(deprecated)] - fn endpoint_tags_count() { - let endpoint = ExpectedUrl::builder() - .endpoint("projects/simple%2Fproject/registry/repositories") - .add_query_params(&[("tags_count", "true")]) - .build() - .unwrap(); - let client = SingleTestClient::new_raw(endpoint, ""); - - let endpoint = Repositories::builder() - .project("simple/project") - .tags_count(true) - .build() - .unwrap(); - api::ignore(endpoint).query(&client).unwrap(); - } } diff --git a/src/api/users/users.rs b/src/api/users/users.rs index ad27a537..2987b7aa 100644 --- a/src/api/users/users.rs +++ b/src/api/users/users.rs @@ -86,14 +86,6 @@ impl<'a> ExternalProvider<'a> { } } -impl<'a> ExternalProviderBuilder<'a> { - /// Deprecated compatibility method to set UID. - #[deprecated(note = "use `uid` instead")] - pub fn id(&mut self, id: u64) -> &mut ExternalProviderBuilder<'a> { - self.uid(id.to_string()) - } -} - /// Query for users on an instance. #[derive(Debug, Builder, Clone)] #[builder(setter(strip_option))] @@ -332,16 +324,6 @@ mod tests { .unwrap(); } - #[test] - #[allow(deprecated)] - fn external_provider_id_and_name_are_sufficient() { - ExternalProvider::builder() - .id(1) - .name("name") - .build() - .unwrap(); - } - #[test] fn defaults_are_sufficient() { Users::builder().build().unwrap(); diff --git a/src/webhooks.rs b/src/webhooks.rs index ecc0b802..891a3516 100644 --- a/src/webhooks.rs +++ b/src/webhooks.rs @@ -360,9 +360,6 @@ pub struct MergeRequestHookAttrs { pub last_commit: Option, /// Whether the merge request is a draft or not. pub draft: bool, - /// Whether the merge request is a work-in-progress or not. - #[deprecated(since = "0.1601.0", note = "Use the 'draft' member instead.")] - pub work_in_progress: bool, /// The object ID of the merge commit which is currently being handled. pub in_progress_merge_commit_sha: Option, -- GitLab From be89deb248152220cee678cefcb5aeff47d30ec2 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 13 Feb 2025 13:00:33 +0100 Subject: [PATCH 3/3] rust: mark a location for a msrv bump tweak The lint suppression can disappear when 1.66 is required. --- src/api/projects/repository/commits/create.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/api/projects/repository/commits/create.rs b/src/api/projects/repository/commits/create.rs index d1e67a73..876ba168 100644 --- a/src/api/projects/repository/commits/create.rs +++ b/src/api/projects/repository/commits/create.rs @@ -110,8 +110,8 @@ impl<'a> CommitAction<'a> { CommitActionBuilder::default() } - // `Option<(T, U)>::unzip` is added in 1.66, but the MSRV is 1.63 because non-`api`-using - // clients can still use it. + // XXX(rust-1.66): `Option<(T, U)>::unzip` is added in 1.66, but the MSRV is 1.63 because + // non-`api`-using clients can still use it. #[allow(clippy::incompatible_msrv)] fn add_query<'b>(&'b self, params: &mut FormParams<'b>) { let (actual_encoding, actual_content) = self -- GitLab