Просмотр исходного кода

Merge pull request #7274 from vbatts/vbatts-gh7136

progress bar: don't strings.Repeat a negative number
Victor Vieux 11 лет назад
Родитель
Сommit
a0dad3dfb2
2 измененных файлов с 19 добавлено и 5 удалено
  1. 6 1
      utils/jsonmessage.go
  2. 13 4
      utils/jsonmessage_test.go

+ 6 - 1
utils/jsonmessage.go

@@ -50,7 +50,12 @@ func (p *JSONProgress) String() string {
 	total := units.HumanSize(int64(p.Total))
 	percentage := int(float64(p.Current)/float64(p.Total)*100) / 2
 	if width > 110 {
-		pbBox = fmt.Sprintf("[%s>%s] ", strings.Repeat("=", percentage), strings.Repeat(" ", 50-percentage))
+		// this number can't be negetive gh#7136
+		numSpaces := 0
+		if 50-percentage > 0 {
+			numSpaces = 50 - percentage
+		}
+		pbBox = fmt.Sprintf("[%s>%s] ", strings.Repeat("=", percentage), strings.Repeat(" ", numSpaces))
 	}
 	numbersBox = fmt.Sprintf("%8v/%v", current, total)
 

+ 13 - 4
utils/jsonmessage_test.go

@@ -17,13 +17,22 @@ func TestProgress(t *testing.T) {
 		t.Fatalf("Expected empty string, got '%s'", jp.String())
 	}
 
+	expected := "     1 B"
 	jp2 := JSONProgress{Current: 1}
-	if jp2.String() != "     1 B" {
-		t.Fatalf("Expected '     1 B', got '%s'", jp2.String())
+	if jp2.String() != expected {
+		t.Fatalf("Expected %q, got %q", expected, jp2.String())
 	}
 
+	expected = "[=========================>                         ]     50 B/100 B"
 	jp3 := JSONProgress{Current: 50, Total: 100}
-	if jp3.String() != "[=========================>                         ]     50 B/100 B" {
-		t.Fatalf("Expected '[=========================>                         ]     50 B/100 B', got '%s'", jp3.String())
+	if jp3.String() != expected {
+		t.Fatalf("Expected %q, got %q", expected, jp3.String())
+	}
+
+	// this number can't be negetive gh#7136
+	expected = "[==============================================================>]     50 B/40 B"
+	jp4 := JSONProgress{Current: 50, Total: 40}
+	if jp4.String() != expected {
+		t.Fatalf("Expected %q, got %q", expected, jp4.String())
 	}
 }