Skip to content

Commit d975701

Browse files
fix: preserve missing domain controller build data
I now report absent build values as collection failures instead of valid empty or zero data, with regression coverage for both registry values. Signed-off-by: Adil Alperen Çiftci <adilalperenciftci@users.noreply.github.com>
1 parent 4d94463 commit d975701

2 files changed

Lines changed: 41 additions & 6 deletions

File tree

‎src/CommonLib/Processors/DCRegistryProcessor.cs‎

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,18 +39,20 @@ public StrRegistryAPIResult GetCurrentBuildNumber(string target)
3939
const string subValue = "CurrentBuildNumber";
4040
var data = _registryAccessor.GetRegistryKeyData(target, subKey, subValue);
4141

42-
ret.Collected = data.Collected;
4342
if (!data.Collected)
4443
{
4544
ret.FailureReason = data.FailureReason;
4645
return ret;
4746
}
4847

49-
if (data.Value != null)
48+
if (data.Value == null)
5049
{
51-
ret.Value = (string)data.Value;
50+
ret.FailureReason = "Registry value was not found";
51+
return ret;
5252
}
5353

54+
ret.Collected = true;
55+
ret.Value = (string)data.Value;
5456
return ret;
5557
}
5658

@@ -66,18 +68,20 @@ public IntRegistryAPIResult GetCurrentBuildRevision(string target)
6668
const string subValue = "UBR";
6769
var data = _registryAccessor.GetRegistryKeyData(target, subKey, subValue);
6870

69-
ret.Collected = data.Collected;
7071
if (!data.Collected)
7172
{
7273
ret.FailureReason = data.FailureReason;
7374
return ret;
7475
}
7576

76-
if (data.Value != null)
77+
if (data.Value == null)
7778
{
78-
ret.Value = (int)data.Value;
79+
ret.FailureReason = "Registry value was not found";
80+
return ret;
7981
}
8082

83+
ret.Collected = true;
84+
ret.Value = (int)data.Value;
8185
return ret;
8286
}
8387

‎test/unit/DCRegistryProcessorTests.cs‎

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,36 @@ public void GetCurrentBuildRevision_PreservesCollectionFailure() {
5959
Assert.False(result.Collected);
6060
Assert.Equal("access denied", result.FailureReason);
6161
}
62+
63+
[Fact]
64+
public void GetCurrentBuildNumber_ReportsMissingValue() {
65+
_registryAccessor
66+
.Setup(s => s.GetRegistryKeyData(Target, CurrentVersionKey, "CurrentBuildNumber"))
67+
.Returns(new RegistryResult {
68+
Collected = true,
69+
Value = null
70+
});
71+
72+
var result = _processor.GetCurrentBuildNumber(Target);
73+
74+
Assert.False(result.Collected);
75+
Assert.Null(result.Value);
76+
Assert.Equal("Registry value was not found", result.FailureReason);
77+
}
78+
79+
[Fact]
80+
public void GetCurrentBuildRevision_ReportsMissingValue() {
81+
_registryAccessor
82+
.Setup(s => s.GetRegistryKeyData(Target, CurrentVersionKey, "UBR"))
83+
.Returns(new RegistryResult {
84+
Collected = true,
85+
Value = null
86+
});
87+
88+
var result = _processor.GetCurrentBuildRevision(Target);
89+
90+
Assert.False(result.Collected);
91+
Assert.Equal("Registry value was not found", result.FailureReason);
92+
}
6293
}
6394
}

0 commit comments

Comments
 (0)