KirillOsenkov / MSBuildStructuredLog

A logger for MSBuild that records a structured representation of executed targets, tasks, property and item values.
MIT License
1.41k stars 188 forks source link

Fix DisplayDuration display #647

Closed martin-strecker-sonarsource closed 1 year ago

martin-strecker-sonarsource commented 1 year ago

Fixes #646

TextUtilities.DisplayDuration produces invalid output for several different input values. The new tests executed against the old code produce the following test failures:

[xUnit.net 00:00:00.19]   Starting:    StructuredLogger.Tests
[xUnit.net 00:00:01.43]     StructuredLogger.Tests.TextUtilitiesTests.TestDisplayDuration(duration: 60000, expected: "1:00.000") [FAIL]
[xUnit.net 00:00:01.43]       Assert.Equal() Failure
[xUnit.net 00:00:01.43]                 ↓ (pos 0)
[xUnit.net 00:00:01.43]       Expected: 1:00.000
[xUnit.net 00:00:01.43]       Actual:   0.000 s
[xUnit.net 00:00:01.43]                 ↑ (pos 0)
[xUnit.net 00:00:01.45]     StructuredLogger.Tests.TextUtilitiesTests.TestDisplayDuration(duration: 172800040, expected: "2.00:00:00.0400000") [FAIL]
[xUnit.net 00:00:01.45]       Assert.Equal() Failure
[xUnit.net 00:00:01.45]                 ↓ (pos 0)
[xUnit.net 00:00:01.45]       Expected: 2.00:00:00.0400000
[xUnit.net 00:00:01.45]       Actual:   0:00:00
[xUnit.net 00:00:01.46]                 ↑ (pos 0)
[xUnit.net 00:00:01.46]     StructuredLogger.Tests.TextUtilitiesTests.TestDisplayDuration(duration: 3600000, expected: "01:00:00") [FAIL]
[xUnit.net 00:00:01.46]       Assert.Equal() Failure
[xUnit.net 00:00:01.46]                  ↓ (pos 1)
[xUnit.net 00:00:01.46]       Expected: 01:00:00
[xUnit.net 00:00:01.46]       Actual:   0:00.000
[xUnit.net 00:00:01.46]                  ↑ (pos 1)
[xUnit.net 00:00:01.46]     StructuredLogger.Tests.TextUtilitiesTests.TestDisplayDuration(duration: 1000, expected: "1.000 s") [FAIL]
[xUnit.net 00:00:01.46]       Assert.Equal() Failure
[xUnit.net 00:00:01.46]                 ↓ (pos 0)
[xUnit.net 00:00:01.46]       Expected: 1.000 s
[xUnit.net 00:00:01.46]       Actual:   0 ms
[xUnit.net 00:00:01.46]                 ↑ (pos 0)
[xUnit.net 00:00:01.46]     StructuredLogger.Tests.TextUtilitiesTests.TestDisplayDuration(duration: 172800000, expected: "2.00:00:00") [FAIL]
[xUnit.net 00:00:01.46]       Assert.Equal() Failure
[xUnit.net 00:00:01.46]                 ↓ (pos 0)
[xUnit.net 00:00:01.46]       Expected: 2.00:00:00
[xUnit.net 00:00:01.46]       Actual:   0:00:00
[xUnit.net 00:00:01.46]                 ↑ (pos 0)
[xUnit.net 00:00:01.46]   Finished:    StructuredLogger.Tests
========== Test run finished: 9 Tests (4 Passed, 5 Failed, 0 Skipped) run in 1,5 sec ==========