tty-command 0.9.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
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