Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions cls/SourceControl/Git/DeploymentLog.cls
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,16 @@ Property HeadRevision As %String;

Property Status As %Status;

Method StartLog(pRevision As %String, pTimestamp AS %TimeStamp = {$zdatetime($ztimestamp,3)}) {
set ..HeadRevision = pRevision
set ..StartTimestamp = pTimestamp
}

Method FinalizeLog(pStatus As %Status, pTimestamp AS %TimeStamp = {$zdatetime($ztimestamp,3)}) {
set ..Status = pStatus
set ..EndTimestamp = pTimestamp
}

Storage Default
{
<Data name="DeploymentLogDefaultData">
Expand Down
16 changes: 9 additions & 7 deletions cls/SourceControl/Git/PullEventHandler.cls
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,16 @@ ClassMethod ForModifications(ByRef files, pullEventClass As %String) As %Status
set handlerClass = $select(
$data(pullEventClass)#2: pullEventClass,
1: ##class(SourceControl.Git.Utils).PullEventClass())
set st = ..BootstrapPullEventHandler(handlerClass)
quit:$$$ISERR(st)
set log = ##class(SourceControl.Git.DeploymentLog).%New()
set log.HeadRevision = ##class(SourceControl.Git.Utils).GetCurrentRevision()
set log.StartTimestamp = $zdatetime($ztimestamp,3)
do log.StartLog(##class(SourceControl.Git.Utils).GetCurrentRevision())
set st = log.%Save()
quit:$$$ISERR(st)
set st = ..BootstrapPullEventHandler(handlerClass)
if $$$ISERR(st) {
do log.FinalizeLog(st)
do log.%Save()
quit
}
set event = $classmethod(handlerClass,"%New")
set event.LocalRoot = ##class(SourceControl.Git.Utils).TempFolder()
merge event.ModifiedFiles = files
Expand All @@ -49,8 +52,7 @@ ClassMethod ForModifications(ByRef files, pullEventClass As %String) As %Status
catch pullError {
set st = pullError.AsStatus()
}
set log.EndTimestamp = $zdatetime($ztimestamp,3)
set log.Status = st
do log.FinalizeLog(st)
set st = log.%Save() // this hides any errors returned or thrown by OnPull()
quit:$$$ISERR(st)
} catch err {
Expand All @@ -60,7 +62,7 @@ ClassMethod ForModifications(ByRef files, pullEventClass As %String) As %Status
}

/// Makes sure <var>class</var> is compiled and can be instantiated, loading it from the
/// local repository if needed.
/// local repository if needed.
ClassMethod BootstrapPullEventHandler(class As %String) As %Status [ Private ]
{
quit:$$$comClassDefined(class) $$$OK
Expand Down
16 changes: 16 additions & 0 deletions test/UnitTest/SourceControl/Git/DeploymentLog.cls
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
Class UnitTest.SourceControl.Git.DeploymentLog Extends %UnitTest.TestCase
{

Method TestLogActions() {
set log = ##class(SourceControl.Git.DeploymentLog).%New()
set timestamp = "2026-09-10 08:20:00" // Use a static timestamp to verify properties are set.
do log.StartLog("face123", timestamp)
do $$$AssertEquals(log.HeadRevision, "face123")
do $$$AssertEquals(log.StartTimestamp, timestamp)

do log.FinalizeLog($$$OK, timestamp)
do $$$AssertStatusOK(log.Status)
do $$$AssertEquals(log.EndTimestamp, timestamp)
}

}
Loading