Sha256: 5398c3f0e47cc7a82c70587efc1e16d3bc5c05247c195887be256958ab176212

Contents?: true

Size: 1.39 KB

Versions: 3

Compression:

Stored size: 1.39 KB

Contents

#!/usr/bin/env spec -cfs -b

BEGIN {
	require 'pathname'
	basedir = Pathname( __FILE__ ).dirname.parent
	libdir = basedir + 'lib'

	$LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s )
}

require 'rspec'
require 'sysexits'

describe Sysexits do

	it "contains common exit codes as constants" do
		Sysexits::EX_OK.should == 0
		Sysexits::EX_USAGE.should == 64
	end


	it "provides an alternative 'exit' function that can take status names as Strings" do
		expect {
			Sysexits.exit( :usage )
		}.to raise_exception( SystemExit, 'exit' ) do |exc|
			exc.status.should == Sysexits::EX_USAGE
		end
	end

	it "provides an alternative 'exit' function that can take status names as Symbols" do
		expect {
			Sysexits.exit( 'permission_denied' )
		}.to raise_exception( SystemExit, 'exit' ) do |exc|
			exc.status.should == Sysexits::EX_NOPERM
		end
	end

	it "defaults to exiting with a successful status, just like the Kernel version" do
		expect {
			Sysexits.exit( :usage )
		}.to raise_exception( SystemExit, 'exit' ) do |exc|
			exc.status.should == Sysexits::EX_OK
		end
	end


	it "overrides Kernel.exit without patching any monkeys. I mean freedoms. Or something." do
		monkey = Class.new do
			include Sysexits

			def eek_eek
				exit :usage
			end
		end
		expect {
			monkey.new.eek_eek
		}.to raise_exception( SystemExit, 'exit' ) do |exc|
			exc.status.should == Sysexits::EX_USAGE
		end
	end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sysexits-1.2.0 spec/sysexits_spec.rb
sysexits-1.1.0 spec/sysexits_spec.rb
sysexits-1.0.2 spec/sysexits_spec.rb