From 3820fc4354424d2782c8834fe80f57987699e868 Mon Sep 17 00:00:00 2001 From: kolaente Date: Tue, 10 Apr 2018 15:52:07 +0200 Subject: [PATCH] Added extra error type for unknown dependency type --- models/error.go | 15 +++++++++++++++ models/issue_dependency.go | 5 +++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/models/error.go b/models/error.go index ca4693f04..443016027 100644 --- a/models/error.go +++ b/models/error.go @@ -1275,3 +1275,18 @@ func IsErrDependenciesLeft(err error) bool { func (err ErrDependenciesLeft) Error() string { return fmt.Sprintf("cannot close this issue as it still has open dependencies [issue id: %d]", err.IssueID) } + +// ErrUnknownDependencyType represents an error where an unknown dependency type was passed +type ErrUnknownDependencyType struct { + Type DependencyType +} + +// IsErrUnknownDependencyType checks if an error is ErrUnknownDependencyType +func IsErrUnknownDependencyType(err error) bool { + _, ok := err.(ErrUnknownDependencyType) + return ok +} + +func (err ErrUnknownDependencyType) Error() string { + return fmt.Sprintf("unknown dependency type [type: %d]", err.Type) +} diff --git a/models/issue_dependency.go b/models/issue_dependency.go index 01319d870..b75a41437 100644 --- a/models/issue_dependency.go +++ b/models/issue_dependency.go @@ -8,6 +8,7 @@ import ( "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" + "fmt" ) // IssueDependency represents an issue dependency @@ -83,7 +84,7 @@ func RemoveIssueDependency(user *User, issue *Issue, dep *Issue, depType Depende case DependencyTypeBlocking: err = issueDepExists(sess, dep.ID, issue.ID) default: - return + return ErrUnknownDependencyType{depType} } if err != nil { if IsErrDependencyExists(err) { @@ -104,7 +105,7 @@ func RemoveIssueDependency(user *User, issue *Issue, dep *Issue, depType Depende case DependencyTypeBlocking: issueDepToDelete = IssueDependency{IssueID: dep.ID, DependencyID: issue.ID} default: - return + return ErrUnknownDependencyType{depType} } if _, err := sess.Delete(&issueDepToDelete); err != nil {