assit 0.0.2 → 0.0.3
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.
- data/lib/assit/actions/debug_action.rb +19 -0
- data/lib/assit/assertions.rb +8 -1
- data/lib/assit/disable_assertions.rb +1 -1
- data/lib/assit/loader.rb +3 -3
- data/lib/assit/setup_assertions.rb +1 -1
- data/lib/assit_config.rb +119 -0
- data/test/assit_test.rb +10 -0
- metadata +4 -3
- data/lib/assit/config.rb +0 -122
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'ruby-debug'
|
2
|
+
Debugger.start
|
3
|
+
|
4
|
+
module Assit
|
5
|
+
|
6
|
+
# Error class for the asserts
|
7
|
+
class AssertionFailure < StandardError
|
8
|
+
end
|
9
|
+
|
10
|
+
# Raises an error if the assertion fails
|
11
|
+
class DebugAction
|
12
|
+
|
13
|
+
# The action
|
14
|
+
def assert_it(message)
|
15
|
+
debugger
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
data/lib/assit/assertions.rb
CHANGED
@@ -19,7 +19,7 @@ module Assit
|
|
19
19
|
# Assert if something is of the right type
|
20
20
|
def assit_kind_of(klass, object, message = "Object of wrong type")
|
21
21
|
if(!object.kind_of?(klass))
|
22
|
-
message += "
|
22
|
+
message += " (Expected #{klass} but was #{object.class})"
|
23
23
|
assit(false, message)
|
24
24
|
end
|
25
25
|
end
|
@@ -54,5 +54,12 @@ module Assit
|
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
+
# Executes the given block and asserts if the result is true. This allows
|
58
|
+
# you to assert on complex, custom expressions and be able to disable
|
59
|
+
# those expressions together with the assertions. See the README for more.
|
60
|
+
def assit_block(message = "Assertion failed.", &block)
|
61
|
+
assit(block.call, message)
|
62
|
+
end
|
63
|
+
|
57
64
|
end
|
58
65
|
end
|
data/lib/assit/loader.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# Loads the Assit framework and configures it
|
2
|
-
require '
|
2
|
+
require 'assit_config.rb'
|
3
3
|
|
4
4
|
# Do the configuration
|
5
|
-
|
5
|
+
AssitConfig::do_config!
|
6
6
|
|
7
|
-
if(
|
7
|
+
if(AssitConfig.disabled?)
|
8
8
|
require 'disable_assertions'
|
9
9
|
else
|
10
10
|
require 'setup_assertions'
|
data/lib/assit_config.rb
ADDED
@@ -0,0 +1,119 @@
|
|
1
|
+
# Helper module for the configuration
|
2
|
+
# Ths is used to load the Assit module. The following configuration
|
3
|
+
# options exist:
|
4
|
+
#
|
5
|
+
# * assit_disabled - If set it will completely disable the assertions
|
6
|
+
# * assit_action - Selects the action that will be executed if the assert fails
|
7
|
+
#
|
8
|
+
# The Assit framework can be configured through environment variables or
|
9
|
+
# a config file (assit_config.rb) in the current load path.
|
10
|
+
#
|
11
|
+
# If environment variables are used, the should have ALL UPPERCASE
|
12
|
+
# names, as ASSIT_DISABLED and ASSIT_ACTION.
|
13
|
+
#
|
14
|
+
# Environment variables take precedence over the config file.
|
15
|
+
#
|
16
|
+
# If no configuration is given, the module is configured
|
17
|
+
# automatically:
|
18
|
+
#
|
19
|
+
# A Rails installation run in 'production' mode will have the
|
20
|
+
# assertions disabled.
|
21
|
+
#
|
22
|
+
# A Rails installation in the other modes will use :raise as
|
23
|
+
# the default action.
|
24
|
+
#
|
25
|
+
# Other scripts will use :raise if the $DEBUG flag is set, otherwise
|
26
|
+
# :log is used as the default action
|
27
|
+
module AssitConfig
|
28
|
+
|
29
|
+
# defines the methods used for the config file
|
30
|
+
|
31
|
+
# Sets the "disable" flag
|
32
|
+
def self.assit_disabled(disable)
|
33
|
+
@assit_disabled = disable
|
34
|
+
@assit_disabled_conf = true
|
35
|
+
end
|
36
|
+
|
37
|
+
# Gets the "disable" flag
|
38
|
+
def self.disabled?
|
39
|
+
@assit_disabled
|
40
|
+
end
|
41
|
+
|
42
|
+
# Get the action for failed assertions
|
43
|
+
def self.action
|
44
|
+
@@assit_action_object ||= begin
|
45
|
+
action_name = "#{@assit_action.to_s.downcase}_action"
|
46
|
+
|
47
|
+
# require the action's file
|
48
|
+
require File.join('assit', 'actions', action_name)
|
49
|
+
|
50
|
+
# Get the class of the widget and check, just to be sure
|
51
|
+
klass = Assit.const_get(camelize(action_name))
|
52
|
+
raise(RuntimeError, "Action class does not exist") unless(klass.is_a?(Class))
|
53
|
+
|
54
|
+
# Create the new widget
|
55
|
+
klass.new()
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# Sets the action for failed assertions. This will
|
60
|
+
# create the AssitAction object that can be used by the
|
61
|
+
# framework
|
62
|
+
def self.assit_action(action)
|
63
|
+
@assit_action = action.to_sym
|
64
|
+
end
|
65
|
+
|
66
|
+
# Sets up the Assit configuration parameters
|
67
|
+
def self.do_config!
|
68
|
+
# Try to load the configuration
|
69
|
+
begin
|
70
|
+
require 'assit_config'
|
71
|
+
rescue LoadError
|
72
|
+
# Fail silently, we don't care if there is no config file
|
73
|
+
end
|
74
|
+
|
75
|
+
# Check for the environment variables. They can overwrite the
|
76
|
+
# config file variables.
|
77
|
+
@assit_disabled ||= ENV['ASSIT_DISABLED'] && (ENV['ASSIT_DISABLED'].downcase == 'true' || ENV['ASSIT_DISABLED'].downcase == 'yes')
|
78
|
+
@assit_disabled_conf ||= (ENV['ASSIT_DISABLED'] != nil)
|
79
|
+
@assit_action ||= ENV['ASSIT_ACTION'] ? ENV['ASSIT_ACTION'].downcase.to_sym : nil
|
80
|
+
|
81
|
+
# If still not configured, use the auto-config
|
82
|
+
@assit_disabled ||= auto_disable unless(@assit_disabled_conf)
|
83
|
+
@assit_action ||= auto_action
|
84
|
+
|
85
|
+
# Call the action one time to create and load it
|
86
|
+
action
|
87
|
+
|
88
|
+
# return true
|
89
|
+
true
|
90
|
+
end
|
91
|
+
|
92
|
+
protected
|
93
|
+
|
94
|
+
# Used to auto-configure the action
|
95
|
+
def self.auto_action
|
96
|
+
# Raise if the debug mode is set or rails is in test or development
|
97
|
+
if($DEBUG || (ENV['RAILS_ENV'] && ENV['RAILS_ENV'] != 'production'))
|
98
|
+
:raise
|
99
|
+
else
|
100
|
+
:console
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
# Used to auto-configure the "disable" flag
|
105
|
+
def self.auto_disable
|
106
|
+
# In Rails production we auto-disable
|
107
|
+
(ENV['RAILS_ENV'] && ENV['RAILS_ENV'] == 'production')
|
108
|
+
end
|
109
|
+
|
110
|
+
# Stolen from Rails ;-)
|
111
|
+
def self.camelize(lower_case_and_underscored_word, first_letter_in_uppercase = true)
|
112
|
+
if first_letter_in_uppercase
|
113
|
+
lower_case_and_underscored_word.to_s.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
|
114
|
+
else
|
115
|
+
lower_case_and_underscored_word.first + camelize(lower_case_and_underscored_word)[1..-1]
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
data/test/assit_test.rb
CHANGED
@@ -65,4 +65,14 @@ class AssitTest < Test::Unit::TestCase
|
|
65
65
|
assert_raise(Assit::AssertionFailure) { assit_quack(object_duck, :growl) }
|
66
66
|
end
|
67
67
|
|
68
|
+
# Test the block assertion
|
69
|
+
def test_assert_block
|
70
|
+
assit_block { true }
|
71
|
+
end
|
72
|
+
|
73
|
+
# Test the block assertions failure
|
74
|
+
def test_assert_block_fail
|
75
|
+
assert_raise(Assit::AssertionFailure) { assit_block { 'foo' == 'bar' } }
|
76
|
+
end
|
77
|
+
|
68
78
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: assit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Hahn
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-02-25 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -25,14 +25,15 @@ files:
|
|
25
25
|
- lib/assit
|
26
26
|
- lib/assit/actions
|
27
27
|
- lib/assit/actions/console_action.rb
|
28
|
+
- lib/assit/actions/debug_action.rb
|
28
29
|
- lib/assit/actions/raise_action.rb
|
29
30
|
- lib/assit/assertions.rb
|
30
31
|
- lib/assit/assit_config.rb_example
|
31
|
-
- lib/assit/config.rb
|
32
32
|
- lib/assit/disable_assertions.rb
|
33
33
|
- lib/assit/loader.rb
|
34
34
|
- lib/assit/setup_assertions.rb
|
35
35
|
- lib/assit.rb
|
36
|
+
- lib/assit_config.rb
|
36
37
|
has_rdoc: true
|
37
38
|
homepage: http://assit.rubyforge.org
|
38
39
|
post_install_message:
|
data/lib/assit/config.rb
DELETED
@@ -1,122 +0,0 @@
|
|
1
|
-
module Assit
|
2
|
-
|
3
|
-
# Helper module for the configuration
|
4
|
-
# Ths is used to load the Assit module. The following configuration
|
5
|
-
# options exist:
|
6
|
-
#
|
7
|
-
# * assit_disabled - If set it will completely disable the assertions
|
8
|
-
# * assit_action - Selects the action that will be executed if the assert fails
|
9
|
-
#
|
10
|
-
# The Assit framework can be configured through environment variables or
|
11
|
-
# a config file (assit_config.rb) in the current load path.
|
12
|
-
#
|
13
|
-
# If environment variables are used, the should have ALL UPPERCASE
|
14
|
-
# names, as ASSIT_DISABLED and ASSIT_ACTION.
|
15
|
-
#
|
16
|
-
# Environment variables take precedence over the config file.
|
17
|
-
#
|
18
|
-
# If no configuration is given, the module is configured
|
19
|
-
# automatically:
|
20
|
-
#
|
21
|
-
# A Rails installation run in 'production' mode will have the
|
22
|
-
# assertions disabled.
|
23
|
-
#
|
24
|
-
# A Rails installation in the other modes will use :raise as
|
25
|
-
# the default action.
|
26
|
-
#
|
27
|
-
# Other scripts will use :raise if the $DEBUG flag is set, otherwise
|
28
|
-
# :log is used as the default action
|
29
|
-
module Config
|
30
|
-
|
31
|
-
# defines the methods used for the config file
|
32
|
-
|
33
|
-
# Sets the "disable" flag
|
34
|
-
def self.assit_disabled(disable)
|
35
|
-
@assit_disabled = disable
|
36
|
-
@assit_disabled_conf = true
|
37
|
-
end
|
38
|
-
|
39
|
-
# Gets the "disable" flag
|
40
|
-
def self.disabled?
|
41
|
-
@assit_disabled
|
42
|
-
end
|
43
|
-
|
44
|
-
# Get the action for failed assertions
|
45
|
-
def self.action
|
46
|
-
@@assit_action_object ||= begin
|
47
|
-
action_name = "#{@assit_action.to_s.downcase}_action"
|
48
|
-
|
49
|
-
# require the action's file
|
50
|
-
require File.join('actions', action_name)
|
51
|
-
|
52
|
-
# Get the class of the widget and check, just to be sure
|
53
|
-
klass = Assit.const_get(camelize(action_name))
|
54
|
-
raise(RuntimeError, "Action class does not exist") unless(klass.is_a?(Class))
|
55
|
-
|
56
|
-
# Create the new widget
|
57
|
-
klass.new()
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
# Sets the action for failed assertions. This will
|
62
|
-
# create the AssitAction object that can be used by the
|
63
|
-
# framework
|
64
|
-
def self.assit_action(action)
|
65
|
-
@assit_action = action.to_sym
|
66
|
-
end
|
67
|
-
|
68
|
-
# Sets up the Assit configuration parameters
|
69
|
-
def self.do_config!
|
70
|
-
# Try to load the configuration
|
71
|
-
begin
|
72
|
-
require 'assit_config'
|
73
|
-
rescue LoadError
|
74
|
-
# Fail silently, we don't care if there is no config file
|
75
|
-
end
|
76
|
-
|
77
|
-
# Check for the environment variables. They can overwrite the
|
78
|
-
# config file variables.
|
79
|
-
@assit_disabled ||= ENV['ASSIT_DISABLED'] && (ENV['ASSIT_DISABLED'].downcase == 'true' || ENV['ASSIT_DISABLED'].downcase == 'yes')
|
80
|
-
@assit_disabled_conf ||= (ENV['ASSIT_DISABLED'] != nil)
|
81
|
-
@assit_action ||= ENV['ASSIT_ACTION'] ? ENV['ASSIT_ACTION'].downcase.to_sym : nil
|
82
|
-
|
83
|
-
# If still not configured, use the auto-config
|
84
|
-
@assit_disabled ||= auto_disable unless(@assit_disabled_conf)
|
85
|
-
@assit_action ||= auto_action
|
86
|
-
|
87
|
-
# Call the action one time to create and load it
|
88
|
-
action
|
89
|
-
|
90
|
-
# return true
|
91
|
-
true
|
92
|
-
end
|
93
|
-
|
94
|
-
protected
|
95
|
-
|
96
|
-
# Used to auto-configure the action
|
97
|
-
def self.auto_action
|
98
|
-
# Raise if the debug mode is set or rails is in test or development
|
99
|
-
if($DEBUG || (ENV['RAILS_ENV'] && ENV['RAILS_ENV'] != 'production'))
|
100
|
-
:raise
|
101
|
-
else
|
102
|
-
:console
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
# Used to auto-configure the "disable" flag
|
107
|
-
def self.auto_disable
|
108
|
-
# In Rails production we auto-disable
|
109
|
-
(ENV['RAILS_ENV'] && ENV['RAILS_ENV'] == 'production')
|
110
|
-
end
|
111
|
-
|
112
|
-
# Stolen from Rails ;-)
|
113
|
-
def self.camelize(lower_case_and_underscored_word, first_letter_in_uppercase = true)
|
114
|
-
if first_letter_in_uppercase
|
115
|
-
lower_case_and_underscored_word.to_s.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
|
116
|
-
else
|
117
|
-
lower_case_and_underscored_word.first + camelize(lower_case_and_underscored_word)[1..-1]
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
end
|
122
|
-
end
|