ztk 3.0.4 → 3.1.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.
- checksums.yaml +4 -4
- data/lib/ztk/profiler/core.rb +8 -3
- data/lib/ztk/version.rb +1 -1
- data/spec/ztk/ansi_spec.rb +3 -3
- data/spec/ztk/background_spec.rb +22 -22
- data/spec/ztk/base_spec.rb +1 -1
- data/spec/ztk/benchmark_spec.rb +13 -20
- data/spec/ztk/command_spec.rb +48 -61
- data/spec/ztk/config_spec.rb +16 -9
- data/spec/ztk/locator_spec.rb +3 -3
- data/spec/ztk/logger_spec.rb +40 -35
- data/spec/ztk/parallel_spec.rb +20 -20
- data/spec/ztk/profiler_spec.rb +100 -0
- data/spec/ztk/rescue_retry_spec.rb +18 -18
- data/spec/ztk/spinner_spec.rb +3 -3
- data/spec/ztk/ssh_spec.rb +87 -548
- data/spec/ztk/tcp_socket_check_spec.rb +11 -11
- data/spec/ztk/template_spec.rb +14 -13
- data/spec/ztk/ui_spec.rb +9 -9
- data/spec/ztk/version_spec.rb +2 -2
- metadata +4 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 1209eb8e5e2897a3911c0e7048080bc532b86c43
         | 
| 4 | 
            +
              data.tar.gz: 0b41dee03dac4f105de394722dfa9608e98fc221
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: d79fceb184898082b9db8edb3c040aee94edb10f07b25588daf7700c5813699652f3c7dc0973ef23f29a0e6e601e8d93590cc3c01e86e086603074f27d300789
         | 
| 7 | 
            +
              data.tar.gz: 7759484bac6dff0b686c7ae43e54a6e60ca10bfbaa288b5f9522fd0acab96816d0212c89bc4e0de1f6ae5445576822ae83a2b7541362ec317d36f20151dcca17
         | 
    
        data/lib/ztk/profiler/core.rb
    CHANGED
    
    | @@ -11,6 +11,7 @@ module ZTK | |
| 11 11 |  | 
| 12 12 | 
             
                  def start
         | 
| 13 13 | 
             
                    reset
         | 
| 14 | 
            +
                    @@start_time  = Time.now.utc
         | 
| 14 15 |  | 
| 15 16 | 
             
                    true
         | 
| 16 17 | 
             
                  end
         | 
| @@ -22,7 +23,7 @@ module ZTK | |
| 22 23 | 
             
                  end
         | 
| 23 24 |  | 
| 24 25 | 
             
                  def reset
         | 
| 25 | 
            -
                    @@start_time  =  | 
| 26 | 
            +
                    @@start_time  = nil
         | 
| 26 27 | 
             
                    @@end_time    = nil
         | 
| 27 28 | 
             
                    @@timer_stack = Array.new
         | 
| 28 29 | 
             
                    Timer.reset
         | 
| @@ -54,8 +55,12 @@ module ZTK | |
| 54 55 | 
             
                  end
         | 
| 55 56 |  | 
| 56 57 | 
             
                  def total_time
         | 
| 57 | 
            -
                     | 
| 58 | 
            -
             | 
| 58 | 
            +
                    if @@start_time.nil?
         | 
| 59 | 
            +
                      raise ProfilerError, "You must start the profiler in order to calculate a total time!"
         | 
| 60 | 
            +
                    else
         | 
| 61 | 
            +
                      stop
         | 
| 62 | 
            +
                      @@end_time - @@start_time
         | 
| 63 | 
            +
                    end
         | 
| 59 64 | 
             
                  end
         | 
| 60 65 |  | 
| 61 66 | 
             
                  def report(options={})
         | 
    
        data/lib/ztk/version.rb
    CHANGED
    
    
    
        data/spec/ztk/ansi_spec.rb
    CHANGED
    
    | @@ -27,7 +27,7 @@ describe "ZTK::ANSI Module" do | |
| 27 27 | 
             
              describe "module" do
         | 
| 28 28 |  | 
| 29 29 | 
             
                it "should be ZTK::ANSI" do
         | 
| 30 | 
            -
                  subject. | 
| 30 | 
            +
                  expect(subject).to be ZTK::ANSI
         | 
| 31 31 | 
             
                end
         | 
| 32 32 |  | 
| 33 33 | 
             
              end
         | 
| @@ -36,11 +36,11 @@ end | |
| 36 36 |  | 
| 37 37 | 
             
            describe "ZTK::ANSI Monkey-Patch String Class" do
         | 
| 38 38 |  | 
| 39 | 
            -
              subject  | 
| 39 | 
            +
              subject do
         | 
| 40 40 | 
             
                class String
         | 
| 41 41 | 
             
                  include ZTK::ANSI
         | 
| 42 42 | 
             
                end
         | 
| 43 | 
            -
               | 
| 43 | 
            +
              end
         | 
| 44 44 |  | 
| 45 45 | 
             
              describe "class" do
         | 
| 46 46 |  | 
    
        data/spec/ztk/background_spec.rb
    CHANGED
    
    | @@ -27,7 +27,7 @@ describe ZTK::Background do | |
| 27 27 | 
             
              describe "class" do
         | 
| 28 28 |  | 
| 29 29 | 
             
                it "should be an instance of ZTK::Background" do
         | 
| 30 | 
            -
                  subject. | 
| 30 | 
            +
                  expect(subject).to be_an_instance_of ZTK::Background
         | 
| 31 31 | 
             
                end
         | 
| 32 32 |  | 
| 33 33 | 
             
              end
         | 
| @@ -35,7 +35,7 @@ describe ZTK::Background do | |
| 35 35 | 
             
              describe "behaviour" do
         | 
| 36 36 |  | 
| 37 37 | 
             
                it "should throw an exception if the process method is called without a block" do
         | 
| 38 | 
            -
                   | 
| 38 | 
            +
                  expect{ subject.process }.to raise_error ZTK::BackgroundError, "You must supply a block to the process method!"
         | 
| 39 39 | 
             
                end
         | 
| 40 40 |  | 
| 41 41 | 
             
                describe "process" do
         | 
| @@ -46,9 +46,9 @@ describe ZTK::Background do | |
| 46 46 | 
             
                    end
         | 
| 47 47 |  | 
| 48 48 | 
             
                    subject.wait
         | 
| 49 | 
            -
                    subject.result. | 
| 50 | 
            -
                    subject.result. | 
| 51 | 
            -
                    subject.result. | 
| 49 | 
            +
                    expect(subject.result).to be_kind_of Integer
         | 
| 50 | 
            +
                    expect(subject.result).to be > 0
         | 
| 51 | 
            +
                    expect(subject.result).not_to be == Process.pid
         | 
| 52 52 | 
             
                  end
         | 
| 53 53 |  | 
| 54 54 | 
             
                end
         | 
| @@ -59,11 +59,11 @@ describe ZTK::Background do | |
| 59 59 | 
             
                    subject.process do
         | 
| 60 60 | 
             
                      sleep(WAIT_SMALL)
         | 
| 61 61 | 
             
                    end
         | 
| 62 | 
            -
                    subject.alive | 
| 62 | 
            +
                    expect(subject.alive?).to be == true
         | 
| 63 63 |  | 
| 64 64 | 
             
                    subject.wait
         | 
| 65 | 
            -
                    subject.result. | 
| 66 | 
            -
                    subject.result. | 
| 65 | 
            +
                    expect(subject.result).to be_kind_of Integer
         | 
| 66 | 
            +
                    expect(subject.result).to be > 0
         | 
| 67 67 | 
             
                  end
         | 
| 68 68 |  | 
| 69 69 | 
             
                  it "should respond false when the process is no longer running" do
         | 
| @@ -73,11 +73,11 @@ describe ZTK::Background do | |
| 73 73 | 
             
                    subject.wait
         | 
| 74 74 | 
             
                    sleep(WAIT_SMALL)
         | 
| 75 75 |  | 
| 76 | 
            -
                    subject.alive | 
| 76 | 
            +
                    expect(subject.alive?).to be == false
         | 
| 77 77 |  | 
| 78 | 
            -
                    subject.result. | 
| 79 | 
            -
                    subject.result. | 
| 80 | 
            -
                    subject.result. | 
| 78 | 
            +
                    expect(subject.result).to be_kind_of Integer
         | 
| 79 | 
            +
                    expect(subject.result).to be > 0
         | 
| 80 | 
            +
                    expect(subject.result).not_to be == Process.pid
         | 
| 81 81 | 
             
                  end
         | 
| 82 82 |  | 
| 83 83 | 
             
                end
         | 
| @@ -89,12 +89,12 @@ describe ZTK::Background do | |
| 89 89 | 
             
                      sleep(WAIT_SMALL)
         | 
| 90 90 | 
             
                      WAIT_SMALL
         | 
| 91 91 | 
             
                    end
         | 
| 92 | 
            -
                    subject.dead | 
| 92 | 
            +
                    expect(subject.dead?).to be false
         | 
| 93 93 |  | 
| 94 94 | 
             
                    subject.wait
         | 
| 95 | 
            -
                    subject.result. | 
| 96 | 
            -
                    subject.result. | 
| 97 | 
            -
                    subject.result. | 
| 95 | 
            +
                    expect(subject.result).to be_kind_of Integer
         | 
| 96 | 
            +
                    expect(subject.result).to be > 0
         | 
| 97 | 
            +
                    expect(subject.result).to be == WAIT_SMALL
         | 
| 98 98 | 
             
                  end
         | 
| 99 99 |  | 
| 100 100 | 
             
                  it "should respond true when the process is no longer running" do
         | 
| @@ -104,11 +104,11 @@ describe ZTK::Background do | |
| 104 104 | 
             
                    subject.wait
         | 
| 105 105 | 
             
                    sleep(WAIT_SMALL)
         | 
| 106 106 |  | 
| 107 | 
            -
                    subject.dead | 
| 107 | 
            +
                    expect(subject.dead?).to be true
         | 
| 108 108 |  | 
| 109 | 
            -
                    subject.result. | 
| 110 | 
            -
                    subject.result. | 
| 111 | 
            -
                    subject.result. | 
| 109 | 
            +
                    expect(subject.result).to be_kind_of Integer
         | 
| 110 | 
            +
                    expect(subject.result).to be > 0
         | 
| 111 | 
            +
                    expect(subject.result).not_to be == Process.pid
         | 
| 112 112 | 
             
                  end
         | 
| 113 113 |  | 
| 114 114 | 
             
                end
         | 
| @@ -127,8 +127,8 @@ describe ZTK::Background do | |
| 127 127 | 
             
                    end
         | 
| 128 128 | 
             
                    subject.wait
         | 
| 129 129 |  | 
| 130 | 
            -
                    subject.result. | 
| 131 | 
            -
                    subject.result.hello_world. | 
| 130 | 
            +
                    expect(subject.result).to be_kind_of BackgroundMarshalTest
         | 
| 131 | 
            +
                    expect(subject.result.hello_world).to be == "Hello World"
         | 
| 132 132 | 
             
                  end
         | 
| 133 133 |  | 
| 134 134 | 
             
                end
         | 
    
        data/spec/ztk/base_spec.rb
    CHANGED
    
    
    
        data/spec/ztk/benchmark_spec.rb
    CHANGED
    
    | @@ -22,20 +22,14 @@ require "spec_helper" | |
| 22 22 |  | 
| 23 23 | 
             
            describe ZTK::Benchmark do
         | 
| 24 24 |  | 
| 25 | 
            -
               | 
| 26 | 
            -
                @ui = ZTK::UI.new(
         | 
| 27 | 
            -
                  :stdout => StringIO.new,
         | 
| 28 | 
            -
                  :stderr => StringIO.new,
         | 
| 29 | 
            -
                  :stdin => StringIO.new
         | 
| 30 | 
            -
                )
         | 
| 31 | 
            -
              end
         | 
| 25 | 
            +
              let(:ui) { ZTK::UI.new(:stdout => StringIO.new, :stderr => StringIO.new, :stdin => StringIO.new) }
         | 
| 32 26 |  | 
| 33 27 | 
             
              subject { ZTK::Benchmark }
         | 
| 34 28 |  | 
| 35 29 | 
             
              describe "class" do
         | 
| 36 30 |  | 
| 37 31 | 
             
                it "should be ZTK::Benchmark" do
         | 
| 38 | 
            -
                  subject. | 
| 32 | 
            +
                  expect(subject).to be ZTK::Benchmark
         | 
| 39 33 | 
             
                end
         | 
| 40 34 |  | 
| 41 35 | 
             
              end
         | 
| @@ -43,44 +37,43 @@ describe ZTK::Benchmark do | |
| 43 37 | 
             
              describe "behaviour" do
         | 
| 44 38 |  | 
| 45 39 | 
             
                it "should throw an exception if executed without a block" do
         | 
| 46 | 
            -
                   | 
| 47 | 
            -
                    ZTK::Benchmark.bench
         | 
| 48 | 
            -
                  }.should raise_error ZTK::BenchmarkError, "You must supply a block!"
         | 
| 40 | 
            +
                  expect{ ZTK::Benchmark.bench }.to raise_error ZTK::BenchmarkError
         | 
| 49 41 | 
             
                end
         | 
| 50 42 |  | 
| 51 43 | 
             
                it "should return the benchmark of the given block" do
         | 
| 52 44 | 
             
                  mark = ZTK::Benchmark.bench do
         | 
| 53 45 | 
             
                    sleep(0.1)
         | 
| 54 46 | 
             
                  end
         | 
| 55 | 
            -
                  mark. | 
| 47 | 
            +
                  expect(mark).to be_an_instance_of Float
         | 
| 56 48 | 
             
                end
         | 
| 57 49 |  | 
| 58 50 | 
             
                it "should not throw an exception if executed with a message but without a mark" do
         | 
| 59 | 
            -
                  expect | 
| 60 | 
            -
                    ZTK::Benchmark.bench(:ui =>  | 
| 51 | 
            +
                  expect{
         | 
| 52 | 
            +
                    ZTK::Benchmark.bench(:ui => ui, :message => "Hello World") do
         | 
| 53 | 
            +
                      sleep(0.1)
         | 
| 61 54 | 
             
                    end
         | 
| 62 55 | 
             
                  }.not_to raise_error
         | 
| 63 56 | 
             
                end
         | 
| 64 57 |  | 
| 65 58 | 
             
                it "should not throw an exception if executed without a message but with a mark" do
         | 
| 66 | 
            -
                  expect | 
| 67 | 
            -
                    ZTK::Benchmark.bench(:ui =>  | 
| 59 | 
            +
                  expect{
         | 
| 60 | 
            +
                    ZTK::Benchmark.bench(:ui => ui, :mark => "%0.4f") do
         | 
| 68 61 | 
             
                    end
         | 
| 69 62 | 
             
                  }.not_to raise_error
         | 
| 70 63 | 
             
                end
         | 
| 71 64 |  | 
| 72 65 | 
             
                it "should not write to STDOUT if not given a message or mark" do
         | 
| 73 | 
            -
                  ZTK::Benchmark.bench(:ui =>  | 
| 66 | 
            +
                  ZTK::Benchmark.bench(:ui => ui, :use_spinner => false) do
         | 
| 74 67 | 
             
                    sleep(0.1)
         | 
| 75 68 | 
             
                  end
         | 
| 76 | 
            -
                   | 
| 69 | 
            +
                  expect(ui.stdout.size).to be == 0
         | 
| 77 70 | 
             
                end
         | 
| 78 71 |  | 
| 79 72 | 
             
                it "should write to STDOUT if given a message and mark" do
         | 
| 80 | 
            -
                  ZTK::Benchmark.bench(:ui =>  | 
| 73 | 
            +
                  ZTK::Benchmark.bench(:ui => ui, :message => "Hello World", :mark => "%0.4f") do
         | 
| 81 74 | 
             
                    sleep(0.1)
         | 
| 82 75 | 
             
                  end
         | 
| 83 | 
            -
                   | 
| 76 | 
            +
                  expect(ui.stdout.size).to be > 0
         | 
| 84 77 | 
             
                end
         | 
| 85 78 |  | 
| 86 79 | 
             
              end
         | 
    
        data/spec/ztk/command_spec.rb
    CHANGED
    
    | @@ -22,20 +22,14 @@ require "spec_helper" | |
| 22 22 |  | 
| 23 23 | 
             
            describe ZTK::Command do
         | 
| 24 24 |  | 
| 25 | 
            -
               | 
| 26 | 
            -
                @ui = ZTK::UI.new(
         | 
| 27 | 
            -
                  :stdout => StringIO.new,
         | 
| 28 | 
            -
                  :stderr => StringIO.new,
         | 
| 29 | 
            -
                  :stdin => StringIO.new
         | 
| 30 | 
            -
                )
         | 
| 31 | 
            -
              end
         | 
| 25 | 
            +
              let(:ui) { ZTK::UI.new(:stdout => StringIO.new, :stderr => StringIO.new, :stdin => StringIO.new) }
         | 
| 32 26 |  | 
| 33 | 
            -
              subject { ZTK::Command.new | 
| 27 | 
            +
              subject { ZTK::Command.new }
         | 
| 34 28 |  | 
| 35 29 | 
             
              describe "class" do
         | 
| 36 30 |  | 
| 37 31 | 
             
                it "should be an instance of ZTK::Command" do
         | 
| 38 | 
            -
                  subject. | 
| 32 | 
            +
                  expect(subject).to be_an_instance_of ZTK::Command
         | 
| 39 33 | 
             
                end
         | 
| 40 34 |  | 
| 41 35 | 
             
              end
         | 
| @@ -45,86 +39,80 @@ describe ZTK::Command do | |
| 45 39 | 
             
                describe "execute" do
         | 
| 46 40 |  | 
| 47 41 | 
             
                  it "should be able to execute the command \"hostname\"" do
         | 
| 48 | 
            -
                    subject.config  | 
| 49 | 
            -
             | 
| 50 | 
            -
                    end
         | 
| 42 | 
            +
                    subject.config.ui = ui
         | 
| 43 | 
            +
             | 
| 51 44 | 
             
                    hostname = %x(hostname).chomp
         | 
| 52 45 | 
             
                    status = subject.exec("hostname")
         | 
| 53 | 
            -
                    status.exit_code. | 
| 54 | 
            -
                     | 
| 55 | 
            -
                     | 
| 46 | 
            +
                    expect(status.exit_code).to be == 0
         | 
| 47 | 
            +
                    ui.stdout.rewind
         | 
| 48 | 
            +
                    expect(ui.stdout.read.chomp).to match(hostname)
         | 
| 56 49 | 
             
                  end
         | 
| 57 50 |  | 
| 58 51 | 
             
                  it "should timeout after the period specified" do
         | 
| 59 52 | 
             
                    subject.config do |config|
         | 
| 60 | 
            -
                      config.ui =  | 
| 53 | 
            +
                      config.ui = ui
         | 
| 61 54 | 
             
                      config.timeout = WAIT_SMALL
         | 
| 62 55 | 
             
                    end
         | 
| 63 56 | 
             
                    hostname = %x(hostname).chomp
         | 
| 64 | 
            -
                     | 
| 57 | 
            +
                    expect{ subject.exec("hostname ; sleep 10") }.to raise_error ZTK::CommandError
         | 
| 65 58 | 
             
                  end
         | 
| 66 59 |  | 
| 67 60 | 
             
                  it "should throw an exception if the exit status is not as expected" do
         | 
| 68 | 
            -
                    subject.config  | 
| 69 | 
            -
             | 
| 70 | 
            -
                     | 
| 71 | 
            -
                    lambda { subject.exec("/bin/bash -c 'exit 64'") }.should raise_error ZTK::CommandError
         | 
| 61 | 
            +
                    subject.config.ui = ui
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                    expect{ subject.exec("/bin/bash -c 'exit 64'") }.to raise_error ZTK::CommandError
         | 
| 72 64 | 
             
                  end
         | 
| 73 65 |  | 
| 74 66 | 
             
                  it "should return a instance of an OpenStruct object" do
         | 
| 75 | 
            -
                    subject.config  | 
| 76 | 
            -
             | 
| 77 | 
            -
                    end
         | 
| 67 | 
            +
                    subject.config.ui = ui
         | 
| 68 | 
            +
             | 
| 78 69 | 
             
                    result = subject.exec(%q{echo "Hello World"})
         | 
| 79 | 
            -
                    result. | 
| 70 | 
            +
                    expect(result).to be_an_instance_of OpenStruct
         | 
| 80 71 | 
             
                  end
         | 
| 81 72 |  | 
| 82 73 | 
             
                  it "should return the exit code" do
         | 
| 83 | 
            -
                    subject.config  | 
| 84 | 
            -
             | 
| 85 | 
            -
                    end
         | 
| 74 | 
            +
                    subject.config.ui = ui
         | 
| 75 | 
            +
             | 
| 86 76 | 
             
                    data = 64
         | 
| 87 77 |  | 
| 88 | 
            -
                    result = subject.exec(% | 
| 89 | 
            -
                    result.exit_code. | 
| 78 | 
            +
                    result = subject.exec(%{exit #{data}}, :exit_code => data)
         | 
| 79 | 
            +
                    expect(result.exit_code).to be == data
         | 
| 90 80 | 
             
                  end
         | 
| 91 81 |  | 
| 92 82 | 
             
                  it "should return the output" do
         | 
| 93 | 
            -
                    subject.config  | 
| 94 | 
            -
             | 
| 95 | 
            -
                    end
         | 
| 83 | 
            +
                    subject.config.ui = ui
         | 
| 84 | 
            +
             | 
| 96 85 | 
             
                    data = "Hello World @ #{Time.now.utc}"
         | 
| 97 86 |  | 
| 98 | 
            -
                    result = subject.exec(% | 
| 99 | 
            -
                    result.output.match(data) | 
| 87 | 
            +
                    result = subject.exec(%{echo "#{data}"})
         | 
| 88 | 
            +
                    expect(result.output).to match(data)
         | 
| 100 89 | 
             
                  end
         | 
| 101 90 |  | 
| 102 91 | 
             
                  it "should allow us to change the expected exit code" do
         | 
| 103 | 
            -
                    subject.config  | 
| 104 | 
            -
             | 
| 105 | 
            -
                    end
         | 
| 92 | 
            +
                    subject.config.ui = ui
         | 
| 93 | 
            +
             | 
| 106 94 | 
             
                    data = 32
         | 
| 107 | 
            -
                    result = subject.exec(% | 
| 95 | 
            +
                    result = subject.exec(%{exit #{data}}, :exit_code => data)
         | 
| 96 | 
            +
                    expect(result.exit_code).to be == data
         | 
| 108 97 | 
             
                  end
         | 
| 109 98 |  | 
| 110 99 | 
             
                  describe "stdout" do
         | 
| 111 100 |  | 
| 112 101 | 
             
                    it "should capture STDOUT and send it to the appropriate pipe" do
         | 
| 113 | 
            -
                      subject.config  | 
| 114 | 
            -
             | 
| 115 | 
            -
                      end
         | 
| 102 | 
            +
                      subject.config.ui = ui
         | 
| 103 | 
            +
             | 
| 116 104 | 
             
                      data = "Hello World @ #{Time.now.utc}"
         | 
| 117 105 |  | 
| 118 | 
            -
                      subject.exec(% | 
| 106 | 
            +
                      subject.exec(%{echo "#{data}" >&1})
         | 
| 119 107 |  | 
| 120 | 
            -
                       | 
| 121 | 
            -
                       | 
| 108 | 
            +
                      ui.stdout.rewind
         | 
| 109 | 
            +
                      expect(ui.stdout.read).to match(data)
         | 
| 122 110 |  | 
| 123 | 
            -
                       | 
| 124 | 
            -
                       | 
| 111 | 
            +
                      ui.stderr.rewind
         | 
| 112 | 
            +
                      expect(ui.stderr.read).to be_empty
         | 
| 125 113 |  | 
| 126 | 
            -
                       | 
| 127 | 
            -
                       | 
| 114 | 
            +
                      ui.stdin.rewind
         | 
| 115 | 
            +
                      expect(ui.stdin.read).to be_empty
         | 
| 128 116 | 
             
                    end
         | 
| 129 117 |  | 
| 130 118 | 
             
                  end
         | 
| @@ -132,21 +120,20 @@ describe ZTK::Command do | |
| 132 120 | 
             
                  describe "stderr" do
         | 
| 133 121 |  | 
| 134 122 | 
             
                    it "should capture STDERR and send it to the appropriate pipe" do
         | 
| 135 | 
            -
                      subject.config  | 
| 136 | 
            -
             | 
| 137 | 
            -
                      end
         | 
| 123 | 
            +
                      subject.config.ui = ui
         | 
| 124 | 
            +
             | 
| 138 125 | 
             
                      data = "Hello World @ #{Time.now.utc}"
         | 
| 139 126 |  | 
| 140 | 
            -
                      subject.exec(% | 
| 127 | 
            +
                      subject.exec(%{echo "#{data}" >&2})
         | 
| 141 128 |  | 
| 142 | 
            -
                       | 
| 143 | 
            -
                       | 
| 129 | 
            +
                      ui.stdout.rewind
         | 
| 130 | 
            +
                      expect(ui.stdout.read).to be_empty
         | 
| 144 131 |  | 
| 145 | 
            -
                       | 
| 146 | 
            -
                       | 
| 132 | 
            +
                      ui.stderr.rewind
         | 
| 133 | 
            +
                      expect(ui.stderr.read).to match(data)
         | 
| 147 134 |  | 
| 148 | 
            -
                       | 
| 149 | 
            -
                       | 
| 135 | 
            +
                      ui.stdin.rewind
         | 
| 136 | 
            +
                      expect(ui.stdin.read).to be_empty
         | 
| 150 137 | 
             
                    end
         | 
| 151 138 | 
             
                  end
         | 
| 152 139 |  | 
| @@ -155,7 +142,7 @@ describe ZTK::Command do | |
| 155 142 | 
             
                describe "upload" do
         | 
| 156 143 |  | 
| 157 144 | 
             
                  it "should raise a 'Not Supported' exception when attempting to upload" do
         | 
| 158 | 
            -
                     | 
| 145 | 
            +
                    expect{ subject.upload("abc", "123") }.to raise_error ZTK::CommandError
         | 
| 159 146 | 
             
                  end
         | 
| 160 147 |  | 
| 161 148 | 
             
                end
         | 
| @@ -163,7 +150,7 @@ describe ZTK::Command do | |
| 163 150 | 
             
                describe "download" do
         | 
| 164 151 |  | 
| 165 152 | 
             
                  it "should raise a 'Not Supported' exception when attempting to download" do
         | 
| 166 | 
            -
                     | 
| 153 | 
            +
                    expect{ subject.download("abc", "123") }.to raise_error ZTK::CommandError
         | 
| 167 154 | 
             
                  end
         | 
| 168 155 |  | 
| 169 156 | 
             
                end
         |