ソースを参照

profile: FilterSamplesByName returns the correct hnm (#190)

FilterSamplesByName should return true for hnm only when
"at least one sample" matched the show regexp.
Before this commit it always returned true
if the show regexp is not nil and p.Location is not empty.
Hyang-Ah Hana Kim 7 年 前
コミット
57b9500a74
共有2 個のファイルを変更した27 個の追加5 個の削除を含む
  1. 2
    1
      profile/filter.go
  2. 25
    4
      profile/profile_test.go

+ 2
- 1
profile/filter.go ファイルの表示

41
 			}
41
 			}
42
 		}
42
 		}
43
 		if show != nil {
43
 		if show != nil {
44
-			hnm = true
45
 			l.Line = l.matchedLines(show)
44
 			l.Line = l.matchedLines(show)
46
 			if len(l.Line) == 0 {
45
 			if len(l.Line) == 0 {
47
 				hidden[l.ID] = true
46
 				hidden[l.ID] = true
47
+			} else {
48
+				hnm = true
48
 			}
49
 			}
49
 		}
50
 		}
50
 	}
51
 	}

+ 25
- 4
profile/profile_test.go ファイルの表示

591
 	}
591
 	}
592
 
592
 
593
 	for tx, tc := range []filterTestcase{
593
 	for tx, tc := range []filterTestcase{
594
-		{nil, nil, nil, nil, true, false, false, false},
595
-		{regexp.MustCompile("notfound"), nil, nil, nil, false, false, false, false},
596
-		{nil, regexp.MustCompile("foo.c"), nil, nil, true, true, false, false},
597
-		{nil, nil, regexp.MustCompile("lib.so"), nil, true, false, true, false},
594
+		{
595
+			fm: true, // nil focus matches every sample
596
+		},
597
+		{
598
+			focus: regexp.MustCompile("notfound"),
599
+		},
600
+		{
601
+			ignore: regexp.MustCompile("foo.c"),
602
+			fm:     true,
603
+			im:     true,
604
+		},
605
+		{
606
+			hide: regexp.MustCompile("lib.so"),
607
+			fm:   true,
608
+			hm:   true,
609
+		},
610
+		{
611
+			show: regexp.MustCompile("foo.c"),
612
+			fm:   true,
613
+			hnm:  true,
614
+		},
615
+		{
616
+			show: regexp.MustCompile("notfound"),
617
+			fm:   true,
618
+		},
598
 	} {
619
 	} {
599
 		prof := *testProfile1.Copy()
620
 		prof := *testProfile1.Copy()
600
 		gf, gi, gh, gnh := prof.FilterSamplesByName(tc.focus, tc.ignore, tc.hide, tc.show)
621
 		gf, gi, gh, gnh := prof.FilterSamplesByName(tc.focus, tc.ignore, tc.hide, tc.show)