Merge pull request #7274 from vbatts/vbatts-gh7136

progress bar: don't strings.Repeat a negative number
This commit is contained in:
Victor Vieux 2014-07-28 11:50:16 -07:00
commit a0dad3dfb2
2 changed files with 19 additions and 5 deletions

View File

@ -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)

View File

@ -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())
}
}