Skip to content

Commit 4780247

Browse files
authored
Merge pull request #1203 from wakatime/develop
Release v1.24.1
2 parents 2b29d7b + dcaac53 commit 4780247

24 files changed

+255
-94
lines changed

cmd/handler/option.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@ func WithFormatting() Preprocessor {
2424
}
2525
}
2626

27+
// WithCategoryDetection returns a Preprocessor that applies heartbeat formatting.
28+
func WithCategoryDetection() Preprocessor {
29+
return func(_ params.Params) heartbeat.HandleOption {
30+
return heartbeat.WithCategory()
31+
}
32+
}
33+
2734
// WithEntityModifier returns a Preprocessor that applies entity modification to heartbeats.
2835
func WithEntityModifier() Preprocessor {
2936
return func(_ params.Params) heartbeat.HandleOption {

cmd/heartbeat/heartbeat.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ func buildHeartbeats(ctx context.Context, params params.Params) []heartbeat.Hear
204204

205205
heartbeats = append(heartbeats, heartbeat.New(
206206
params.Heartbeat.Project.BranchAlternate,
207-
params.Heartbeat.Category,
207+
&params.Heartbeat.Category,
208208
params.Heartbeat.CursorPosition,
209209
params.Heartbeat.Entity,
210210
params.Heartbeat.EntityType,
@@ -249,6 +249,7 @@ func initHandleOptions() []handler.Preprocessor {
249249
handler.WithFileStatsDetection(),
250250
handler.WithLanguageDetection(),
251251
handler.WithDependencyDetection(),
252+
handler.WithCategoryDetection(),
252253
handler.WithProjectDetection(),
253254
handler.WithProjectFiltering(),
254255
handler.WithHeartbeatSanitization(),

cmd/heartbeat/heartbeat_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,7 @@ func TestSendHeartbeats_ExtraHeartbeats_Sanitize(t *testing.T) {
541541
assert.Equal(t, []heartbeat.Heartbeat{
542542
{
543543
Branch: nil,
544-
Category: heartbeat.CodingCategory,
544+
Category: heartbeat.WritingTestsCategory.Pointer(),
545545
CursorPosition: nil,
546546
Dependencies: nil,
547547
Entity: "HIDDEN.go",

cmd/heartbeat/testdata/api_heartbeats_request_extra_heartbeats_filtered_template.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
[
22
{
3-
"category": "coding",
4-
"dependencies": ["os"],
3+
"category": null,
4+
"dependencies": [
5+
"os"
6+
],
57
"entity": "%s",
68
"language": "Go",
79
"lines": 11,
@@ -13,7 +15,10 @@
1315
},
1416
{
1517
"category": "debugging",
16-
"dependencies": ["flask","simplejson"],
18+
"dependencies": [
19+
"flask",
20+
"simplejson"
21+
],
1722
"entity": "%s",
1823
"language": "Python",
1924
"lines": 20,
@@ -23,4 +28,4 @@
2328
"time": 1585598060,
2429
"user_agent": "%s"
2530
}
26-
]
31+
]
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
[{"alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Py", "category": "debugging", "cursorpos": null, "entity": "testdata/main.py", "is_write": null, "language": "Python", "lineno": null, "lines": null, "project": "wakatime-cli", "type": "file", "timestamp": 1585598060 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059}]
1+
[{"alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Py", "category": "debugging", "cursorpos": null, "entity": "testdata/main.py", "is_write": null, "language": "Python", "lineno": null, "lines": null, "project": "wakatime-cli", "type": "file", "timestamp": 1585598060 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "category": "coding", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059 }, { "alternate_language": "Golang", "alternate_project": "billing", "cursorpos": 12, "entity": "testdata/main.go", "entity_type": "file", "is_write": true, "language": "Go", "lineno": 42, "lines": 45, "project": "wakatime-cli", "time": 1585598059}]

cmd/offline/offline.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ func buildHeartbeats(ctx context.Context, params params.Params) []heartbeat.Hear
8181

8282
heartbeats = append(heartbeats, heartbeat.New(
8383
params.Heartbeat.Project.BranchAlternate,
84-
params.Heartbeat.Category,
84+
&params.Heartbeat.Category,
8585
params.Heartbeat.CursorPosition,
8686
params.Heartbeat.Entity,
8787
params.Heartbeat.EntityType,
@@ -125,6 +125,7 @@ func initHandleOptions() []handler.Preprocessor {
125125
handler.WithFileStatsDetection(),
126126
handler.WithLanguageDetection(),
127127
handler.WithDependencyDetection(),
128+
handler.WithCategoryDetection(),
128129
handler.WithProjectDetection(),
129130
handler.WithProjectFiltering(),
130131
handler.WithHeartbeatSanitization(),

main_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1292,7 +1292,7 @@ func TestPrintOfflineHeartbeats(t *testing.T) {
12921292
heartbeat.UserAgent(ctx, ""),
12931293
)
12941294

1295-
assert.Equal(t, offlineHeartbeatStr+"\n", out)
1295+
assert.Equal(t, strings.TrimSpace(offlineHeartbeatStr), strings.TrimSpace(out))
12961296
}
12971297

12981298
func TestUserAgent(t *testing.T) {

pkg/api/heartbeat_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func TestClient_SendHeartbeats(t *testing.T) {
6767
Status: http.StatusCreated,
6868
Heartbeat: heartbeat.Heartbeat{
6969
Branch: heartbeat.PointerTo("heartbeat"),
70-
Category: heartbeat.CodingCategory,
70+
Category: heartbeat.CodingCategory.Pointer(),
7171
CursorPosition: heartbeat.PointerTo(12),
7272
Dependencies: []string{"dep1", "dep2"},
7373
Entity: "/tmp/main.go",
@@ -84,7 +84,7 @@ func TestClient_SendHeartbeats(t *testing.T) {
8484
{
8585
Status: http.StatusCreated,
8686
Heartbeat: heartbeat.Heartbeat{
87-
Category: heartbeat.DebuggingCategory,
87+
Category: heartbeat.DebuggingCategory.Pointer(),
8888
Entity: "HIDDEN.py",
8989
EntityType: heartbeat.FileType,
9090
Time: 1585598060,
@@ -271,7 +271,7 @@ func TestParseHeartbeatResponses(t *testing.T) {
271271
Status: http.StatusCreated,
272272
Heartbeat: heartbeat.Heartbeat{
273273
Branch: heartbeat.PointerTo("heartbeat"),
274-
Category: heartbeat.CodingCategory,
274+
Category: heartbeat.CodingCategory.Pointer(),
275275
CursorPosition: heartbeat.PointerTo(12),
276276
Dependencies: []string{"dep1", "dep2"},
277277
Entity: "/tmp/main.go",
@@ -289,7 +289,7 @@ func TestParseHeartbeatResponses(t *testing.T) {
289289
Status: http.StatusCreated,
290290
Heartbeat: heartbeat.Heartbeat{
291291
Branch: nil,
292-
Category: heartbeat.DebuggingCategory,
292+
Category: heartbeat.DebuggingCategory.Pointer(),
293293
CursorPosition: nil,
294294
Dependencies: nil,
295295
Entity: "HIDDEN.py",
@@ -352,7 +352,7 @@ func testHeartbeats() []heartbeat.Heartbeat {
352352
{
353353
APIKey: "00000000-0000-4000-8000-000000000000",
354354
Branch: heartbeat.PointerTo("heartbeat"),
355-
Category: heartbeat.CodingCategory,
355+
Category: heartbeat.CodingCategory.Pointer(),
356356
CursorPosition: heartbeat.PointerTo(12),
357357
Dependencies: []string{"dep1", "dep2"},
358358
Entity: "/tmp/main.go",
@@ -368,7 +368,7 @@ func testHeartbeats() []heartbeat.Heartbeat {
368368
{
369369
APIKey: "00000000-0000-4000-8000-000000000000",
370370
Branch: nil,
371-
Category: heartbeat.DebuggingCategory,
371+
Category: heartbeat.DebuggingCategory.Pointer(),
372372
CursorPosition: nil,
373373
Dependencies: nil,
374374
Entity: "HIDDEN.py",

pkg/filter/filter_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func TestWithFiltering(t *testing.T) {
3232
assert.Equal(t, []heartbeat.Heartbeat{
3333
{
3434
Branch: heartbeat.PointerTo("heartbeat"),
35-
Category: heartbeat.CodingCategory,
35+
Category: heartbeat.CodingCategory.Pointer(),
3636
CursorPosition: heartbeat.PointerTo(12),
3737
Dependencies: []string{"dep1", "dep2"},
3838
Entity: tmpFile.Name(),
@@ -204,7 +204,7 @@ func TestFilter_ErrNonExistingProjectFile(t *testing.T) {
204204
func testHeartbeat() heartbeat.Heartbeat {
205205
return heartbeat.Heartbeat{
206206
Branch: heartbeat.PointerTo("heartbeat"),
207-
Category: heartbeat.CodingCategory,
207+
Category: heartbeat.CodingCategory.Pointer(),
208208
CursorPosition: heartbeat.PointerTo(12),
209209
Dependencies: []string{"dep1", "dep2"},
210210
Entity: "/tmp/main.go",

0 commit comments

Comments
 (0)