tty-spinner 0.9.2 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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