Sha256: ba40539d7954125e00d7887e285f1815e671f290b4199f931f47e57460547b68

Contents?: true

Size: 1.41 KB

Versions: 1

Compression:

Stored size: 1.41 KB

Contents

require 'epitools'

describe Sys::ProcessInfo do

  specify "OS type" do
    proc { Sys.os }.should_not raise_error
    proc { Sys.linux? }.should_not raise_error
    proc { Sys.mac? }.should_not raise_error
    proc { Sys.darwin? }.should_not raise_error
    proc { Sys.bsd? }.should_not raise_error
    proc { Sys.windows? }.should_not raise_error

    %w[Linux Windows Darwin BSD].include?(Sys.os).should == true

    [:linux?, :mac?, :windows?, :bsd?].any? { |os| Sys.send(os) }.should == true
  end


  specify "list all processes" do
    # Sys.ps.should_not be_blank
    procs = Sys.ps

    procs.first.state.is_a?(Array).should == true

    pids = procs.map{ |process| process.pid }

    p2s = Hash[ *Sys.ps(*pids).map { |process| [process.pid, process] }.flatten ]
    matches = 0
    procs.each do |p1|
      if p2 = p2s[p1.pid]
        matches += 1
        p1.command.should == p2.command

        # FIXME: this behaves weirdly with kernel processes, eg:
        # expected: "[kworker/u8:1-phy5]"
        #      got: "[kworker/u8:1-events_unbound]" (using ==)

      end
    end

    matches.should > 1
  end

  specify "cross-platform methods" do
    Sys.cross_platform_method(:cross_platform_test)
    proc { Sys.cross_platform_test }.should raise_error(NotImplementedError)
  end

  specify "network interfaces" do
    Sys.interfaces.should_not be_blank
  end

  specify "mounts" do
    Sys.mounts.should_not be_blank
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
epitools-0.5.136 spec/sys_spec.rb