haml 3.1.8 → 3.2.0.alpha.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of haml might be problematic. Click here for more details.

Files changed (148) hide show
  1. data/CONTRIBUTING +1 -1
  2. data/README.md +2 -2
  3. data/REVISION +1 -1
  4. data/Rakefile +16 -41
  5. data/VERSION +1 -1
  6. data/VERSION_NAME +1 -1
  7. data/lib/haml/buffer.rb +1 -5
  8. data/lib/haml/compiler.rb +7 -8
  9. data/lib/haml/exec.rb +1 -1
  10. data/lib/haml/helpers.rb +3 -5
  11. data/lib/haml/helpers/action_view_mods.rb +5 -21
  12. data/lib/haml/parser.rb +1 -1
  13. data/lib/haml/template.rb +1 -3
  14. data/lib/haml/util.rb +1 -1
  15. data/test/haml/engine_test.rb +12 -51
  16. data/test/haml/helper_test.rb +8 -25
  17. data/test/haml/html2haml_test.rb +1 -1
  18. data/test/haml/results/whitespace_handling.xhtml +50 -46
  19. data/test/haml/template_test.rb +2 -28
  20. data/test/haml/templates/partial_layout.haml +1 -4
  21. data/test/linked_rails.rb +4 -4
  22. data/vendor/sass/VERSION +1 -1
  23. data/vendor/sass/doc-src/SASS_CHANGELOG.md +2 -115
  24. data/vendor/sass/doc-src/SASS_REFERENCE.md +4 -12
  25. data/vendor/sass/lib/sass.rb +0 -1
  26. data/vendor/sass/lib/sass/cache_stores/base.rb +1 -3
  27. data/vendor/sass/lib/sass/cache_stores/filesystem.rb +0 -2
  28. data/vendor/sass/lib/sass/css.rb +1 -2
  29. data/vendor/sass/lib/sass/engine.rb +23 -39
  30. data/vendor/sass/lib/sass/environment.rb +0 -11
  31. data/vendor/sass/lib/sass/exec.rb +1 -14
  32. data/vendor/sass/lib/sass/importers/base.rb +1 -2
  33. data/vendor/sass/lib/sass/importers/filesystem.rb +13 -18
  34. data/vendor/sass/lib/sass/less.rb +2 -2
  35. data/vendor/sass/lib/sass/plugin.rb +8 -4
  36. data/vendor/sass/lib/sass/plugin/compiler.rb +17 -42
  37. data/vendor/sass/lib/sass/plugin/configuration.rb +2 -0
  38. data/vendor/sass/lib/sass/railtie.rb +1 -1
  39. data/vendor/sass/lib/sass/script/funcall.rb +1 -14
  40. data/vendor/sass/lib/sass/script/functions.rb +1 -44
  41. data/vendor/sass/lib/sass/script/interpolation.rb +0 -9
  42. data/vendor/sass/lib/sass/script/lexer.rb +1 -6
  43. data/vendor/sass/lib/sass/script/list.rb +0 -7
  44. data/vendor/sass/lib/sass/script/literal.rb +0 -5
  45. data/vendor/sass/lib/sass/script/node.rb +0 -8
  46. data/vendor/sass/lib/sass/script/number.rb +5 -28
  47. data/vendor/sass/lib/sass/script/operation.rb +0 -8
  48. data/vendor/sass/lib/sass/script/parser.rb +5 -12
  49. data/vendor/sass/lib/sass/script/string_interpolation.rb +0 -9
  50. data/vendor/sass/lib/sass/script/unary_operation.rb +0 -7
  51. data/vendor/sass/lib/sass/script/variable.rb +0 -5
  52. data/vendor/sass/lib/sass/scss/parser.rb +38 -78
  53. data/vendor/sass/lib/sass/scss/rx.rb +1 -2
  54. data/vendor/sass/lib/sass/scss/static_parser.rb +2 -2
  55. data/vendor/sass/lib/sass/shared.rb +1 -1
  56. data/vendor/sass/lib/sass/tree/comment_node.rb +11 -24
  57. data/vendor/sass/lib/sass/tree/debug_node.rb +1 -1
  58. data/vendor/sass/lib/sass/tree/each_node.rb +1 -1
  59. data/vendor/sass/lib/sass/tree/extend_node.rb +1 -1
  60. data/vendor/sass/lib/sass/tree/for_node.rb +2 -2
  61. data/vendor/sass/lib/sass/tree/function_node.rb +1 -1
  62. data/vendor/sass/lib/sass/tree/if_node.rb +14 -1
  63. data/vendor/sass/lib/sass/tree/mixin_def_node.rb +1 -1
  64. data/vendor/sass/lib/sass/tree/mixin_node.rb +2 -2
  65. data/vendor/sass/lib/sass/tree/node.rb +5 -2
  66. data/vendor/sass/lib/sass/tree/prop_node.rb +9 -2
  67. data/vendor/sass/lib/sass/tree/return_node.rb +1 -1
  68. data/vendor/sass/lib/sass/tree/rule_node.rb +2 -9
  69. data/vendor/sass/lib/sass/tree/variable_node.rb +1 -1
  70. data/vendor/sass/lib/sass/tree/visitors/check_nesting.rb +18 -17
  71. data/vendor/sass/lib/sass/tree/visitors/convert.rb +5 -10
  72. data/vendor/sass/lib/sass/tree/visitors/perform.rb +19 -50
  73. data/vendor/sass/lib/sass/tree/visitors/to_css.rb +15 -9
  74. data/vendor/sass/lib/sass/tree/warn_node.rb +1 -1
  75. data/vendor/sass/lib/sass/tree/while_node.rb +1 -1
  76. data/vendor/sass/lib/sass/util.rb +6 -58
  77. data/vendor/sass/sass.gemspec +1 -2
  78. data/vendor/sass/test/sass/cache_test.rb +0 -15
  79. data/vendor/sass/test/sass/conversion_test.rb +6 -2
  80. data/vendor/sass/test/sass/css2sass_test.rb +0 -9
  81. data/vendor/sass/test/sass/engine_test.rb +26 -124
  82. data/vendor/sass/test/sass/functions_test.rb +0 -13
  83. data/vendor/sass/test/sass/importer_test.rb +0 -110
  84. data/vendor/sass/test/sass/plugin_test.rb +13 -16
  85. data/vendor/sass/test/sass/script_conversion_test.rb +0 -2
  86. data/vendor/sass/test/sass/script_test.rb +0 -18
  87. data/vendor/sass/test/sass/scss/css_test.rb +1 -7
  88. data/vendor/sass/test/sass/scss/scss_test.rb +13 -37
  89. data/vendor/sass/test/sass/test_helper.rb +1 -1
  90. data/vendor/sass/test/sass/util_test.rb +0 -12
  91. data/vendor/sass/vendor/fssm/LICENSE +1 -1
  92. data/vendor/sass/vendor/fssm/README.markdown +27 -55
  93. data/vendor/sass/vendor/fssm/Rakefile +54 -6
  94. data/vendor/sass/vendor/fssm/VERSION.yml +5 -0
  95. data/vendor/sass/vendor/fssm/example.rb +3 -6
  96. data/vendor/sass/vendor/fssm/fssm.gemspec +70 -17
  97. data/vendor/sass/vendor/fssm/lib/fssm.rb +3 -7
  98. data/vendor/sass/vendor/fssm/lib/fssm/backends/fsevents.rb +1 -1
  99. data/vendor/sass/vendor/fssm/lib/fssm/backends/inotify.rb +2 -2
  100. data/vendor/sass/vendor/fssm/lib/fssm/backends/polling.rb +2 -2
  101. data/vendor/sass/vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb +10 -10
  102. data/vendor/sass/vendor/fssm/lib/fssm/monitor.rb +9 -19
  103. data/vendor/sass/vendor/fssm/lib/fssm/path.rb +21 -24
  104. data/vendor/sass/vendor/fssm/lib/fssm/pathname.rb +479 -13
  105. data/vendor/sass/vendor/fssm/lib/fssm/state/directory.rb +11 -29
  106. data/vendor/sass/vendor/fssm/lib/fssm/state/file.rb +1 -1
  107. data/vendor/sass/vendor/fssm/lib/fssm/support.rb +12 -41
  108. data/vendor/sass/vendor/fssm/lib/fssm/tree.rb +6 -6
  109. data/vendor/sass/vendor/fssm/profile/prof-cache.rb +3 -3
  110. data/vendor/sass/vendor/fssm/profile/prof-pathname.rb +7 -7
  111. data/vendor/sass/vendor/fssm/spec/path_spec.rb +15 -36
  112. data/vendor/sass/vendor/fssm/spec/spec_helper.rb +6 -6
  113. metadata +78 -125
  114. data/lib/haml/helpers/rails_323_textarea_fix.rb +0 -41
  115. data/test/gemfiles/Gemfile.rails-2.0.x +0 -8
  116. data/test/gemfiles/Gemfile.rails-2.0.x.lock +0 -38
  117. data/test/gemfiles/Gemfile.rails-2.1.x +0 -8
  118. data/test/gemfiles/Gemfile.rails-2.1.x.lock +0 -38
  119. data/test/gemfiles/Gemfile.rails-2.2.x +0 -8
  120. data/test/gemfiles/Gemfile.rails-2.2.x.lock +0 -38
  121. data/test/gemfiles/Gemfile.rails-2.3.x +0 -8
  122. data/test/gemfiles/Gemfile.rails-2.3.x.lock +0 -40
  123. data/test/gemfiles/Gemfile.rails-3.0.x +0 -8
  124. data/test/gemfiles/Gemfile.rails-3.0.x.lock +0 -85
  125. data/test/gemfiles/Gemfile.rails-3.1.x +0 -8
  126. data/test/gemfiles/Gemfile.rails-3.1.x.lock +0 -97
  127. data/test/gemfiles/Gemfile.rails-3.2.x +0 -8
  128. data/test/gemfiles/Gemfile.rails-3.2.x.lock +0 -95
  129. data/test/gemfiles/Gemfile.rails-xss-2.3.x +0 -9
  130. data/test/gemfiles/Gemfile.rails-xss-2.3.x.lock +0 -42
  131. data/vendor/sass/lib/sass/logger.rb +0 -15
  132. data/vendor/sass/lib/sass/logger/base.rb +0 -32
  133. data/vendor/sass/lib/sass/logger/log_level.rb +0 -49
  134. data/vendor/sass/lib/sass/tree/visitors/deep_copy.rb +0 -87
  135. data/vendor/sass/lib/sass/tree/visitors/set_options.rb +0 -97
  136. data/vendor/sass/test/Gemfile +0 -4
  137. data/vendor/sass/test/Gemfile.lock +0 -19
  138. data/vendor/sass/test/sass/fixtures/test_staleness_check_across_importers.css +0 -1
  139. data/vendor/sass/test/sass/fixtures/test_staleness_check_across_importers.scss +0 -1
  140. data/vendor/sass/test/sass/logger_test.rb +0 -58
  141. data/vendor/sass/test/sass/templates/bork5.sass +0 -3
  142. data/vendor/sass/test/sass/templates/nested_bork5.sass +0 -2
  143. data/vendor/sass/vendor/fssm/Gemfile +0 -3
  144. data/vendor/sass/vendor/fssm/lib/fssm/backends/rbfsevent.rb +0 -42
  145. data/vendor/sass/vendor/fssm/lib/fssm/version.rb +0 -3
  146. data/vendor/sass/vendor/fssm/profile/prof-pathname-rubinius.rb +0 -35
  147. data/vendor/sass/vendor/fssm/spec/count_down_latch.rb +0 -151
  148. data/vendor/sass/vendor/fssm/spec/monitor_spec.rb +0 -202
@@ -1,58 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.dirname(__FILE__) + '/../test_helper'
3
- require 'pathname'
4
-
5
- class LoggerTest < Test::Unit::TestCase
6
-
7
- class InterceptedLogger < Sass::Logger::Base
8
-
9
- attr_accessor :messages
10
-
11
- def initialize(*args)
12
- super
13
- self.messages = []
14
- end
15
-
16
- def reset!
17
- self.messages = []
18
- end
19
-
20
- def _log(*args)
21
- messages << [args]
22
- end
23
-
24
- end
25
-
26
- def test_global_sass_logger_instance_exists
27
- assert Sass.logger.respond_to?(:warn)
28
- end
29
-
30
- def test_log_level_orders
31
- logged_levels = {
32
- :trace => [ [], [:trace, :debug, :info, :warn, :error]],
33
- :debug => [ [:trace], [:debug, :info, :warn, :error]],
34
- :info => [ [:trace, :debug], [:info, :warn, :error]],
35
- :warn => [ [:trace, :debug, :info], [:warn, :error]],
36
- :error => [ [:trace, :debug, :info, :warn], [:error]]
37
- }
38
- logged_levels.each do |level, (should_not_be_logged, should_be_logged)|
39
- logger = Sass::Logger::Base.new(level)
40
- should_not_be_logged.each do |should_level|
41
- assert !logger.logging_level?(should_level)
42
- end
43
- should_be_logged.each do |should_level|
44
- assert logger.logging_level?(should_level)
45
- end
46
- end
47
- end
48
-
49
- def test_logging_can_be_disabled
50
- logger = InterceptedLogger.new
51
- logger.error("message #1")
52
- assert_equal 1, logger.messages.size
53
- logger.reset!
54
- logger.disabled = true
55
- logger.error("message #2")
56
- assert_equal 0, logger.messages.size
57
- end
58
- end
@@ -1,3 +0,0 @@
1
- foo
2
- @function bar($a)
3
- @return $a
@@ -1,2 +0,0 @@
1
-
2
- @import bork5
@@ -1,3 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- gemspec
@@ -1,42 +0,0 @@
1
- module FSSM::Backends
2
- class RBFSEvent
3
- def initialize
4
- @handlers = []
5
- end
6
-
7
- def add_handler(handler, preload=true)
8
- @handlers << handler
9
- handler.refresh(nil, true) if preload
10
- end
11
-
12
- def run
13
- begin
14
- @fsevent = FSEvent.new
15
- @fsevent.watch(temporary_multipath_hack) do |paths|
16
- paths.each do |path|
17
- temporary_multipath_handler(path)
18
- end
19
- end
20
- @fsevent.run
21
- rescue Interrupt
22
- @fsevent.stop
23
- end
24
- end
25
-
26
- def temporary_multipath_handler(path)
27
- @handlers.each do |handler|
28
- handler_path = File.join(handler.path.to_s, "")
29
- if path.start_with?(handler_path)
30
- handler.refresh(path)
31
- break
32
- end
33
- end
34
- end
35
-
36
- def temporary_multipath_hack
37
- @handlers = @handlers.sort {|x,y| y.path.to_pathname.segments.length <=> x.path.to_pathname.segments.length}
38
- return @handlers.map {|handler| handler.path.to_s}
39
- end
40
-
41
- end
42
- end
@@ -1,3 +0,0 @@
1
- module FSSM
2
- VERSION = "0.2.7"
3
- end
@@ -1,35 +0,0 @@
1
- $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
-
3
- require 'pathname'
4
-
5
- $test_path = "#{Pathname.new('..').expand_path}"
6
- $iterations = 900000
7
-
8
- if ARGV.first == 'native'
9
- puts "Using native Pathname"
10
-
11
- class Pathname
12
- # original segments implementation I was using with
13
- # the plain ruby Pathname library.
14
- def segments
15
- prefix, names = split_names(@path)
16
- names.unshift(prefix) unless prefix.empty?
17
- names.shift if names[0] == '.'
18
- names
19
- end
20
- end
21
-
22
- $iterations.times do |num|
23
- p = ::Pathname.new($test_path)
24
- segments = p.segments
25
- end
26
- else
27
- puts "Using FSSM::Pathname"
28
-
29
- require 'fssm'
30
-
31
- $iterations.times do |num|
32
- p = FSSM::Pathname.new($test_path)
33
- segments = p.segments
34
- end
35
- end
@@ -1,151 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # coding: utf-8
3
-
4
- require 'thread'
5
-
6
- class CountDownLatch
7
- attr_reader :count
8
-
9
- def initialize(to)
10
- @count = to.to_i
11
- raise ArgumentError, "cannot count down from negative integer" unless @count >= 0
12
- @lock = Mutex.new
13
- @condition = ConditionVariable.new
14
- end
15
-
16
- def count_down
17
- @lock.synchronize do
18
- @count -= 1 if @count > 0
19
- @condition.broadcast if @count == 0
20
- end
21
- end
22
-
23
- def wait
24
- @lock.synchronize do
25
- @condition.wait(@lock) while @count > 0
26
- end
27
- end
28
- end
29
-
30
- if $0 == __FILE__
31
- require 'test/unit'
32
-
33
- class CountDownLatchTest < Test::Unit::TestCase
34
- def test_requires_positive_count
35
- assert_raise(ArgumentError) { CountDownLatch.new(-1) }
36
- end
37
-
38
- def test_basic_latch_usage
39
- latch = CountDownLatch.new(1)
40
- name = "foo"
41
- Thread.new do
42
- name = "bar"
43
- latch.count_down
44
- end
45
- latch.wait
46
- assert_equal(0, latch.count)
47
- assert_equal("bar", name)
48
- end
49
-
50
- def test_basic_latch_usage_inverted
51
- latch = CountDownLatch.new(1)
52
- name = "foo"
53
- Thread.new do
54
- latch.wait
55
- assert_equal(0, latch.count)
56
- assert_equal("bar", name)
57
- end
58
- name = "bar"
59
- latch.count_down
60
- end
61
-
62
- def test_count_down_from_zero_skips_wait
63
- latch = CountDownLatch.new(0)
64
- latch.wait
65
- assert_equal(0, latch.count)
66
- end
67
-
68
- def test_count_down_twice_with_thread
69
- latch = CountDownLatch.new(2)
70
- name = "foo"
71
- Thread.new do
72
- latch.count_down
73
- name = "bar"
74
- latch.count_down
75
- end
76
- latch.wait
77
- assert_equal(0, latch.count)
78
- assert_equal("bar", name)
79
- end
80
-
81
- def test_count_down_twice_with_two_parallel_threads
82
- latch = CountDownLatch.new(2)
83
- name = "foo"
84
- Thread.new { latch.count_down }
85
- Thread.new do
86
- name = "bar"
87
- latch.count_down
88
- end
89
- latch.wait
90
- assert_equal(0, latch.count)
91
- assert_equal("bar", name)
92
- end
93
-
94
- def test_count_down_twice_with_two_chained_threads
95
- latch = CountDownLatch.new(2)
96
- name = "foo"
97
- Thread.new do
98
- latch.count_down
99
- Thread.new do
100
- name = "bar"
101
- latch.count_down
102
- end
103
- end
104
- latch.wait
105
- assert_equal(0, latch.count)
106
- assert_equal("bar", name)
107
- end
108
-
109
- def test_count_down_with_multiple_waiters
110
- proceed_latch = CountDownLatch.new(2)
111
- check_latch = CountDownLatch.new(2)
112
- results = {}
113
- Thread.new do
114
- proceed_latch.wait
115
- results[:first] = 1
116
- check_latch.count_down
117
- end
118
- Thread.new do
119
- proceed_latch.wait
120
- results[:second] = 2
121
- check_latch.count_down
122
- end
123
- assert_equal({}, results)
124
- proceed_latch.count_down
125
- proceed_latch.count_down
126
- check_latch.wait
127
- assert_equal(0, proceed_latch.count)
128
- assert_equal(0, check_latch.count)
129
- assert_equal({:first => 1, :second => 2}, results)
130
- end
131
-
132
- def test_interleaved_latches
133
- change_1_latch = CountDownLatch.new(1)
134
- check_latch = CountDownLatch.new(1)
135
- change_2_latch = CountDownLatch.new(1)
136
- name = "foo"
137
- Thread.new do
138
- name = "bar"
139
- change_1_latch.count_down
140
- check_latch.wait
141
- name = "man"
142
- change_2_latch.count_down
143
- end
144
- change_1_latch.wait
145
- assert_equal("bar", name)
146
- check_latch.count_down
147
- change_2_latch.wait
148
- assert_equal("man", name)
149
- end
150
- end
151
- end
@@ -1,202 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'count_down_latch'
4
- require 'fileutils'
5
- require 'tempfile'
6
-
7
- module FSSM::MonitorSpecHelpers
8
- def create_tmp_dir
9
- @tmp_dir = FSSM::Pathname.for(Dir.mktmpdir).realpath.to_s
10
- FileUtils.cp_r File.join(File.dirname(__FILE__), 'root'), @tmp_dir
11
- # Because git does not track empty directories, create one ourselves.
12
- FileUtils.mkdir_p @tmp_dir + '/root/yawn'
13
- @tmp_dir
14
- end
15
-
16
- def remove_tmp_dir
17
- FileUtils.remove_entry @tmp_dir
18
- end
19
-
20
- def create_handler(type, latch)
21
- lambda do |*args|
22
- @handler_results[type] << args
23
- latch.count_down
24
- end
25
- end
26
-
27
- def run_monitor(num_events_to_expect=0, options={})
28
- event_latch = CountDownLatch.new(num_events_to_expect)
29
- @handler_results = Hash.new { |hash, key| hash[key] = [] }
30
- thread = Thread.new do
31
- monitor = FSSM::Monitor.new(options)
32
- monitor.path(@tmp_dir) do |p|
33
- p.create(&create_handler(:create, event_latch))
34
- p.update(&create_handler(:update, event_latch))
35
- p.delete(&create_handler(:delete, event_latch))
36
- end
37
- monitor.run
38
- end
39
- sleep 1 # give time for monitor to start up
40
- yield if block_given?
41
- event_latch.wait
42
- thread.kill
43
- end
44
- end
45
-
46
- describe "The File System State Monitor" do
47
- describe "monitor" do
48
- include FSSM::MonitorSpecHelpers
49
-
50
- before do
51
- create_tmp_dir
52
- end
53
-
54
- after do
55
- remove_tmp_dir
56
- end
57
-
58
- describe "with default options" do
59
- it "should call create callback upon file creation" do
60
- run_monitor(1) do
61
- file = @tmp_dir + "/newfile.rb"
62
- File.exists?(file).should be_false
63
- FileUtils.touch file
64
- end
65
- @handler_results[:create].should == [[@tmp_dir, 'newfile.rb']]
66
- end
67
-
68
- it "should call update callback upon file modification" do
69
- run_monitor(1) do
70
- FileUtils.touch @tmp_dir + '/root/file.rb'
71
- end
72
- @handler_results[:update].should == [[@tmp_dir, 'root/file.rb']]
73
- end
74
-
75
- it "should call delete callback upon file deletion" do
76
- run_monitor(1) do
77
- FileUtils.rm @tmp_dir + "/root/file.rb"
78
- end
79
- @handler_results[:delete].should == [[@tmp_dir, 'root/file.rb']]
80
- end
81
-
82
- it "should call create and delete callbacks upon file renaming in the same directory" do
83
- run_monitor(2) do
84
- FileUtils.mv @tmp_dir + "/root/file.rb", @tmp_dir + "/root/old_file.rb"
85
- end
86
- @handler_results[:create].should == [[@tmp_dir, 'root/old_file.rb']]
87
- @handler_results[:delete].should == [[@tmp_dir, 'root/file.rb']]
88
- @handler_results[:update].should == []
89
- end
90
-
91
- it "should call create and delete callbacks upon file moving to another directory" do
92
- run_monitor(2) do
93
- FileUtils.mv @tmp_dir + "/root/file.rb", @tmp_dir + "/old_file.rb"
94
- end
95
- @handler_results[:create].should == [[@tmp_dir, 'old_file.rb']]
96
- @handler_results[:delete].should == [[@tmp_dir, 'root/file.rb']]
97
- @handler_results[:update].should == []
98
- end
99
-
100
- it "should not call callbacks upon directory operations" do
101
- run_monitor do
102
- FileUtils.mkdir @tmp_dir + "/another_yawn"
103
- FileUtils.rmdir @tmp_dir + "/root/yawn"
104
- end
105
- @handler_results[:create].should == []
106
- @handler_results[:delete].should == []
107
- end
108
- end
109
-
110
- describe "when configured to consider files and directories" do
111
- it "should call create callback upon directory creation" do
112
- run_monitor(1, :directories => true) do
113
- FileUtils.mkdir @tmp_dir + "/another_yawn"
114
- end
115
- @handler_results[:create].should include([@tmp_dir, 'another_yawn', :directory])
116
- end
117
-
118
- it "should call delete callback upon directory deletion" do
119
- run_monitor(1, :directories => true) do
120
- FileUtils.rmdir @tmp_dir + "/root/yawn"
121
- end
122
- @handler_results[:delete].should include([@tmp_dir, 'root/yawn', :directory])
123
- end
124
-
125
- it "should call create, update, and delete callbacks upon directory renaming in the same directory" do
126
- run_monitor(3, :directories => true) do
127
- FileUtils.mv @tmp_dir + "/root/yawn", @tmp_dir + "/root/old_yawn"
128
- end
129
- @handler_results[:create].should include([@tmp_dir, 'root/old_yawn', :directory])
130
- @handler_results[:delete].should include([@tmp_dir, 'root/yawn', :directory])
131
- @handler_results[:update].should include([@tmp_dir, 'root', :directory])
132
- end
133
-
134
- it "should call create, update, and delete callbacks upon directory moving to another directory" do
135
- run_monitor(3, :directories => true) do
136
- FileUtils.mv @tmp_dir + "/root/yawn", @tmp_dir + "/old_yawn"
137
- end
138
- @handler_results[:create].should include([@tmp_dir, 'old_yawn', :directory])
139
- @handler_results[:delete].should include([@tmp_dir, 'root/yawn', :directory])
140
- @handler_results[:update].should include([@tmp_dir, 'root', :directory])
141
- end
142
-
143
- it "should call create, update, and delete callbacks upon file renaming in the same directory" do
144
- run_monitor(3, :directories => true) do
145
- FileUtils.mv @tmp_dir + "/root/file.rb", @tmp_dir + "/root/old_file.rb"
146
- end
147
- @handler_results[:create].should include([@tmp_dir, 'root/old_file.rb', :file])
148
- @handler_results[:delete].should include([@tmp_dir, 'root/file.rb', :file])
149
- @handler_results[:update].should include([@tmp_dir, 'root', :directory])
150
- end
151
-
152
- it "should call create, update, and delete callbacks upon file moving to another directory" do
153
- run_monitor(3, :directories => true) do
154
- FileUtils.mv @tmp_dir + "/root/file.rb", @tmp_dir + "/old_file.rb"
155
- end
156
- @handler_results[:create].should include([@tmp_dir, 'old_file.rb', :file])
157
- @handler_results[:delete].should include([@tmp_dir, 'root/file.rb', :file])
158
- @handler_results[:update].should include([@tmp_dir, 'root', :directory])
159
- end
160
-
161
- it "should call delete callbacks upon directory structure deletion, in reverse order" do
162
- expected_delete_events = [
163
- ['root/yawn', :directory],
164
- ['root/moo/cow.txt', :file],
165
- ['root/moo', :directory],
166
- ['root/file.yml', :file],
167
- ['root/file.rb', :file],
168
- ['root/file.css', :file],
169
- ['root/duck/quack.txt', :file],
170
- ['root/duck', :directory],
171
- ['root', :directory]
172
- ]
173
- run_monitor(expected_delete_events.size, :directories => true) do
174
- FileUtils.rm_rf @tmp_dir + '/.'
175
- end
176
- @handler_results[:create].should == []
177
- @handler_results[:delete].should == expected_delete_events.map { |(file, type)| [@tmp_dir, file, type] }
178
- @handler_results[:update].should == []
179
- end
180
-
181
- it "should call create callbacks upon directory structure creation, in order" do
182
- expected_create_events = [
183
- ['new_root', :directory],
184
- ['new_root/duck', :directory],
185
- ['new_root/duck/quack.txt', :file],
186
- ['new_root/file.css', :file],
187
- ['new_root/file.rb', :file],
188
- ['new_root/file.yml', :file],
189
- ['new_root/moo', :directory],
190
- ['new_root/moo/cow.txt', :file],
191
- ['new_root/yawn', :directory]
192
- ]
193
- run_monitor(expected_create_events.size, :directories => true) do
194
- FileUtils.cp_r @tmp_dir + '/root/.', @tmp_dir + '/new_root'
195
- end
196
- @handler_results[:create].should == expected_create_events.map { |(file, type)| [@tmp_dir, file, type] }
197
- @handler_results[:delete].should == []
198
- @handler_results[:update].should == []
199
- end
200
- end
201
- end
202
- end