tty-command 0.9.0 → 0.10.0

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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/LICENSE.txt +1 -1
  4. data/README.md +44 -44
  5. data/lib/tty-command.rb +1 -1
  6. data/lib/tty/command.rb +18 -18
  7. data/lib/tty/command/child_process.rb +9 -9
  8. data/lib/tty/command/cmd.rb +11 -11
  9. data/lib/tty/command/dry_runner.rb +3 -3
  10. data/lib/tty/command/exit_error.rb +1 -1
  11. data/lib/tty/command/printers/abstract.rb +8 -10
  12. data/lib/tty/command/printers/null.rb +1 -4
  13. data/lib/tty/command/printers/pretty.rb +10 -15
  14. data/lib/tty/command/printers/progress.rb +3 -8
  15. data/lib/tty/command/printers/quiet.rb +3 -7
  16. data/lib/tty/command/process_runner.rb +25 -17
  17. data/lib/tty/command/truncator.rb +3 -3
  18. data/lib/tty/command/version.rb +1 -1
  19. metadata +20 -68
  20. data/Rakefile +0 -10
  21. data/bin/console +0 -6
  22. data/bin/setup +0 -6
  23. data/examples/bash.rb +0 -12
  24. data/examples/basic.rb +0 -9
  25. data/examples/buffer.rb +0 -4
  26. data/examples/env.rb +0 -9
  27. data/examples/logger.rb +0 -10
  28. data/examples/output.rb +0 -10
  29. data/examples/pty.rb +0 -9
  30. data/examples/redirect_stderr.rb +0 -10
  31. data/examples/redirect_stdin.rb +0 -15
  32. data/examples/redirect_stdout.rb +0 -10
  33. data/examples/stdin_input.rb +0 -10
  34. data/examples/threaded.rb +0 -14
  35. data/examples/timeout.rb +0 -11
  36. data/examples/timeout_input.rb +0 -12
  37. data/examples/wait.rb +0 -21
  38. data/spec/spec_helper.rb +0 -78
  39. data/spec/unit/binmode_spec.rb +0 -29
  40. data/spec/unit/cmd_spec.rb +0 -152
  41. data/spec/unit/dry_run_spec.rb +0 -42
  42. data/spec/unit/exit_error_spec.rb +0 -25
  43. data/spec/unit/input_spec.rb +0 -13
  44. data/spec/unit/output_spec.rb +0 -25
  45. data/spec/unit/printer_spec.rb +0 -50
  46. data/spec/unit/printers/custom_spec.rb +0 -48
  47. data/spec/unit/printers/null_spec.rb +0 -36
  48. data/spec/unit/printers/pretty_spec.rb +0 -172
  49. data/spec/unit/printers/progress_spec.rb +0 -45
  50. data/spec/unit/printers/quiet_spec.rb +0 -71
  51. data/spec/unit/pty_spec.rb +0 -62
  52. data/spec/unit/redirect_spec.rb +0 -103
  53. data/spec/unit/result_spec.rb +0 -64
  54. data/spec/unit/ruby_spec.rb +0 -20
  55. data/spec/unit/run_spec.rb +0 -159
  56. data/spec/unit/test_spec.rb +0 -11
  57. data/spec/unit/timeout_spec.rb +0 -36
  58. data/spec/unit/truncator_spec.rb +0 -73
  59. data/tasks/console.rake +0 -11
  60. data/tasks/coverage.rake +0 -11
  61. data/tasks/spec.rake +0 -29
  62. data/tty-command.gemspec +0 -30
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe TTY::Command, '#test' do
4
- it "implements classic bash command" do
5
- cmd = TTY::Command.new
6
- result = double(:success? => true)
7
- allow(cmd).to receive(:run!).with(:test, '-e /etc/passwd').and_return(result)
8
- expect(cmd.test("-e /etc/passwd")).to eq(true)
9
- expect(cmd).to have_received(:run!)
10
- end
11
- end
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe TTY::Command, '#run' do
4
- it "times out infinite process without input or output" do
5
- infinite = fixtures_path('infinite_no_output')
6
- output = StringIO.new
7
- cmd = TTY::Command.new(output: output)
8
-
9
- expect {
10
- cmd.run("ruby #{infinite}", timeout: 0.1)
11
- }.to raise_error(TTY::Command::TimeoutExceeded)
12
- end
13
-
14
- it "times out an infite process with constant output" do
15
- infinite = fixtures_path('infinite_output')
16
- output = StringIO.new
17
- cmd = TTY::Command.new(output: output, timeout: 0.1)
18
-
19
- expect {
20
- cmd.run("ruby #{infinite}")
21
- }.to raise_error(TTY::Command::TimeoutExceeded)
22
- end
23
-
24
- it "times out an infinite process with constant input data" do
25
- cli = fixtures_path('infinite_input')
26
- output = StringIO.new
27
- cmd = TTY::Command.new(output: output)
28
-
29
- range = 1..Float::INFINITY
30
- infinite_input = range.lazy.map { |x| "hello" }.first(100).join("\n")
31
-
32
- expect {
33
- cmd.run("ruby #{cli}", input: infinite_input, timeout: 0.1)
34
- }.to raise_error(TTY::Command::TimeoutExceeded)
35
- end
36
- end
@@ -1,73 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe TTY::Command::Truncator do
4
- it "writes nil content" do
5
- truncator = described_class.new(max_size: 2)
6
-
7
- truncator.write(nil)
8
-
9
- expect(truncator.read).to eq('')
10
- end
11
-
12
- it "writes content within maximum size" do
13
- truncator = described_class.new(max_size: 2)
14
-
15
- truncator.write("a")
16
-
17
- expect(truncator.read).to eq("a")
18
- end
19
-
20
- it "writes both prefix and suffix" do
21
- truncator = described_class.new(max_size: 2)
22
-
23
- truncator.write("abc")
24
- truncator.write("d")
25
-
26
- expect(truncator.read).to eq("abcd")
27
- end
28
-
29
- it "writes more bytes letter" do
30
- truncator = described_class.new(max_size: 1000)
31
- multibytes_string = "’test’"
32
-
33
- truncator.write(multibytes_string)
34
-
35
- expect(truncator.read).to eq(multibytes_string)
36
- end
37
-
38
- it "overflows prefix and suffix " do
39
- truncator = described_class.new(max_size: 2)
40
-
41
- truncator.write("abc")
42
- truncator.write("d")
43
- truncator.write("e")
44
-
45
- expect(truncator.read).to eq("ab\n... omitting 1 bytes ...\nde")
46
- end
47
-
48
- it "omits bytes " do
49
- truncator = described_class.new(max_size: 2)
50
-
51
- truncator.write("abc___________________yz")
52
-
53
- expect(truncator.read).to eq("ab\n... omitting 20 bytes ...\nyz")
54
- end
55
-
56
- it "reflows suffix with less content" do
57
- truncator = described_class.new(max_size: 2)
58
-
59
- truncator.write("abc____________________y")
60
- truncator.write("z")
61
-
62
- expect(truncator.read).to eq("ab\n... omitting 21 bytes ...\nyz")
63
- end
64
-
65
- it "reflows suffix with more content" do
66
- truncator = described_class.new(max_size: 2)
67
-
68
- truncator.write("abc____________________y")
69
- truncator.write("zwx")
70
-
71
- expect(truncator.read).to eq("ab\n... omitting 23 bytes ...\nwx")
72
- end
73
- end
@@ -1,11 +0,0 @@
1
- # encoding: utf-8
2
-
3
- desc 'Load gem inside irb console'
4
- task :console do
5
- require 'irb'
6
- require 'irb/completion'
7
- require_relative '../lib/tty-command'
8
- ARGV.clear
9
- IRB.start
10
- end
11
- task :c => :console
@@ -1,11 +0,0 @@
1
- # encoding: utf-8
2
-
3
- desc 'Measure code coverage'
4
- task :coverage do
5
- begin
6
- original, ENV['COVERAGE'] = ENV['COVERAGE'], 'true'
7
- Rake::Task['spec'].invoke
8
- ensure
9
- ENV['COVERAGE'] = original
10
- end
11
- end
@@ -1,29 +0,0 @@
1
- # encoding: utf-8
2
-
3
- begin
4
- require 'rspec/core/rake_task'
5
-
6
- desc 'Run all specs'
7
- RSpec::Core::RakeTask.new(:spec) do |task|
8
- task.pattern = 'spec/{unit,integration}{,/*/**}/*_spec.rb'
9
- end
10
-
11
- namespace :spec do
12
- desc 'Run unit specs'
13
- RSpec::Core::RakeTask.new(:unit) do |task|
14
- task.pattern = 'spec/unit{,/*/**}/*_spec.rb'
15
- end
16
-
17
- desc 'Run integration specs'
18
- RSpec::Core::RakeTask.new(:integration) do |task|
19
- task.pattern = 'spec/integration{,/*/**}/*_spec.rb'
20
- end
21
- end
22
-
23
- rescue LoadError
24
- %w[spec spec:unit spec:integration].each do |name|
25
- task name do
26
- $stderr.puts "In order to run #{name}, do `gem install rspec`"
27
- end
28
- end
29
- end
@@ -1,30 +0,0 @@
1
- lib = File.expand_path('../lib', __FILE__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require 'tty/command/version'
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "tty-command"
7
- spec.version = TTY::Command::VERSION
8
- spec.authors = ["Piotr Murach"]
9
- spec.email = ["me@piotrmurach.com"]
10
-
11
- spec.summary = %q{Execute shell commands with pretty output logging and capture their stdout, stderr and exit status.}
12
- spec.description = %q{Execute shell commands with pretty output logging and capture their stdout, stderr and exit status. Redirect stdin, stdout and stderr of each command to a file or a string.}
13
- spec.homepage = "https://piotrmurach.github.io/tty"
14
- spec.license = "MIT"
15
-
16
- spec.files = Dir['{lib,spec,examples}/**/*.rb']
17
- spec.files += Dir['{bin,tasks}/*', 'tty-command.gemspec']
18
- spec.files += Dir['README.md', 'CHANGELOG.md', 'LICENSE.txt', 'Rakefile']
19
- spec.bindir = "exe"
20
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
- spec.require_paths = ["lib"]
22
-
23
- spec.required_ruby_version = '>= 2.0.0'
24
-
25
- spec.add_dependency 'pastel', '~> 0.7.0'
26
-
27
- spec.add_development_dependency 'bundler', '>= 1.5.0'
28
- spec.add_development_dependency 'rake'
29
- spec.add_development_dependency 'rspec', '~> 3.0'
30
- end