tty-spinner 0.9.2 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -3
  3. data/lib/tty/spinner/version.rb +1 -1
  4. metadata +16 -102
  5. data/Rakefile +0 -8
  6. data/examples/auto_spin.rb +0 -8
  7. data/examples/basic.rb +0 -8
  8. data/examples/clear.rb +0 -9
  9. data/examples/color.rb +0 -12
  10. data/examples/error.rb +0 -9
  11. data/examples/formats.rb +0 -11
  12. data/examples/hide_cursor.rb +0 -12
  13. data/examples/multi/basic.rb +0 -13
  14. data/examples/multi/basic_top_level.rb +0 -13
  15. data/examples/multi/custom_style.rb +0 -26
  16. data/examples/multi/files.rb +0 -14
  17. data/examples/multi/jobs.rb +0 -10
  18. data/examples/multi/multi.rb +0 -17
  19. data/examples/multi/multi_top_level.rb +0 -18
  20. data/examples/multi/pause.rb +0 -26
  21. data/examples/multi/threaded.rb +0 -30
  22. data/examples/pause.rb +0 -19
  23. data/examples/run.rb +0 -18
  24. data/examples/success.rb +0 -9
  25. data/examples/threaded.rb +0 -11
  26. data/examples/update.rb +0 -11
  27. data/spec/spec_helper.rb +0 -51
  28. data/spec/unit/auto_spin_spec.rb +0 -27
  29. data/spec/unit/clear_spec.rb +0 -18
  30. data/spec/unit/error_spec.rb +0 -46
  31. data/spec/unit/events_spec.rb +0 -37
  32. data/spec/unit/formats_spec.rb +0 -9
  33. data/spec/unit/frames_spec.rb +0 -33
  34. data/spec/unit/hide_cursor_spec.rb +0 -53
  35. data/spec/unit/job_spec.rb +0 -14
  36. data/spec/unit/join_spec.rb +0 -12
  37. data/spec/unit/multi/auto_spin_spec.rb +0 -34
  38. data/spec/unit/multi/error_spec.rb +0 -109
  39. data/spec/unit/multi/line_inset_spec.rb +0 -59
  40. data/spec/unit/multi/on_spec.rb +0 -13
  41. data/spec/unit/multi/register_spec.rb +0 -47
  42. data/spec/unit/multi/spin_spec.rb +0 -103
  43. data/spec/unit/multi/stop_spec.rb +0 -97
  44. data/spec/unit/multi/success_spec.rb +0 -110
  45. data/spec/unit/new_spec.rb +0 -26
  46. data/spec/unit/pause_spec.rb +0 -25
  47. data/spec/unit/reset_spec.rb +0 -21
  48. data/spec/unit/run_spec.rb +0 -32
  49. data/spec/unit/spin_spec.rb +0 -119
  50. data/spec/unit/stop_spec.rb +0 -64
  51. data/spec/unit/success_spec.rb +0 -46
  52. data/spec/unit/update_spec.rb +0 -87
  53. data/tasks/console.rake +0 -11
  54. data/tasks/coverage.rake +0 -11
  55. data/tasks/spec.rake +0 -29
  56. data/tty-spinner.gemspec +0 -27
@@ -1,109 +0,0 @@
1
- # encoding: utf-8
2
-
3
- RSpec.describe TTY::Spinner::Multi, '#error' do
4
- let(:output) { StringIO.new('', 'w+') }
5
-
6
- it 'stops registerd multi spinner and emits an :error message' do
7
- spinners = TTY::Spinner::Multi.new(":spinner", output: output)
8
- callbacks = []
9
- sp1 = spinners.register "[:spinner] one"
10
- sp2 = spinners.register "[:spinner] two"
11
-
12
- expect(sp1.error?).to eq(false)
13
- expect(sp2.error?).to eq(false)
14
-
15
- spinners.on(:error) { callbacks << :error }
16
- .on(:done) { callbacks << :done }
17
- .on(:success) { callbacks << :success }
18
-
19
- spinners.error
20
-
21
- expect(sp1.error?).to eq(true)
22
- expect(sp2.error?).to eq(true)
23
- expect(callbacks).to match_array([:done, :error])
24
- end
25
-
26
- it 'stops unregistered top level spinner and emits an :error message' do
27
- spinners = TTY::Spinner::Multi.new(output: output)
28
- callbacks = []
29
- sp1 = spinners.register "[:spinner] one"
30
- sp2 = spinners.register "[:spinner] two"
31
-
32
- expect(sp1.error?).to eq(false)
33
- expect(sp2.error?).to eq(false)
34
-
35
- spinners.on(:error) { callbacks << :error }
36
- .on(:done) { callbacks << :done }
37
- .on(:success) { callbacks << :success }
38
-
39
- spinners.error
40
-
41
- expect(sp1.error?).to eq(true)
42
- expect(sp2.error?).to eq(true)
43
- expect(callbacks).to match_array([:done, :error])
44
- end
45
-
46
- it 'stops registed spinners under top level and emits an error message' do
47
- spinners = TTY::Spinner::Multi.new(":spinner", output: output)
48
- callbacks = []
49
- sp1 = spinners.register "[:spinner] one"
50
- sp2 = spinners.register "[:spinner] two"
51
-
52
- expect(sp1.error?).to eq(false)
53
- expect(sp2.error?).to eq(false)
54
-
55
- spinners.on(:error) { callbacks << :error }
56
- .on(:done) { callbacks << :done }
57
- .on(:success) { callbacks << :success }
58
-
59
- sp1.error
60
- sp2.error
61
-
62
- expect(spinners.error?).to eq(true)
63
- expect(callbacks).to match_array([:done, :error])
64
- end
65
-
66
- it 'stops registed spinners under top level and emits an error message' do
67
- spinners = TTY::Spinner::Multi.new(output: output)
68
- callbacks = []
69
- sp1 = spinners.register "[:spinner] one"
70
- sp2 = spinners.register "[:spinner] two"
71
-
72
- expect(sp1.error?).to eq(false)
73
- expect(sp2.error?).to eq(false)
74
-
75
- spinners.on(:error) { callbacks << :error }
76
- .on(:done) { callbacks << :done }
77
- .on(:success) { callbacks << :success }
78
-
79
- sp1.error
80
- sp2.error
81
-
82
- expect(spinners.error?).to eq(true)
83
- expect(callbacks).to match_array([:done, :error])
84
- end
85
-
86
- it 'returns true when any spinner failed' do
87
- spinners = TTY::Spinner::Multi.new(output: output)
88
- sp1 = spinners.register("one")
89
- sp2 = spinners.register("two")
90
-
91
- sp1.success
92
- sp2.error
93
-
94
- expect(spinners.error?).to eq(true)
95
- end
96
-
97
- it "updates top spinner error state based on child spinners jobs failure" do
98
- spinners = TTY::Spinner::Multi.new("top", output: output)
99
-
100
- spinners.register("one") { |sp| sp.success }
101
- spinners.register("two") { |sp| sp.error }
102
-
103
- expect(spinners.error?).to eq(false)
104
-
105
- spinners.auto_spin
106
-
107
- expect(spinners.error?).to eq(true)
108
- end
109
- end
@@ -1,59 +0,0 @@
1
- # encoding: utf-8
2
-
3
- RSpec.describe TTY::Spinner::Multi, '#line_inset' do
4
- let(:output) { StringIO.new('', 'w+') }
5
-
6
- it "doesn't create inset when no top level spinner" do
7
- spinners = TTY::Spinner::Multi.new(output: output)
8
-
9
- spinner = spinners.register 'example'
10
-
11
- expect(spinners.line_inset(spinner)).to eq('')
12
- end
13
-
14
- it "defaults to the empty string for the top level spinner" do
15
- spinners = TTY::Spinner::Multi.new("Top level spinner", output: output)
16
-
17
- expect(spinners.line_inset(1))
18
- .to eq(TTY::Spinner::Multi::DEFAULT_INSET[:top])
19
- end
20
-
21
- it "returns four spaces when there is a top level spinner" do
22
- spinners = TTY::Spinner::Multi.new("Top level spinner", output: output)
23
-
24
- spinners.register 'middle'
25
- spinners.register 'bottom'
26
-
27
- expect(spinners.line_inset(2))
28
- .to eq(TTY::Spinner::Multi::DEFAULT_INSET[:middle])
29
- end
30
-
31
- it "decorates last spinner" do
32
- spinners = TTY::Spinner::Multi.new("Top spinner", output: output)
33
-
34
- spinners.register 'middle'
35
- spinners.register 'bottom'
36
-
37
- expect(spinners.line_inset(3))
38
- .to eq(TTY::Spinner::Multi::DEFAULT_INSET[:bottom])
39
- end
40
-
41
- it "allows customization" do
42
- opts = {
43
- output: output,
44
- indent: 4,
45
- style: {
46
- top: ". ",
47
- middle: "--",
48
- bottom: "---",
49
- }
50
- }
51
- spinners = TTY::Spinner::Multi.new("Top level spinner", opts)
52
- spinners.register ""
53
- spinners.register ""
54
-
55
- expect(spinners.line_inset(1)).to eq(". ")
56
- expect(spinners.line_inset(2)).to eq("--")
57
- expect(spinners.line_inset(3)).to eq("---")
58
- end
59
- end
@@ -1,13 +0,0 @@
1
- # encoding: utf-8
2
-
3
- RSpec.describe TTY::Spinner::Multi, '#on' do
4
- let(:output) { StringIO.new('', 'w+') }
5
-
6
- it 'fails to register a callback with invalid event name' do
7
- spinners = TTY::Spinner::Multi.new(output: output)
8
-
9
- expect {
10
- spinners.on(:unknown_event) { }
11
- }.to raise_error(ArgumentError, /The event unknown_event does not exist/)
12
- end
13
- end
@@ -1,47 +0,0 @@
1
- # coding: utf-8
2
-
3
- RSpec.describe TTY::Spinner::Multi, '#register' do
4
- let(:output) { StringIO.new('', 'w+') }
5
-
6
- it "registers a TTY::Spinner instance from a pattern" do
7
- spinners = TTY::Spinner::Multi.new(output: output, interval: 100)
8
- allow_any_instance_of(TTY::Spinner).to receive(:attach_to)
9
- expect_any_instance_of(TTY::Spinner).to receive(:attach_to)
10
-
11
- spinner = spinners.register ""
12
-
13
- expect(spinner).to be_instance_of(TTY::Spinner)
14
- expect(spinners.length).to eq(1)
15
- end
16
-
17
- it "registers a TTY::Spinner instance from a spinner instance" do
18
- spinners = TTY::Spinner::Multi.new(output: output, interval: 100)
19
- spinner_to_register = ::TTY::Spinner.new
20
-
21
- spinner = spinners.register spinner_to_register
22
-
23
- expect(spinner).to eq(spinner_to_register)
24
- expect(spinners.length).to eq(1)
25
- end
26
-
27
- it "raises an erro when given neither a string or spinner instance" do
28
- spinners = TTY::Spinner::Multi.new(output: output, interval: 100)
29
-
30
- expect { spinners.register [] }.
31
- to raise_error(
32
- ArgumentError,
33
- "Expected a pattern or spinner, got: Array"
34
- )
35
- end
36
-
37
- it "uses global options to register instance" do
38
- spinners = TTY::Spinner::Multi.new(output: output, interval: 100)
39
- spinner = double(:spinner, attach_to: nil)
40
- allow(spinner).to receive(:on).and_return(spinner)
41
- allow(TTY::Spinner).to receive(:new).and_return(spinner)
42
-
43
- spinners.register "[:spinner]"
44
-
45
- expect(TTY::Spinner).to have_received(:new).with("[:spinner]", {interval: 100, output: output})
46
- end
47
- end
@@ -1,103 +0,0 @@
1
- # encoding: utf-8
2
-
3
- RSpec.describe TTY::Spinner::Multi, '#spin' do
4
- let(:output) { StringIO.new('', 'w+') }
5
- let(:save) { TTY::Cursor.save }
6
- let(:restore) { TTY::Cursor.restore }
7
- let(:top) { TTY::Spinner::Multi::DEFAULT_INSET[:top] }
8
- let(:middle) { TTY::Spinner::Multi::DEFAULT_INSET[:middle] }
9
- let(:bottom) { TTY::Spinner::Multi::DEFAULT_INSET[:bottom] }
10
-
11
- it "spins spinners correctly under multi spinner" do
12
- spinners = TTY::Spinner::Multi.new(output: output)
13
-
14
- spinner1 = spinners.register(":spinner one")
15
- spinner2 = spinners.register(":spinner two")
16
-
17
- spinner2.spin
18
- spinner1.spin
19
-
20
- output.rewind
21
- expect(output.read).to eq([
22
- "\e[1G| two\n",
23
- "\e[1G| one\n"
24
- ].join)
25
-
26
- spinner1.spin
27
-
28
- output.rewind
29
- expect(output.read).to eq([
30
- "\e[1G| two\n",
31
- "\e[1G| one\n",
32
- save,
33
- "\e[1A", # up 1 line
34
- "\e[1G/ one",
35
- restore
36
- ].join)
37
-
38
- spinner2.spin
39
-
40
- output.rewind
41
- expect(output.read).to eq([
42
- "\e[1G| two\n",
43
- "\e[1G| one\n",
44
- save,
45
- "\e[1A", # up 1 line
46
- "\e[1G/ one",
47
- restore,
48
- save,
49
- "\e[2A", # up 2 lines
50
- "\e[1G/ two",
51
- restore
52
- ].join)
53
- end
54
-
55
- it "spins registerd spinners correctly under top level multi spinner" do
56
- spinners = TTY::Spinner::Multi.new(":spinner top", output: output)
57
-
58
- spinner1 = spinners.register(":spinner one")
59
- spinner2 = spinners.register(":spinner two")
60
-
61
- spinners.spin
62
-
63
- spinner2.spin
64
- spinner1.spin
65
-
66
- output.rewind
67
- expect(output.read).to eq([
68
- "\e[1G#{top}| top\n",
69
- "\e[1G#{middle}| two\n",
70
- "\e[1G#{bottom}| one\n"
71
- ].join)
72
-
73
- spinner1.spin
74
-
75
- output.rewind
76
- expect(output.read).to eq([
77
- "\e[1G#{top}| top\n",
78
- "\e[1G#{middle}| two\n",
79
- "\e[1G#{bottom}| one\n",
80
- save,
81
- "\e[1A", # up 1 line
82
- "\e[1G#{bottom}/ one",
83
- restore
84
- ].join)
85
-
86
- spinner2.spin
87
-
88
- output.rewind
89
- expect(output.read).to eq([
90
- "\e[1G#{top}| top\n",
91
- "\e[1G#{middle}| two\n",
92
- "\e[1G#{bottom}| one\n",
93
- save,
94
- "\e[1A", # up 1 line
95
- "\e[1G#{bottom}/ one",
96
- restore,
97
- save,
98
- "\e[2A", # up 2 lines
99
- "\e[1G#{middle}/ two",
100
- restore
101
- ].join)
102
- end
103
- end
@@ -1,97 +0,0 @@
1
- # encoding: utf-8
2
-
3
- RSpec.describe TTY::Spinner::Multi, '#stop' do
4
- let(:output) { StringIO.new('', 'w+') }
5
-
6
- it 'stops unregisterd multi spinner and emits a :done message' do
7
- spinners = TTY::Spinner::Multi.new(output: output)
8
- callbacks = []
9
- sp1 = spinners.register "[:spinner] one"
10
- sp2 = spinners.register "[:spinner] two"
11
-
12
- expect(sp1.done?).to eq(false)
13
- expect(sp2.done?).to eq(false)
14
-
15
- spinners.on(:error) { callbacks << :error }
16
- .on(:done) { callbacks << :done }
17
- .on(:success) { callbacks << :success }
18
-
19
- spinners.stop
20
-
21
- expect(sp1.done?).to eq(true)
22
- expect(sp2.done?).to eq(true)
23
- expect(callbacks).to eq([:done])
24
- end
25
-
26
- it 'stops registerd multi spinner and emits a :done message' do
27
- spinners = TTY::Spinner::Multi.new(":spinner", output: output)
28
- callbacks = []
29
- sp1 = spinners.register "[:spinner] one"
30
- sp2 = spinners.register "[:spinner] two"
31
-
32
- expect(sp1.done?).to eq(false)
33
- expect(sp2.done?).to eq(false)
34
-
35
- spinners.on(:error) { callbacks << :error }
36
- .on(:done) { callbacks << :done }
37
- .on(:success) { callbacks << :success }
38
-
39
- spinners.stop
40
-
41
- expect(sp1.done?).to eq(true)
42
- expect(sp2.done?).to eq(true)
43
- expect(callbacks).to eq([:done])
44
- end
45
-
46
- it 'stops all registered spinners and emits a :done message' do
47
- spinners = TTY::Spinner::Multi.new(output: output)
48
- callbacks = []
49
- sp1 = spinners.register "[:spinner] one"
50
- sp2 = spinners.register "[:spinner] two"
51
-
52
- expect(sp1.done?).to eq(false)
53
- expect(sp2.done?).to eq(false)
54
-
55
- spinners.on(:error) { callbacks << :error }
56
- .on(:done) { callbacks << :done }
57
- .on(:success) { callbacks << :success }
58
-
59
- sp1.stop
60
- sp2.stop
61
-
62
- expect(spinners.done?).to eq(true)
63
- expect(callbacks).to eq([:done])
64
- end
65
-
66
- it 'stops all registered spinners under multispinner and emits a :done message' do
67
- spinners = TTY::Spinner::Multi.new(":spinner", output: output)
68
- callbacks = []
69
- sp1 = spinners.register "[:spinner] one"
70
- sp2 = spinners.register "[:spinner] two"
71
-
72
- expect(sp1.done?).to eq(false)
73
- expect(sp2.done?).to eq(false)
74
-
75
- spinners.on(:error) { callbacks << :error }
76
- .on(:done) { callbacks << :done }
77
- .on(:success) { callbacks << :success }
78
-
79
- sp1.stop
80
- sp2.stop
81
-
82
- expect(spinners.done?).to eq(true)
83
- expect(callbacks).to eq([:done])
84
- end
85
-
86
- it 'returns true when spinner is done' do
87
- spinners = TTY::Spinner::Multi.new(output: output)
88
-
89
- sp1 = spinners.register "[:spinner] one"
90
- sp2 = spinners.register "[:spinner] two"
91
-
92
- sp1.stop
93
- sp2.error
94
-
95
- expect(spinners.done?).to eq(true)
96
- end
97
- end
@@ -1,110 +0,0 @@
1
- # encoding: utf-8
2
-
3
- RSpec.describe TTY::Spinner::Multi, '#success' do
4
- let(:output) { StringIO.new('', 'w+') }
5
-
6
- it 'stops registerd multi spinner and emits a :success message' do
7
- spinners = TTY::Spinner::Multi.new(":spinner", output: output)
8
- callbacks = []
9
- sp1 = spinners.register "[:spinner] one"
10
- sp2 = spinners.register "[:spinner] two"
11
-
12
- expect(sp1.success?).to eq(false)
13
- expect(sp2.success?).to eq(false)
14
-
15
- spinners.on(:error) { callbacks << :error }
16
- .on(:done) { callbacks << :done }
17
- .on(:success) { callbacks << :success }
18
-
19
- spinners.success
20
-
21
- expect(sp1.success?).to eq(true)
22
- expect(sp2.success?).to eq(true)
23
- expect(callbacks).to match_array([:success, :done])
24
- end
25
-
26
- it 'stops unregistered multi spinner and emits a :success message' do
27
- spinners = TTY::Spinner::Multi.new(output: output)
28
- callbacks = []
29
- sp1 = spinners.register "[:spinner] one"
30
- sp2 = spinners.register "[:spinner] two"
31
-
32
- expect(sp1.success?).to eq(false)
33
- expect(sp2.success?).to eq(false)
34
-
35
- spinners.on(:error) { callbacks << :error }
36
- .on(:done) { callbacks << :done }
37
- .on(:success) { callbacks << :success }
38
-
39
- spinners.success
40
-
41
- expect(sp1.success?).to eq(true)
42
- expect(sp2.success?).to eq(true)
43
- expect(callbacks).to match_array([:success, :done])
44
- end
45
-
46
- it "stops all registered spinners under top level and emits a :success message" do
47
- spinners = TTY::Spinner::Multi.new(":spinner", output: output)
48
- callbacks = []
49
- sp1 = spinners.register "[:spinner] one"
50
- sp2 = spinners.register "[:spinner] two"
51
-
52
- expect(sp1.success?).to eq(false)
53
- expect(sp2.success?).to eq(false)
54
-
55
- spinners.on(:error) { callbacks << :error }
56
- .on(:done) { callbacks << :done }
57
- .on(:success) { callbacks << :success }
58
-
59
- sp1.success
60
- sp2.success
61
-
62
- expect(spinners.success?).to eq(true)
63
- expect(callbacks).to match_array([:success, :done])
64
- end
65
-
66
- it "stops all registered spinners and emits a success message" do
67
- spinners = TTY::Spinner::Multi.new(output: output)
68
- callbacks = []
69
- sp1 = spinners.register "[:spinner] one"
70
- sp2 = spinners.register "[:spinner] two"
71
-
72
- expect(sp1.success?).to eq(false)
73
- expect(sp2.success?).to eq(false)
74
-
75
- spinners.on(:error) { callbacks << :error }
76
- .on(:done) { callbacks << :done }
77
- .on(:success) { callbacks << :success }
78
-
79
- sp1.success
80
- sp2.success
81
-
82
- expect(spinners.success?).to eq(true)
83
- expect(callbacks).to match_array([:success, :done])
84
- end
85
-
86
- it 'returns false when a spinner has errored' do
87
- spinners = TTY::Spinner::Multi.new(output: output)
88
-
89
- sp1 = spinners.register("")
90
- sp2 = spinners.register("")
91
-
92
- sp1.success
93
- sp2.error
94
-
95
- expect(spinners.success?).to eq(false)
96
- end
97
-
98
- it "updates top spinner success state based on child spinners jobs status" do
99
- spinners = TTY::Spinner::Multi.new("top", output: output)
100
-
101
- spinners.register("one") { |sp| sp.success }
102
- spinners.register("two") { |sp| sp.success }
103
-
104
- expect(spinners.success?).to eq(false)
105
-
106
- spinners.auto_spin
107
-
108
- expect(spinners.success?).to eq(true)
109
- end
110
- end