activeldap 0.10.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. data/CHANGES +6 -30
  2. data/README +4 -2
  3. data/Rakefile +7 -0
  4. data/data/locale/en/LC_MESSAGES/active-ldap.mo +0 -0
  5. data/data/locale/ja/LC_MESSAGES/active-ldap.mo +0 -0
  6. data/examples/al-admin/po/en/al-admin.po +3 -3
  7. data/examples/al-admin/po/ja/al-admin.po +3 -3
  8. data/examples/al-admin/po/nl/al-admin.po +3 -3
  9. data/lib/active_ldap/adapter/base.rb +0 -2
  10. data/lib/active_ldap/base.rb +4 -2
  11. data/lib/active_ldap/get_text_support.rb +3 -11
  12. data/lib/active_ldap/operations.rb +1 -0
  13. data/lib/active_ldap/schema/syntaxes.rb +5 -3
  14. data/lib/active_ldap/validations.rb +25 -15
  15. data/lib/active_ldap.rb +1 -1
  16. data/po/en/active-ldap.po +1 -1
  17. data/po/ja/active-ldap.po +1 -1
  18. data/rails/plugin/active_ldap/init.rb +1 -1
  19. data/test/run-test.rb +2 -0
  20. data/test/test_base.rb +63 -1
  21. data/test/test_syntax.rb +3 -2
  22. data/test-unit-ext/NEWS.en +28 -0
  23. data/test-unit-ext/NEWS.ja +28 -0
  24. data/test-unit-ext/README.en +247 -0
  25. data/test-unit-ext/README.ja +246 -0
  26. data/test-unit-ext/Rakefile +111 -0
  27. data/{test → test-unit-ext/lib}/test-unit-ext/always-show-result.rb +0 -0
  28. data/test-unit-ext/lib/test-unit-ext/assertions.rb +40 -0
  29. data/test-unit-ext/lib/test-unit-ext/attributes.rb +129 -0
  30. data/{test → test-unit-ext/lib}/test-unit-ext/backtrace-filter.rb +0 -0
  31. data/test-unit-ext/lib/test-unit-ext/color.rb +59 -0
  32. data/test-unit-ext/lib/test-unit-ext/colorized-runner.rb +111 -0
  33. data/test-unit-ext/lib/test-unit-ext/diff.rb +516 -0
  34. data/{test → test-unit-ext/lib}/test-unit-ext/long-display-for-emacs.rb +0 -0
  35. data/test-unit-ext/lib/test-unit-ext/notification.rb +79 -0
  36. data/test-unit-ext/lib/test-unit-ext/omission.rb +96 -0
  37. data/test-unit-ext/lib/test-unit-ext/pending.rb +97 -0
  38. data/{test → test-unit-ext/lib}/test-unit-ext/priority.rb +25 -53
  39. data/test-unit-ext/lib/test-unit-ext/version.rb +3 -0
  40. data/test-unit-ext/lib/test-unit-ext/xml-report.rb +224 -0
  41. data/test-unit-ext/lib/test-unit-ext.rb +16 -0
  42. data/test-unit-ext/misc/rd2html.rb +42 -0
  43. data/test-unit-ext/test/run-test.rb +14 -0
  44. data/test-unit-ext/test/test_attributes.rb +139 -0
  45. data/test-unit-ext/test/test_color.rb +39 -0
  46. data/test-unit-ext/test/test_diff.rb +475 -0
  47. data/test-unit-ext/test/test_notification.rb +32 -0
  48. data/test-unit-ext/test/test_omission.rb +64 -0
  49. data/test-unit-ext/test/test_pending.rb +64 -0
  50. data/test-unit-ext/test/test_priority.rb +88 -0
  51. data/test-unit-ext/test/test_xml_report.rb +161 -0
  52. metadata +34 -7
  53. data/test/test-unit-ext.rb +0 -4
@@ -0,0 +1,129 @@
1
+ require "test/unit"
2
+
3
+ module Test
4
+ module Unit
5
+ class TestCase
6
+ class << self
7
+ alias_method :method_added_without_attributes, :method_added
8
+ def method_added(name)
9
+ method_added_without_attributes(name)
10
+ if defined?(@current_attributes)
11
+ attributes = {}
12
+ kept_attributes = {}
13
+ @current_attributes.each do |attribute_name, attribute|
14
+ attributes[attribute_name] = attribute[:value]
15
+ kept_attributes[attribute_name] = attribute if attribute[:keep]
16
+ end
17
+ set_attributes(name, attributes)
18
+ @current_attributes = kept_attributes
19
+ end
20
+ end
21
+
22
+ def attribute(name, value, options={}, *tests)
23
+ unless options.is_a?(Hash)
24
+ tests << options
25
+ options = {}
26
+ end
27
+ @current_attributes ||= {}
28
+ if tests.empty?
29
+ @current_attributes[name] = options.merge(:value => value)
30
+ else
31
+ tests.each do |test|
32
+ set_attribute(test, {name => value})
33
+ end
34
+ end
35
+ end
36
+
37
+ def bug(value, *tests)
38
+ attribute(:bug, value, *tests)
39
+ end
40
+
41
+ def set_attributes(test_name, attributes)
42
+ return if attributes.empty?
43
+ test_name = normalize_test_name(test_name)
44
+ @attributes ||= {}
45
+ @attributes[test_name] ||= {}
46
+ @attributes[test_name] = @attributes[test_name].merge(attributes)
47
+ end
48
+
49
+ def attributes(test_name)
50
+ test_name = normalize_test_name(test_name)
51
+ @attributes ||= {}
52
+ @attributes[test_name]
53
+ end
54
+
55
+ private
56
+ def normalize_test_name(test_name)
57
+ "test_#{test_name.to_s.sub(/^test_/, '')}"
58
+ end
59
+ end
60
+
61
+ alias_method :run_without_attributes, :run
62
+ def run(result, &block)
63
+ run_without_attributes(TestResultAttributesSupport.new(result, self),
64
+ &block)
65
+ end
66
+
67
+ def attributes
68
+ self.class.attributes(@method_name) || {}
69
+ end
70
+ end
71
+
72
+ class TestResultAttributesSupport
73
+ def initialize(result, test)
74
+ @result = result
75
+ @test = test
76
+ end
77
+
78
+ def add_failure(failure)
79
+ failure.attributes = @test.attributes
80
+ method_missing(:add_failure, failure)
81
+ end
82
+
83
+ def add_error(error)
84
+ error.attributes = @test.attributes
85
+ method_missing(:add_error, error)
86
+ end
87
+
88
+ def method_missing(name, *args, &block)
89
+ @result.send(name, *args, &block)
90
+ end
91
+ end
92
+
93
+ module AttributesFormatter
94
+ private
95
+ def format_attributes
96
+ return '' if attributes.empty?
97
+ attributes.collect do |key, value|
98
+ " #{key}: #{value}"
99
+ end.join("\n") + "\n"
100
+ end
101
+ end
102
+
103
+ class Failure
104
+ include AttributesFormatter
105
+
106
+ attr_accessor :attributes
107
+
108
+ alias_method :long_display_without_attributes, :long_display
109
+ def long_display
110
+ test_name_re = Regexp.escape(@test_name)
111
+ long_display_without_attributes.sub(/(^#{test_name_re}.*\n)/,
112
+ "\\1#{format_attributes}")
113
+ end
114
+ end
115
+
116
+ class Error
117
+ include AttributesFormatter
118
+
119
+ attr_accessor :attributes
120
+
121
+ alias_method :long_display_without_attributes, :long_display
122
+ def long_display
123
+ test_name_re = Regexp.escape(@test_name)
124
+ long_display_without_attributes.sub(/(^#{test_name_re}:\n)/,
125
+ "\\1#{format_attributes}")
126
+ end
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,59 @@
1
+ module Test
2
+ class Color
3
+ NAMES = ["black", "red", "green", "yellow",
4
+ "blue", "magenta", "cyan", "white"]
5
+ def initialize(name, options={})
6
+ @name = name
7
+ @foreground = options[:foreground]
8
+ @foreground = true if @foreground.nil?
9
+ @intensity = options[:intensity]
10
+ @bold = options[:bold]
11
+ @italic = options[:italic]
12
+ @underline = options[:underline]
13
+ end
14
+
15
+ def sequence
16
+ sequence = []
17
+ if @name == "none"
18
+ elsif @name == "reset"
19
+ sequence << "0"
20
+ else
21
+ foreground_parameter = @foreground ? 3 : 4
22
+ foreground_parameter += 6 if @intensity
23
+ sequence << "#{foreground_parameter}#{NAMES.index(@name)}"
24
+ end
25
+ sequence << "1" if @bold
26
+ sequence << "3" if @italic
27
+ sequence << "4" if @underline
28
+ sequence
29
+ end
30
+
31
+ def escape_sequence
32
+ "\e[#{sequence.join(';')}m"
33
+ end
34
+
35
+ def +(other)
36
+ MixColor.new([self, other])
37
+ end
38
+ end
39
+
40
+ class MixColor
41
+ def initialize(colors)
42
+ @colors = colors
43
+ end
44
+
45
+ def sequence
46
+ @colors.inject([]) do |result, color|
47
+ result + color.sequence
48
+ end
49
+ end
50
+
51
+ def escape_sequence
52
+ "\e[#{sequence.join(';')}m"
53
+ end
54
+
55
+ def +(other)
56
+ self.class.new([self, other])
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,111 @@
1
+ require "test/unit/ui/console/testrunner"
2
+
3
+ module Test
4
+ module Unit
5
+ module UI
6
+ module Console
7
+ class ColorizedTestRunner < TestRunner
8
+ extend TestRunnerUtilities
9
+
10
+ SCHEMES = {
11
+ :default => {
12
+ "success" => Color.new("green", :bold => true),
13
+ "failure" => Color.new("red", :bold => true),
14
+ "pending" => Color.new("magenta", :bold => true),
15
+ "omission" => Color.new("blue", :bold => true),
16
+ "notification" => Color.new("cyan", :bold => true),
17
+ "error" => Color.new("yellow", :bold => true),
18
+ },
19
+ }
20
+
21
+ def initialize(suite, output_level=NORMAL, io=STDOUT)
22
+ super
23
+ @use_color = guess_color_availability
24
+ @color_scheme = SCHEMES[:default]
25
+ @reset_color = Color.new("reset")
26
+ end
27
+
28
+ private
29
+ def add_fault(fault)
30
+ @faults << fault
31
+ output_single_with_color(fault.single_character_display,
32
+ fault_color(fault),
33
+ PROGRESS_ONLY)
34
+ @already_outputted = true
35
+ end
36
+
37
+ def test_finished(name)
38
+ unless @already_outputted
39
+ output_single_with_color(".",
40
+ @color_scheme["success"],
41
+ PROGRESS_ONLY)
42
+ end
43
+ nl(VERBOSE)
44
+ @already_outputted = false
45
+ end
46
+
47
+ def finished(elapsed_time)
48
+ nl
49
+ output("Finished in #{elapsed_time} seconds.")
50
+ @faults.each_with_index do |fault, index|
51
+ nl
52
+ output_single("%3d) " % (index + 1))
53
+ output_with_color(fault.long_display, fault_color(fault))
54
+ end
55
+ nl
56
+ output_with_color(@result.to_s, result_color)
57
+ end
58
+
59
+ def fault_color(fault)
60
+ @color_scheme[fault.class.name.split(/::/).last.downcase]
61
+ end
62
+
63
+ def result_color
64
+ if @result.passed?
65
+ if @result.pending_count > 0
66
+ @color_scheme["pending"]
67
+ elsif @result.notification_count > 0
68
+ @color_scheme["notification"]
69
+ else
70
+ @color_scheme["success"]
71
+ end
72
+ elsif @result.error_count > 0
73
+ @color_scheme["error"]
74
+ elsif @result.failure_count > 0
75
+ @color_scheme["failure"]
76
+ end
77
+ end
78
+
79
+ def output_with_color(message, color=nil, level=NORMAL)
80
+ return unless output?(level)
81
+ output_single_with_color(message, color, level)
82
+ @io.puts
83
+ end
84
+
85
+ def output_single_with_color(message, color=nil, level=NORMAL)
86
+ return unless output?(level)
87
+ if @use_color and color
88
+ message = "%s%s%s" % [color.escape_sequence,
89
+ message,
90
+ @reset_color.escape_sequence]
91
+ end
92
+ @io.write(message)
93
+ @io.flush
94
+ end
95
+
96
+ def guess_color_availability
97
+ return false unless @io.tty?
98
+ term = ENV["TERM"]
99
+ return true if term and (/term\z/ =~ term or term == "screen")
100
+ return true if ENV["EMACS"] == "t"
101
+ false
102
+ end
103
+ end
104
+ end
105
+ end
106
+
107
+ AutoRunner::RUNNERS[:console] = Proc.new do
108
+ Test::Unit::UI::Console::ColorizedTestRunner
109
+ end
110
+ end
111
+ end