structured_warnings 0.2.0 → 0.3.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.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +200 -0
  3. data/lib/{structured_warnings/dynamic.rb → dynamic.rb} +0 -0
  4. data/lib/structured_warnings.rb +19 -9
  5. data/lib/structured_warnings/base.rb +132 -0
  6. data/lib/structured_warnings/kernel.rb +5 -65
  7. data/lib/structured_warnings/minitest.rb +5 -0
  8. data/lib/structured_warnings/test.rb +3 -5
  9. data/lib/structured_warnings/test/assertions.rb +93 -98
  10. data/lib/structured_warnings/test/warner.rb +32 -35
  11. data/lib/structured_warnings/test_unit.rb +5 -0
  12. data/lib/structured_warnings/version.rb +3 -0
  13. data/lib/structured_warnings/warner.rb +13 -11
  14. data/lib/structured_warnings/warning.rb +61 -119
  15. data/lib/warning.rb +9 -0
  16. metadata +53 -92
  17. data/Gemfile +0 -3
  18. data/Gemfile.lock +0 -21
  19. data/History.txt +0 -36
  20. data/License.txt +0 -20
  21. data/README.rdoc +0 -137
  22. data/Rakefile +0 -55
  23. data/doc/DeprecatedMethodWarning.html +0 -105
  24. data/doc/DeprecatedSignatureWarning.html +0 -106
  25. data/doc/DeprecationWarning.html +0 -106
  26. data/doc/Dynamic.html +0 -125
  27. data/doc/Object.html +0 -117
  28. data/doc/README_rdoc.html +0 -283
  29. data/doc/StandardWarning.html +0 -104
  30. data/doc/StructuredWarnings.html +0 -125
  31. data/doc/StructuredWarnings/ClassMethods.html +0 -192
  32. data/doc/StructuredWarnings/Kernel.html +0 -222
  33. data/doc/StructuredWarnings/Test.html +0 -97
  34. data/doc/StructuredWarnings/Test/Assertions.html +0 -272
  35. data/doc/StructuredWarnings/Test/Warner.html +0 -208
  36. data/doc/StructuredWarnings/Warner.html +0 -162
  37. data/doc/Test.html +0 -95
  38. data/doc/Test/Unit.html +0 -95
  39. data/doc/Warning.html +0 -398
  40. data/doc/Warning/ClassMethods.html +0 -278
  41. data/doc/created.rid +0 -10
  42. data/doc/css/fonts.css +0 -167
  43. data/doc/css/rdoc.css +0 -590
  44. data/doc/fonts/Lato-Light.ttf +0 -0
  45. data/doc/fonts/Lato-LightItalic.ttf +0 -0
  46. data/doc/fonts/Lato-Regular.ttf +0 -0
  47. data/doc/fonts/Lato-RegularItalic.ttf +0 -0
  48. data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
  49. data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
  50. data/doc/images/add.png +0 -0
  51. data/doc/images/arrow_up.png +0 -0
  52. data/doc/images/brick.png +0 -0
  53. data/doc/images/brick_link.png +0 -0
  54. data/doc/images/bug.png +0 -0
  55. data/doc/images/bullet_black.png +0 -0
  56. data/doc/images/bullet_toggle_minus.png +0 -0
  57. data/doc/images/bullet_toggle_plus.png +0 -0
  58. data/doc/images/date.png +0 -0
  59. data/doc/images/delete.png +0 -0
  60. data/doc/images/find.png +0 -0
  61. data/doc/images/loadingAnimation.gif +0 -0
  62. data/doc/images/macFFBgHack.png +0 -0
  63. data/doc/images/package.png +0 -0
  64. data/doc/images/page_green.png +0 -0
  65. data/doc/images/page_white_text.png +0 -0
  66. data/doc/images/page_white_width.png +0 -0
  67. data/doc/images/plugin.png +0 -0
  68. data/doc/images/ruby.png +0 -0
  69. data/doc/images/tag_blue.png +0 -0
  70. data/doc/images/tag_green.png +0 -0
  71. data/doc/images/transparent.png +0 -0
  72. data/doc/images/wrench.png +0 -0
  73. data/doc/images/wrench_orange.png +0 -0
  74. data/doc/images/zoom.png +0 -0
  75. data/doc/index.html +0 -121
  76. data/doc/js/darkfish.js +0 -161
  77. data/doc/js/jquery.js +0 -4
  78. data/doc/js/navigation.js +0 -142
  79. data/doc/js/navigation.js.gz +0 -0
  80. data/doc/js/search.js +0 -109
  81. data/doc/js/search_index.js +0 -1
  82. data/doc/js/search_index.js.gz +0 -0
  83. data/doc/js/searcher.js +0 -228
  84. data/doc/js/searcher.js.gz +0 -0
  85. data/doc/table_of_contents.html +0 -200
  86. data/structured_warnings.gemspec +0 -24
  87. data/test/structured_warnings_test.rb +0 -187
@@ -1,24 +0,0 @@
1
- require 'rubygems'
2
-
3
- Gem::Specification.new do |s|
4
- s.name = 'structured_warnings'
5
- s.version = '0.2.0'
6
- s.author = 'Gregor Schmidt'
7
- s.email = 'ruby@schmidtwisser.de'
8
- s.homepage = 'http://github.com/schmidt/structured_warnings'
9
- s.summary = 'Provides structured warnings for Ruby, using an exception-like interface and hierarchy'
10
- s.license = 'MIT'
11
- s.files = Dir['**/*'].reject{ |f| f.include?('git') }
12
- s.test_files = Dir['test/*.rb']
13
-
14
- s.rdoc_options = ['--charset=UTF-8']
15
- s.extra_rdoc_files = ['README.rdoc']
16
-
17
- s.add_development_dependency "rake"
18
- s.add_development_dependency "test-unit"
19
-
20
- s.description = %Q{
21
- This is an implementation of Daniel Berger's proposal of structured
22
- warnings for Ruby.
23
- }
24
- end
@@ -1,187 +0,0 @@
1
- require 'test/unit'
2
- require 'structured_warnings'
3
-
4
- class Foo
5
- def method_using_structured_warning_style_api
6
- warn DeprecatedMethodWarning,
7
- 'This method is deprecated. Use new_method instead'
8
- end
9
- end
10
-
11
- class Bar
12
- attr_reader :args
13
-
14
- def warn(*args)
15
- @args = args
16
- end
17
-
18
- def method_using_incompatible_warn_api
19
- warn :deprecated, 'explanation'
20
- end
21
- end
22
-
23
- class StructuredWarningsTest < Test::Unit::TestCase
24
- def supports_fork
25
- return false unless Process.respond_to? :fork
26
- fork { Kernel.exit! }
27
- Process.wait
28
-
29
- true
30
- rescue NotImplementedError
31
- false
32
- end
33
-
34
- def test_fork_in_thread
35
- return unless supports_fork
36
-
37
- Thread.new do
38
- fork do
39
- begin
40
- DeprecatedMethodWarning.disable do
41
- Foo.new.method_using_structured_warning_style_api
42
- end
43
- rescue
44
- puts "\n#{$!.class.name}: #{$!.message}"
45
- puts $!.backtrace.join("\n")
46
- exit 1
47
- end
48
- end
49
- end.join
50
- Process.wait
51
-
52
- assert($?.success?, 'Forked subprocess failed')
53
- end
54
-
55
- def test_warn_using_structured_warning_style_api
56
- assert_warn(DeprecatedMethodWarning) do
57
- Foo.new.method_using_structured_warning_style_api
58
- end
59
- end
60
-
61
- def test_warn_using_incompatible_warn_api
62
- bar = Bar.new
63
-
64
- assert_no_warn do
65
- bar.method_using_incompatible_warn_api
66
- end
67
-
68
- assert_equal :deprecated, bar.args.first
69
- assert_equal "explanation", bar.args.last
70
- end
71
-
72
- def test_disable_warning_blockwise
73
- assert_no_warn(DeprecatedMethodWarning) do
74
- DeprecatedMethodWarning.disable do
75
- Foo.new.method_using_structured_warning_style_api
76
- end
77
- end
78
- end
79
-
80
- def test_disable_warning_globally
81
- assert_no_warn(DeprecatedMethodWarning) do
82
- DeprecatedMethodWarning.disable
83
- Foo.new.method_using_structured_warning_style_api
84
- DeprecatedMethodWarning.enable
85
- end
86
- end
87
-
88
- def test_last_but_not_least
89
- assert_warn(DeprecatedMethodWarning) do
90
- DeprecatedMethodWarning.disable do
91
- DeprecatedMethodWarning.enable do
92
- Foo.new.method_using_structured_warning_style_api
93
- end
94
- end
95
- end
96
- end
97
-
98
- def test_warnings_have_an_inheritance_relation
99
- assert_no_warn(DeprecatedMethodWarning) do
100
- DeprecationWarning.disable do
101
- Foo.new.method_using_structured_warning_style_api
102
- end
103
- end
104
- assert_warn(DeprecationWarning) do
105
- Foo.new.method_using_structured_warning_style_api
106
- end
107
- end
108
-
109
- def test_warn_writes_to_stderr
110
- require "stringio"
111
- old_stderr = $stderr
112
- $stderr = io = ::StringIO.new
113
- Foo.new.method_using_structured_warning_style_api
114
- $stderr = old_stderr
115
- io.rewind
116
- assert io.length > 0
117
- end
118
-
119
- def test_warning_is_default_warning
120
- assert_warn(Warning) do
121
- warn "my warning"
122
- end
123
- end
124
-
125
- def test_passing_a_warning_instance_works_as_well
126
- assert_warn(Warning) do
127
- warn Warning.new("my warning")
128
- end
129
- end
130
-
131
- def test_passing_anything_but_a_subclass_or_instance_of_warning_will_work
132
- assert_warn(Warning) do
133
- warn nil
134
- end
135
- end
136
-
137
- def test_passing_an_additional_message_to_assert_no_warn
138
- assert_no_warn(Warning, "with message") do
139
- warn Warning, "with another message"
140
- end
141
- end
142
-
143
- def test_passing_an_additional_message_to_assert_warn
144
- assert_warn(Warning, "with message") do
145
- warn Warning, "with message"
146
- end
147
- end
148
-
149
- def test_passing_a_warning_instance_to_assert_warn
150
- assert_warn(Warning.new("with message")) do
151
- warn Warning, "with message"
152
- end
153
- end
154
-
155
- def test_passing_a_warning_instance_to_assert_no_warn
156
- assert_no_warn(Warning.new("with message")) do
157
- warn DeprecationWarning, "with another message"
158
- end
159
- assert_no_warn(Warning.new) do
160
- warn Warning, "with message"
161
- end
162
- end
163
-
164
- def test_passing_a_regexp_as_message_to_assert_warn
165
- assert_warn(Warning, /message/) do
166
- warn DeprecationWarning, "with another message"
167
- end
168
- end
169
-
170
- def test_passing_a_regexp_as_message_to_no_assert_warn
171
- assert_no_warn(Warning, /message/) do
172
- warn DeprecationWarning
173
- end
174
- end
175
-
176
- def test_passing_a_message_only_to_assert_warn
177
- assert_warn("I told you so") do
178
- warn "I told you so"
179
- end
180
- end
181
-
182
- def test_warnings_may_not_be_disabled_twice
183
- assert_equal [Warning], Warning.disable
184
- assert_equal [Warning], Warning.disable
185
- assert_equal [], Warning.enable
186
- end
187
- end