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,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../lib/tty-spinner'
4
-
5
- def spinner_options
6
- [
7
- ":spinner \e[1mNo\e[0m :number Row :line",
8
- format: :dots,
9
- error_mark: '✖',
10
- success_mark: "\e[1m\e[32m✓\e[0m\e[0m"
11
- ]
12
- end
13
-
14
- spinners = TTY::Spinner::Multi.new(*spinner_options)
15
- threads = []
16
-
17
- 20.times do |i|
18
- threads << Thread.new do
19
- spinner = spinners.register(*spinner_options)
20
- sleep Random.rand(0.1..0.3)
21
-
22
- 10.times do
23
- sleep Random.rand(0.1..0.3)
24
- spinner.update(number: "(#{i})", line: spinner.row)
25
- spinner.spin
26
- end
27
- end
28
- end
29
-
30
- threads.each(&:join)
@@ -1,19 +0,0 @@
1
- require_relative '../lib/tty-spinner'
2
-
3
- spinner = TTY::Spinner.new("[:spinner] Task name")
4
-
5
- spinner.auto_spin
6
-
7
- sleep(2)
8
-
9
- spinner.pause
10
-
11
- sleep(2)
12
-
13
- spinner.resume
14
-
15
- sleep(2)
16
-
17
- spinner.stop
18
-
19
- puts
@@ -1,18 +0,0 @@
1
- require_relative '../lib/tty-spinner'
2
-
3
- # without block
4
- spinner = TTY::Spinner.new(":title :spinner ...", format: :pulse_3)
5
-
6
- def long_task
7
- 10000000.times do |n|
8
- n * n
9
- end
10
- end
11
-
12
- spinner.update(title: 'Task 1')
13
- spinner.run 'done' do
14
- long_task
15
- end
16
-
17
- spinner.update(title: 'Task 2')
18
- spinner.run('done') { long_task }
@@ -1,9 +0,0 @@
1
- require_relative '../lib/tty-spinner'
2
-
3
- spinner = TTY::Spinner.new("[:spinner] Task name")
4
- 20.times do
5
- spinner.spin
6
- sleep(0.1)
7
- end
8
-
9
- spinner.success('(successful)')
@@ -1,11 +0,0 @@
1
- require_relative '../lib/tty-spinner'
2
-
3
- spinner = TTY::Spinner.new("[:spinner]")
4
-
5
- th1 = Thread.new { 10.times { spinner.spin; sleep(0.1) } }
6
- th2 = Thread.new { 10.times { spinner.spin; sleep(0.1) } }
7
- th3 = Thread.new { 10.times { spinner.spin; sleep(0.1) } }
8
-
9
- [th1, th2, th3].each(&:join)
10
-
11
- spinner.success
@@ -1,11 +0,0 @@
1
- require_relative '../lib/tty-spinner'
2
-
3
- spinner = TTY::Spinner.new(":spinner :title", format: :pulse_3)
4
-
5
- spinner.update(title: 'task aaaaa')
6
-
7
- 20.times { spinner.spin; sleep(0.1) }
8
-
9
- spinner.update(title: 'task b')
10
-
11
- 20.times { spinner.spin; sleep(0.1) }
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- if ENV['COVERAGE'] || ENV['TRAVIS']
4
- require 'simplecov'
5
- require 'coveralls'
6
-
7
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
8
- SimpleCov::Formatter::HTMLFormatter,
9
- Coveralls::SimpleCov::Formatter
10
- ])
11
-
12
- SimpleCov.start do
13
- command_name 'spec'
14
- add_filter 'spec'
15
- end
16
- end
17
-
18
- require 'tty-spinner'
19
-
20
- class StringIO
21
- def tty?
22
- true
23
- end
24
- end
25
-
26
- RSpec.configure do |config|
27
- config.expect_with :rspec do |expectations|
28
- expectations.include_chain_clauses_in_custom_matcher_descriptions = true
29
- end
30
-
31
- config.mock_with :rspec do |mocks|
32
- mocks.verify_partial_doubles = true
33
- end
34
-
35
- # Limits the available syntax to the non-monkey patched syntax that is recommended.
36
- config.disable_monkey_patching!
37
-
38
- # This setting enables warnings. It's recommended, but in some cases may
39
- # be too noisy due to issues in dependencies.
40
- config.warnings = true
41
-
42
- if config.files_to_run.one?
43
- config.default_formatter = 'doc'
44
- end
45
-
46
- config.profile_examples = 2
47
-
48
- config.order = :random
49
-
50
- Kernel.srand config.seed
51
- end
@@ -1,27 +0,0 @@
1
- # coding: utf-8
2
-
3
- RSpec.describe TTY::Spinner, '#auto_spin' do
4
- let(:output) { StringIO.new('', 'w+') }
5
-
6
- it "starts and auto spins" do
7
- spinner = TTY::Spinner.new(output: output, interval: 100)
8
- allow(spinner).to receive(:spin)
9
-
10
- spinner.auto_spin
11
- sleep 0.1
12
- spinner.stop
13
-
14
- expect(spinner).to have_received(:spin).at_least(5).times
15
- end
16
-
17
- it "restores cursor when erorr is raised" do
18
- spinner = TTY::Spinner.new(output: output, hide_cursor: true)
19
-
20
- spinner.auto_spin {
21
- raise 'boom'
22
- }
23
-
24
- output.rewind
25
- expect(output.read).to start_with("\e[?25l").and end_with("\e[?25h")
26
- end
27
- end
@@ -1,18 +0,0 @@
1
- # encoding: utf-8
2
-
3
- RSpec.describe TTY::Spinner, ':clear' do
4
- let(:output) { StringIO.new('', 'w+') }
5
-
6
- it "clears output when done" do
7
- spinner = TTY::Spinner.new(clear: true, output: output)
8
- 3.times { spinner.spin }
9
- spinner.stop('Done!')
10
- output.rewind
11
- expect(output.read).to eq([
12
- "\e[1G|",
13
- "\e[1G/",
14
- "\e[1G-",
15
- "\e[0m\e[2K\e[1G"
16
- ].join)
17
- end
18
- end
@@ -1,46 +0,0 @@
1
- # coding: utf-8
2
-
3
- RSpec.describe TTY::Spinner, '#error' do
4
- let(:output) { StringIO.new('', 'w+') }
5
-
6
- it "marks spinner as error" do
7
- spinner = TTY::Spinner.new(output: output)
8
- 3.times { spinner.spin }
9
- spinner.error
10
- output.rewind
11
- expect(output.read).to eq([
12
- "\e[1G|",
13
- "\e[1G/",
14
- "\e[1G-",
15
- "\e[0m\e[2K",
16
- "\e[1G#{TTY::Spinner::CROSS}\n"
17
- ].join)
18
-
19
- expect(spinner.error?).to be(true)
20
- end
21
-
22
- it "marks spinner as error with message" do
23
- spinner = TTY::Spinner.new(output: output)
24
- 3.times { spinner.spin }
25
- spinner.error('Error')
26
- output.rewind
27
- expect(output.read).to eq([
28
- "\e[1G|",
29
- "\e[1G/",
30
- "\e[1G-",
31
- "\e[0m\e[2K",
32
- "\e[1G#{TTY::Spinner::CROSS} Error\n"
33
- ].join)
34
-
35
- expect(spinner.error?).to be(true)
36
- end
37
-
38
- it "changes error spinner marker" do
39
- spinner = TTY::Spinner.new(error_mark: 'x', output: output)
40
- spinner.error('(error)')
41
- output.rewind
42
- expect(output.read).to eq("\e[0m\e[2K\e[1Gx (error)\n")
43
-
44
- expect(spinner.error?).to be(true)
45
- end
46
- end
@@ -1,37 +0,0 @@
1
- # coding: utf-8
2
-
3
- RSpec.describe TTY::Spinner, 'events' do
4
- let(:output) { StringIO.new('', 'w+') }
5
-
6
- it "emits :done event" do
7
- events = []
8
- spinner = TTY::Spinner.new(output: output)
9
- spinner.on(:done) { events << :done }
10
-
11
- spinner.stop
12
-
13
- expect(events).to eq([:done])
14
- end
15
-
16
- it "emits :success event" do
17
- events = []
18
- spinner = TTY::Spinner.new(output: output)
19
- spinner.on(:done) { events << :done }
20
- spinner.on(:success) { events << :success }
21
-
22
- spinner.success
23
-
24
- expect(events).to match_array([:done, :success])
25
- end
26
-
27
- it "emits :error event" do
28
- events = []
29
- spinner = TTY::Spinner.new(output: output)
30
- spinner.on(:done) { events << :done }
31
- spinner.on(:error) { events << :error }
32
-
33
- spinner.error
34
-
35
- expect(events).to match_array([:done, :error])
36
- end
37
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe TTY::Formats::FORMATS do
4
- TTY::Formats::FORMATS.each do |token, properties|
5
- specify "#{token} contains proper defaults properties" do
6
- expect(properties.keys.sort).to eq(%i[frames interval])
7
- end
8
- end
9
- end
@@ -1,33 +0,0 @@
1
- # encoding: utf-8
2
-
3
- RSpec.describe TTY::Spinner, ':frames' do
4
- let(:output) { StringIO.new('', 'w+') }
5
-
6
- it "uses custom frames from string" do
7
- frames = ".o0@*"
8
- spinner = TTY::Spinner.new(frames: frames, output: output)
9
- 5.times { spinner.spin }
10
- output.rewind
11
- expect(output.read).to eq([
12
- "\e[1G.",
13
- "\e[1Go",
14
- "\e[1G0",
15
- "\e[1G@",
16
- "\e[1G*"
17
- ].join)
18
- end
19
-
20
- it "uses custom frames from array" do
21
- frames = [".", "o", "0", "@", "*"]
22
- spinner = TTY::Spinner.new(frames: frames, output: output)
23
- 5.times { spinner.spin }
24
- output.rewind
25
- expect(output.read).to eq([
26
- "\e[1G.",
27
- "\e[1Go",
28
- "\e[1G0",
29
- "\e[1G@",
30
- "\e[1G*"
31
- ].join)
32
- end
33
- end
@@ -1,53 +0,0 @@
1
- # coding: utf-8
2
-
3
- RSpec.describe TTY::Spinner, ':hide_cursor' do
4
- let(:output) { StringIO.new('', 'w+') }
5
-
6
- it "hides cursor" do
7
- spinner = TTY::Spinner.new(output: output, hide_cursor: true)
8
- 4.times { spinner.spin }
9
- spinner.stop
10
- output.rewind
11
- expect(output.read).to eq([
12
- "\e[?25l\e[1G|",
13
- "\e[1G/",
14
- "\e[1G-",
15
- "\e[1G\\",
16
- "\e[0m\e[2K",
17
- "\e[1G\\\n",
18
- "\e[?25h"
19
- ].join)
20
- end
21
-
22
- it "restores cursor on success" do
23
- spinner = TTY::Spinner.new(output: output, hide_cursor: true)
24
- 4.times { spinner.spin }
25
- spinner.success('success')
26
- output.rewind
27
- expect(output.read).to eq([
28
- "\e[?25l\e[1G|",
29
- "\e[1G/",
30
- "\e[1G-",
31
- "\e[1G\\",
32
- "\e[0m\e[2K",
33
- "\e[1G\u2714 success\n",
34
- "\e[?25h"
35
- ].join)
36
- end
37
-
38
- it "restores cursor on error" do
39
- spinner = TTY::Spinner.new(output: output, hide_cursor: true)
40
- 4.times { spinner.spin }
41
- spinner.error('error')
42
- output.rewind
43
- expect(output.read).to eq([
44
- "\e[?25l\e[1G|",
45
- "\e[1G/",
46
- "\e[1G-",
47
- "\e[1G\\",
48
- "\e[0m\e[2K",
49
- "\e[1G\u2716 error\n",
50
- "\e[?25h"
51
- ].join)
52
- end
53
- end
@@ -1,14 +0,0 @@
1
- # encoding: utf-8
2
-
3
- RSpec.describe TTY::Spinner, '#job' do
4
- it "adds and executes job" do
5
- spinner = TTY::Spinner.new("[:spinner] :title")
6
- called = []
7
- work = proc { |sp| called << sp }
8
- spinner.job(&work)
9
-
10
- spinner.execute_job
11
-
12
- expect(called).to eq([spinner])
13
- end
14
- end
@@ -1,12 +0,0 @@
1
- # coding: utf-8
2
-
3
- RSpec.describe TTY::Spinner, '#join' do
4
- let(:output) { StringIO.new('', 'w+') }
5
-
6
- it "raises exception when not spinning" do
7
- spinner = TTY::Spinner.new(output: output)
8
- expect {
9
- spinner.join
10
- }.to raise_error(TTY::Spinner::NotSpinningError)
11
- end
12
- end
@@ -1,34 +0,0 @@
1
- # encoding: utf-8
2
-
3
- RSpec.describe TTY::Spinner::Multi, '#auto_spin' do
4
- let(:output) { StringIO.new('', 'w+') }
5
-
6
- it "doesn't auto spin top level spinner" do
7
- spinners = TTY::Spinner::Multi.new("Top level spinner", output: output)
8
- allow(spinners.top_spinner).to receive(:auto_spin)
9
-
10
- spinners.auto_spin
11
-
12
- expect(spinners.top_spinner).to_not have_received(:auto_spin)
13
- end
14
-
15
- it "raises an exception when called without a top spinner" do
16
- spinners = TTY::Spinner::Multi.new(output: output)
17
-
18
- expect {
19
- spinners.auto_spin
20
- }.to raise_error(RuntimeError, /No top level spinner/)
21
- end
22
-
23
- it "auto spins top level & child spinners with jobs" do
24
- spinners = TTY::Spinner::Multi.new("top", output: output)
25
- jobs = []
26
-
27
- spinners.register("one") { |sp| jobs << 'one'; sp.success }
28
- spinners.register("two") { |sp| jobs << 'two'; sp.success }
29
-
30
- spinners.auto_spin
31
-
32
- expect(jobs).to match_array(['one', 'two'])
33
- end
34
- end