Skip to content

Commit 345b644

Browse files
committed
Treat explicit empty tsdelta flags as disabled
1 parent 5f6193b commit 345b644

3 files changed

Lines changed: 89 additions & 0 deletions

File tree

internal/emitter/lineTransformerANSI.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ var Tags = []tag{
159159
{0, []string{"us", "µs", "uS", "µS", "uSec", "µSec", "uSEC", "µSEC", "MicroSec", "Microsecond", "Microseconds"}, colorizeTIME},
160160
{0, []string{"ms", "mS", "mSec", "mSEC", "MSEC", "MilliSec", "Millisecond", "Milliseconds"}, colorizeTIME},
161161
{0, []string{"s", "S", "Sec", "SEC", "SECOND", "SECONDS", "Second", "Seconds"}, colorizeTIME},
162+
{0, []string{"dt", "delta", "dT", "deltaTime", "delta-time"}, colorizeTIME},
162163
}
163164

164165
// FindTagName maps any tag alias to its canonical name.

internal/translator/translator.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,11 +246,27 @@ func renderTargetStamp(size int, timestamp uint64) string {
246246
func renderTargetDelta(size int, timestamp uint64, state *targetStampState) string {
247247
_, deltaFormat := targetStampFormats(size)
248248
if deltaFormat == "" {
249+
if targetDeltaExplicitlyDisabled(size) {
250+
return ""
251+
}
249252
return commonTargetDeltaPlaceholder()
250253
}
251254
return formatTargetDelta(size, deltaFormat, timestamp, state)
252255
}
253256

257+
func targetDeltaExplicitlyDisabled(size int) bool {
258+
switch size {
259+
case 0:
260+
return decoder.ShowTargetStamp0DeltaPassed
261+
case 2:
262+
return decoder.ShowTargetStamp16DeltaPassed
263+
case 4:
264+
return decoder.ShowTargetStamp32DeltaPassed
265+
default:
266+
return false
267+
}
268+
}
269+
254270
func formatTargetDelta(size int, format string, timestamp uint64, state *targetStampState) string {
255271
if format == "" {
256272
return ""

internal/translator/translator_delta_test.go

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,15 +126,21 @@ func TestRenderTargetDeltaComputesCommonPlaceholderWithoutTs0Delta(t *testing.T)
126126
saved0Delta := decoder.TargetStamp0Delta
127127
saved16Delta := decoder.TargetStamp16Delta
128128
saved32Delta := decoder.TargetStamp32Delta
129+
saved16Passed := decoder.ShowTargetStamp16DeltaPassed
130+
saved32Passed := decoder.ShowTargetStamp32DeltaPassed
129131
defer func() {
130132
decoder.TargetStamp0Delta = saved0Delta
131133
decoder.TargetStamp16Delta = saved16Delta
132134
decoder.TargetStamp32Delta = saved32Delta
135+
decoder.ShowTargetStamp16DeltaPassed = saved16Passed
136+
decoder.ShowTargetStamp32DeltaPassed = saved32Passed
133137
}()
134138

135139
decoder.TargetStamp0Delta = ""
136140
decoder.TargetStamp16Delta = "us"
137141
decoder.TargetStamp32Delta = ""
142+
decoder.ShowTargetStamp16DeltaPassed = false
143+
decoder.ShowTargetStamp32DeltaPassed = false
138144

139145
state := targetStampState{}
140146
got := renderTargetDelta(4, 123, &state)
@@ -144,6 +150,72 @@ func TestRenderTargetDeltaComputesCommonPlaceholderWithoutTs0Delta(t *testing.T)
144150
}
145151
}
146152

153+
func TestRenderTargetDeltaExplicitEmptyDisablesTs16Placeholder(t *testing.T) {
154+
saved16Delta := decoder.TargetStamp16Delta
155+
saved32Delta := decoder.TargetStamp32Delta
156+
saved16Passed := decoder.ShowTargetStamp16DeltaPassed
157+
saved32Passed := decoder.ShowTargetStamp32DeltaPassed
158+
defer func() {
159+
decoder.TargetStamp16Delta = saved16Delta
160+
decoder.TargetStamp32Delta = saved32Delta
161+
decoder.ShowTargetStamp16DeltaPassed = saved16Passed
162+
decoder.ShowTargetStamp32DeltaPassed = saved32Passed
163+
}()
164+
165+
decoder.TargetStamp16Delta = ""
166+
decoder.TargetStamp32Delta = "dt:%5d"
167+
decoder.ShowTargetStamp16DeltaPassed = true
168+
decoder.ShowTargetStamp32DeltaPassed = true
169+
170+
state := targetStampState{}
171+
if got := renderTargetDelta(2, 123, &state); got != "" {
172+
t.Fatalf("expected explicit empty ts16delta to suppress placeholder, got %q", got)
173+
}
174+
}
175+
176+
func TestRenderTargetDeltaExplicitEmptyDisablesTs32Placeholder(t *testing.T) {
177+
saved16Delta := decoder.TargetStamp16Delta
178+
saved32Delta := decoder.TargetStamp32Delta
179+
saved16Passed := decoder.ShowTargetStamp16DeltaPassed
180+
saved32Passed := decoder.ShowTargetStamp32DeltaPassed
181+
defer func() {
182+
decoder.TargetStamp16Delta = saved16Delta
183+
decoder.TargetStamp32Delta = saved32Delta
184+
decoder.ShowTargetStamp16DeltaPassed = saved16Passed
185+
decoder.ShowTargetStamp32DeltaPassed = saved32Passed
186+
}()
187+
188+
decoder.TargetStamp16Delta = "dt:%4d"
189+
decoder.TargetStamp32Delta = ""
190+
decoder.ShowTargetStamp16DeltaPassed = true
191+
decoder.ShowTargetStamp32DeltaPassed = true
192+
193+
state := targetStampState{}
194+
if got := renderTargetDelta(4, 123, &state); got != "" {
195+
t.Fatalf("expected explicit empty ts32delta to suppress placeholder, got %q", got)
196+
}
197+
}
198+
199+
func TestRenderTargetDeltaExplicitEmptyDisablesTs0Placeholder(t *testing.T) {
200+
saved0Delta := decoder.TargetStamp0Delta
201+
saved16Delta := decoder.TargetStamp16Delta
202+
saved0Passed := decoder.ShowTargetStamp0DeltaPassed
203+
defer func() {
204+
decoder.TargetStamp0Delta = saved0Delta
205+
decoder.TargetStamp16Delta = saved16Delta
206+
decoder.ShowTargetStamp0DeltaPassed = saved0Passed
207+
}()
208+
209+
decoder.TargetStamp0Delta = ""
210+
decoder.TargetStamp16Delta = "dt:%4d"
211+
decoder.ShowTargetStamp0DeltaPassed = true
212+
213+
state := targetStampState{}
214+
if got := renderTargetDelta(0, 0, &state); got != "" {
215+
t.Fatalf("expected explicit empty ts0delta to suppress placeholder, got %q", got)
216+
}
217+
}
218+
147219
func TestTargetStampDisplayWidthUsesGenericTagPrefix(t *testing.T) {
148220
if got := targetStampDisplayWidth(4, "time:%12d"); got != 12 {
149221
t.Fatalf("unexpected display width for time tag: %d", got)

0 commit comments

Comments
 (0)