Skip to content

Commit

Permalink
fix: status canceled when the build was stopped manually #80
Browse files Browse the repository at this point in the history
  • Loading branch information
alexkvak committed Mar 25, 2021
1 parent a2633d9 commit 6597e4e
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import jetbrains.buildServer.serverSide.artifacts.{
import jetbrains.buildServer.serverSide.{
SBuild,
SQueuedBuild,
SRunningBuild,
ServerPaths,
WebLinks
}
Expand Down Expand Up @@ -44,6 +45,7 @@ class SBuildMessageBuilder(build: SBuild, context: MessageBuilderContext)
else
statusCanceled
} else if (build.getBuildStatus.isSuccessful) statusSucceeded
else if (isInterrupted(build)) statusCanceled
else statusFailed

def artifacts =
Expand Down Expand Up @@ -219,6 +221,11 @@ object SBuildMessageBuilder {
case _ => ""
}

private def isInterrupted(build: SBuild): Boolean =
build.isInstanceOf[SRunningBuild] && build
.asInstanceOf[SRunningBuild]
.isInterrupted

case class MessageBuilderContext(
webLinks: WebLinks,
gateway: SlackGateway,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.fpd.teamcity.slack

import java.io.File

import com.fpd.teamcity.slack.ConfigManager.BuildSetting
import com.fpd.teamcity.slack.SlackGateway.SlackAttachment
import jetbrains.buildServer.BuildProblemData
Expand All @@ -11,7 +10,12 @@ import jetbrains.buildServer.serverSide.artifacts.{
BuildArtifacts,
BuildArtifactsViewMode
}
import jetbrains.buildServer.serverSide.{Branch, SBuild, SQueuedBuild}
import jetbrains.buildServer.serverSide.{
Branch,
SBuild,
SQueuedBuild,
SRunningBuild
}
import jetbrains.buildServer.users.SUser
import jetbrains.buildServer.vcs.SVcsModification
import org.scalamock.scalatest.MockFactory
Expand Down Expand Up @@ -386,6 +390,56 @@ class SBuildMessageBuilderTest
)
}

"MessageBuilder.compile" should "compile template for interrupted build" in {
implicit val build: SRunningBuild = stub[SRunningBuild]

(build.getFullName _).when().returns("Full name")
(build.getDuration _).when().returns(10)
(build.getBuildNumber _).when().returns("2")
(build.getBuildStatus _).when().returns(Status.UNKNOWN)
(build.isInterrupted _).when().returns(true)

val messageTemplate = """{name}
|{status}
""".stripMargin

messageBuilder().compile(
messageTemplate,
buildSetting
) shouldEqual SlackAttachment(
s"""Full name
|${Strings.MessageBuilder.statusCanceled}
""".stripMargin.trim,
Status.UNKNOWN.getHtmlColor,
""
)
}

"MessageBuilder.compile" should "compile template for not interrupted build" in {
implicit val build: SRunningBuild = stub[SRunningBuild]

(build.getFullName _).when().returns("Full name")
(build.getDuration _).when().returns(10)
(build.getBuildNumber _).when().returns("2")
(build.getBuildStatus _).when().returns(Status.UNKNOWN)
(build.isInterrupted _).when().returns(false)

val messageTemplate = """{name}
|{status}
""".stripMargin

messageBuilder().compile(
messageTemplate,
buildSetting
) shouldEqual SlackAttachment(
s"""Full name
|${Strings.MessageBuilder.statusFailed}
""".stripMargin.trim,
Status.UNKNOWN.getHtmlColor,
""
)
}

"MessageBuilder.compile" should "compile template for started build" in {
implicit val build: SBuild = stub[SBuild]

Expand Down

0 comments on commit 6597e4e

Please sign in to comment.