aboutsummaryrefslogtreecommitdiffstats
path: root/spec/lib/external_command_spec.rb
blob: 0ff1a9c0ad0b8a51f2dc74dacaf0feee0d41c8be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# This is a test of the external_command library

require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
script_dir = File.join(File.dirname(__FILE__), 'external_command_scripts')
output_script = File.join(script_dir, "output.sh")

require 'external_command'

describe "when running ExternalCommand" do

    it "should get correct status code for /bin/true" do
        t = ExternalCommand.new("/bin/true").run()
        t.status.should == 0
        t.out.should == ""
        t.err.should == ""
    end

    it "should get correct status code for /bin/false" do
        f = ExternalCommand.new("/bin/false").run()
        f.status.should == 1
        f.out.should == ""
        f.err.should == ""
    end

    it "should get stdout and stderr" do
        f = ExternalCommand.new(output_script, "out", "err", "10", "23").run()
        f.status.should == 23
        f.out.should == (0..9).map {|i| "out #{i}\n"}.join("")
        f.err.should == (0..9).map {|i| "err #{i}\n"}.join("")
    end

    it "should work with large amounts of data" do
        f = ExternalCommand.new(output_script, "a longer output line", "a longer error line", "10000", "5").run()
        f.status.should == 5
        f.out.should == (0..9999).map {|i| "a longer output line #{i}\n"}.join("")
        f.err.should == (0..9999).map {|i| "a longer error line #{i}\n"}.join("")
    end

end