1
0

progress_test.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package console
  2. import (
  3. "fmt"
  4. "testing"
  5. "gotest.tools/v3/assert"
  6. )
  7. func TestProgressWriter(t *testing.T) {
  8. c := &bufferConsole{}
  9. p := progress{
  10. console: c,
  11. }
  12. p.ResourceEvent("resource1", "CREATE_IN_PROGRESS", "")
  13. assert.Equal(t, c.lines[0], "resource1 ... CREATE_IN_PROGRESS ")
  14. p.ResourceEvent("resource2_long_name", "CREATE_IN_PROGRESS", "ok")
  15. assert.Equal(t, c.lines[0], "resource1 ... CREATE_IN_PROGRESS ")
  16. assert.Equal(t, c.lines[1], "resource2_long_name ... CREATE_IN_PROGRESS ok")
  17. p.ResourceEvent("resource2_long_name", "CREATE_COMPLETE", "done")
  18. assert.Equal(t, c.lines[0], "resource1 ... CREATE_IN_PROGRESS ")
  19. assert.Equal(t, c.lines[1], "resource2_long_name ... CREATE_COMPLETE done")
  20. p.ResourceEvent("resource1", "CREATE_FAILED", "oups")
  21. assert.Equal(t, c.lines[0], "resource1 ... CREATE_FAILED oups")
  22. assert.Equal(t, c.lines[1], "resource2_long_name ... CREATE_COMPLETE done")
  23. }
  24. type bufferConsole struct {
  25. pos int
  26. lines []string
  27. }
  28. func (b *bufferConsole) Printf(format string, a ...interface{}) {
  29. b.lines[b.pos] = fmt.Sprintf(format, a...)
  30. }
  31. func (b *bufferConsole) MoveUp(i int) {
  32. b.pos -= i
  33. }
  34. func (b *bufferConsole) MoveDown(i int) {
  35. b.pos += i
  36. }
  37. func (b *bufferConsole) ClearLine() {
  38. if len(b.lines) <= b.pos {
  39. b.lines = append(b.lines, "")
  40. }
  41. b.lines[b.pos] = ""
  42. }
  43. func (b *bufferConsole) OK(s string) string {
  44. return s
  45. }
  46. func (b *bufferConsole) KO(s string) string {
  47. return s
  48. }
  49. func (b *bufferConsole) WiP(s string) string {
  50. return s
  51. }