nanoc 4.4.4 → 4.4.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/Gemfile.lock +9 -8
  4. data/NEWS.md +10 -0
  5. data/lib/nanoc/base.rb +0 -3
  6. data/lib/nanoc/base/contracts_support.rb +55 -2
  7. data/lib/nanoc/base/core_ext/array.rb +0 -2
  8. data/lib/nanoc/base/core_ext/hash.rb +0 -2
  9. data/lib/nanoc/base/entities.rb +1 -0
  10. data/lib/nanoc/base/entities/context.rb +1 -4
  11. data/lib/nanoc/base/entities/directed_graph.rb +0 -10
  12. data/lib/nanoc/base/entities/identifiable_collection.rb +1 -2
  13. data/lib/nanoc/base/entities/identifier.rb +6 -8
  14. data/lib/nanoc/base/entities/item_rep.rb +12 -18
  15. data/lib/nanoc/base/{compilation → entities}/outdatedness_reasons.rb +0 -0
  16. data/lib/nanoc/base/entities/site.rb +3 -19
  17. data/lib/nanoc/base/errors.rb +9 -0
  18. data/lib/nanoc/base/memoization.rb +0 -2
  19. data/lib/nanoc/base/repos/checksum_store.rb +21 -14
  20. data/lib/nanoc/base/repos/compiled_content_cache.rb +11 -15
  21. data/lib/nanoc/base/repos/dependency_store.rb +8 -27
  22. data/lib/nanoc/base/services.rb +3 -0
  23. data/lib/nanoc/base/services/compiler.rb +379 -0
  24. data/lib/nanoc/base/services/compiler_loader.rb +3 -1
  25. data/lib/nanoc/base/services/executor.rb +27 -41
  26. data/lib/nanoc/base/services/item_rep_builder.rb +4 -0
  27. data/lib/nanoc/base/services/item_rep_writer.rb +5 -2
  28. data/lib/nanoc/base/{compilation → services}/outdatedness_checker.rb +1 -1
  29. data/lib/nanoc/base/views/post_compile_item_rep_view.rb +1 -1
  30. data/lib/nanoc/base/views/view_context.rb +3 -3
  31. data/lib/nanoc/checking/check.rb +1 -1
  32. data/lib/nanoc/checking/checks/external_links.rb +1 -1
  33. data/lib/nanoc/cli.rb +0 -4
  34. data/lib/nanoc/cli/commands/compile.rb +2 -2
  35. data/lib/nanoc/cli/commands/shell.rb +1 -1
  36. data/lib/nanoc/data_sources/filesystem.rb +10 -20
  37. data/lib/nanoc/data_sources/filesystem/errors.rb +55 -0
  38. data/lib/nanoc/filters/asciidoc.rb +0 -2
  39. data/lib/nanoc/filters/coffeescript.rb +0 -2
  40. data/lib/nanoc/filters/colorize_syntax.rb +0 -2
  41. data/lib/nanoc/filters/handlebars.rb +0 -2
  42. data/lib/nanoc/filters/mustache.rb +0 -2
  43. data/lib/nanoc/filters/redcarpet.rb +0 -4
  44. data/lib/nanoc/filters/slim.rb +0 -2
  45. data/lib/nanoc/filters/typogruby.rb +0 -2
  46. data/lib/nanoc/filters/xsl.rb +0 -2
  47. data/lib/nanoc/filters/yui_compressor.rb +0 -2
  48. data/lib/nanoc/helpers/capturing.rb +22 -19
  49. data/lib/nanoc/helpers/link_to.rb +3 -7
  50. data/lib/nanoc/helpers/rendering.rb +1 -1
  51. data/lib/nanoc/rule_dsl/action_provider.rb +2 -2
  52. data/lib/nanoc/rule_dsl/compiler_dsl.rb +0 -2
  53. data/lib/nanoc/rule_dsl/recording_executor.rb +6 -6
  54. data/lib/nanoc/rule_dsl/rule.rb +0 -2
  55. data/lib/nanoc/rule_dsl/rule_context.rb +3 -3
  56. data/lib/nanoc/rule_dsl/rule_memory_calculator.rb +5 -5
  57. data/lib/nanoc/spec.rb +1 -1
  58. data/lib/nanoc/version.rb +1 -1
  59. data/test/base/test_compiler.rb +3 -1
  60. data/test/base/test_dependency_tracker.rb +0 -19
  61. data/test/base/test_item_rep.rb +3 -0
  62. data/test/cli/commands/test_create_site.rb +1 -1
  63. data/test/data_sources/test_filesystem.rb +5 -5
  64. data/test/filters/test_coffeescript.rb +2 -0
  65. data/test/filters/test_handlebars.rb +4 -0
  66. data/test/filters/test_uglify_js.rb +4 -0
  67. data/test/filters/test_xsl.rb +1 -1
  68. data/test/helper.rb +6 -0
  69. data/test/helpers/test_capturing.rb +6 -1
  70. data/test/helpers/test_xml_sitemap.rb +1 -1
  71. metadata +6 -6
  72. data/lib/nanoc/base/compilation/compiler.rb +0 -295
  73. data/test/base/test_checksum_store.rb +0 -28
@@ -1,6 +1,4 @@
1
1
  module Nanoc::Filters
2
- # @since 3.3.0
3
- #
4
2
  # @api private
5
3
  class CoffeeScript < Nanoc::Filter
6
4
  requires 'coffee-script'
@@ -250,8 +250,6 @@ module Nanoc::Filters
250
250
 
251
251
  # Runs the content through [Highlight](http://www.andre-simon.de/doku/highlight/en/highlight.html).
252
252
  #
253
- # @since 3.2.0
254
- #
255
253
  # @param [String] code The code to colorize
256
254
  #
257
255
  # @param [String] language The language the code is written in
@@ -1,6 +1,4 @@
1
1
  module Nanoc::Filters
2
- # @since 3.4.0
3
- #
4
2
  # @api private
5
3
  class Handlebars < Nanoc::Filter
6
4
  requires 'handlebars'
@@ -1,6 +1,4 @@
1
1
  module Nanoc::Filters
2
- # @since 3.2.0
3
- #
4
2
  # @api private
5
3
  class Mustache < Nanoc::Filter
6
4
  requires 'mustache'
@@ -1,6 +1,4 @@
1
1
  module Nanoc::Filters
2
- # @since 3.2.0
3
- #
4
2
  # @api private
5
3
  class Redcarpet < Nanoc::Filter
6
4
  requires 'redcarpet'
@@ -23,8 +21,6 @@ module Nanoc::Filters
23
21
  #
24
22
  # For Redcarpet 2.x
25
23
  #
26
- # @since 3.2.4
27
- #
28
24
  # @param [String] content The content to filter
29
25
  #
30
26
  # @option params [Hash] :options ({}) A list of options to pass on to
@@ -1,6 +1,4 @@
1
1
  module Nanoc::Filters
2
- # @since 3.2.0
3
- #
4
2
  # @api private
5
3
  class Slim < Nanoc::Filter
6
4
  requires 'slim'
@@ -1,6 +1,4 @@
1
1
  module Nanoc::Filters
2
- # @since 3.2.0
3
- #
4
2
  # @api private
5
3
  class Typogruby < Nanoc::Filter
6
4
  requires 'typogruby'
@@ -1,6 +1,4 @@
1
1
  module Nanoc::Filters
2
- # @since 3.3.0
3
- #
4
2
  # @api private
5
3
  class XSL < Nanoc::Filter
6
4
  requires 'nokogiri'
@@ -1,6 +1,4 @@
1
1
  module Nanoc::Filters
2
- # @since 3.3.0
3
- #
4
2
  # @api private
5
3
  class YUICompressor < Nanoc::Filter
6
4
  requires 'yuicompressor'
@@ -27,30 +27,32 @@ module Nanoc::Helpers
27
27
  existing_behavior = params.fetch(:existing, :error)
28
28
 
29
29
  # Capture
30
- content = capture(&block)
30
+ content_string = capture(&block)
31
31
 
32
- # Prepare for store
32
+ # Get existing contents and prep for store
33
33
  snapshot_contents = @item.reps[:default].unwrap.snapshot_contents
34
34
  capture_name = "__capture_#{name}".to_sym
35
- case existing_behavior
36
- when :overwrite
37
- snapshot_contents[capture_name] = ''
38
- when :append
39
- snapshot_contents[capture_name] ||= ''
40
- when :error
41
- if snapshot_contents[capture_name] && snapshot_contents[capture_name] != content
42
- # FIXME: get proper exception
43
- raise "a capture named #{name.inspect} for #{@item.identifier} already exists"
35
+ old_content_string =
36
+ case existing_behavior
37
+ when :overwrite
38
+ ''
39
+ when :append
40
+ c = snapshot_contents[capture_name]
41
+ c ? c.string : ''
42
+ when :error
43
+ if snapshot_contents[capture_name] && snapshot_contents[capture_name].string != content_string
44
+ # FIXME: get proper exception
45
+ raise "a capture named #{name.inspect} for #{@item.identifier} already exists"
46
+ else
47
+ ''
48
+ end
44
49
  else
45
- snapshot_contents[capture_name] = ''
50
+ raise ArgumentError, 'expected :existing_behavior param to #content_for to be one of ' \
51
+ ":overwrite, :append, or :error, but #{existing_behavior.inspect} was given"
46
52
  end
47
- else
48
- raise ArgumentError, 'expected :existing_behavior param to #content_for to be one of ' \
49
- ":overwrite, :append, or :error, but #{existing_behavior.inspect} was given"
50
- end
51
53
 
52
54
  # Store
53
- snapshot_contents[capture_name] << content
55
+ snapshot_contents[capture_name] = Nanoc::Int::TextualContent.new(old_content_string + content_string)
54
56
  else # Get content
55
57
  if args.size != 2
56
58
  raise ArgumentError, 'expected 2 arguments (the item ' \
@@ -72,7 +74,8 @@ module Nanoc::Helpers
72
74
  end
73
75
  end
74
76
 
75
- rep.snapshot_contents["__capture_#{name}".to_sym]
77
+ content = rep.snapshot_contents["__capture_#{name}".to_sym]
78
+ content ? content.string : nil
76
79
  end
77
80
  end
78
81
 
@@ -93,7 +96,7 @@ module Nanoc::Helpers
93
96
 
94
97
  # Depending on how the filter outputs, the result might be a
95
98
  # single string or an array of strings (slim outputs the latter).
96
- erbout_addition = erbout_addition.join if erbout_addition.is_a? Array
99
+ erbout_addition = erbout_addition.join('') if erbout_addition.is_a? Array
97
100
 
98
101
  # Done.
99
102
  erbout_addition
@@ -78,15 +78,11 @@ module Nanoc::Helpers
78
78
 
79
79
  # Calculate the relative path (method depends on whether destination is
80
80
  # a directory or not).
81
- relative_path =
82
- if src_path.to_s[-1, 1] != '/'
83
- dst_path.relative_path_from(src_path.dirname).to_s
84
- else
85
- dst_path.relative_path_from(src_path).to_s
86
- end
81
+ from = src_path.to_s.end_with?('/') ? src_path : src_path.dirname
82
+ relative_path = dst_path.relative_path_from(from).to_s
87
83
 
88
84
  # Add trailing slash if necessary
89
- if dst_path.to_s[-1, 1] == '/'
85
+ if dst_path.to_s.end_with?('/')
90
86
  relative_path << '/'
91
87
  end
92
88
 
@@ -37,7 +37,7 @@ module Nanoc::Helpers
37
37
  }.merge(other_assigns)
38
38
 
39
39
  # Get filter name
40
- filter_name, filter_args = *@config._context.compiler.filter_name_and_args_for_layout(layout)
40
+ filter_name, filter_args = *@config._context.compilation_context.filter_name_and_args_for_layout(layout)
41
41
  raise Nanoc::Int::Errors::CannotDetermineFilter.new(layout.identifier) if filter_name.nil?
42
42
 
43
43
  # Get filter class
@@ -55,7 +55,7 @@ module Nanoc::RuleDSL
55
55
  reps: reps,
56
56
  items: site.items,
57
57
  dependency_tracker: dependency_tracker,
58
- compiler: site.compiler,
58
+ compilation_context: site.compiler.compilation_context,
59
59
  )
60
60
  ctx = new_postprocessor_context(site, view_context)
61
61
 
@@ -72,7 +72,7 @@ module Nanoc::RuleDSL
72
72
  reps: nil,
73
73
  items: nil,
74
74
  dependency_tracker: dependency_tracker,
75
- compiler: nil,
75
+ compilation_context: nil,
76
76
  )
77
77
 
78
78
  Nanoc::Int::Context.new(
@@ -159,8 +159,6 @@ module Nanoc::RuleDSL
159
159
  #
160
160
  # @return [void]
161
161
  #
162
- # @since 3.2.0
163
- #
164
162
  # @example Copying the `/foo/` item as-is
165
163
  #
166
164
  # passthrough '/foo/'
@@ -19,11 +19,11 @@ module Nanoc
19
19
  @rule_memory = Nanoc::Int::RuleMemory.new(item_rep)
20
20
  end
21
21
 
22
- def filter(_rep, filter_name, filter_args = {})
22
+ def filter(filter_name, filter_args = {})
23
23
  @rule_memory.add_filter(filter_name, filter_args)
24
24
  end
25
25
 
26
- def layout(_rep, layout_identifier, extra_filter_args = {})
26
+ def layout(layout_identifier, extra_filter_args = {})
27
27
  unless layout_identifier.is_a?(String)
28
28
  raise ArgumentError.new('The layout passed to #layout must be a string')
29
29
  end
@@ -36,9 +36,9 @@ module Nanoc
36
36
  end
37
37
 
38
38
  Pathlike = C::Maybe[C::Or[String, Nanoc::Identifier]]
39
- contract C::Any, Symbol, C::KeywordArgs[path: C::Optional[Pathlike], final: C::Optional[C::Bool]] => nil
40
- def snapshot(rep, snapshot_name, final: true, path: nil)
41
- pathlike = final ? (path || basic_path_from_rules_for(rep, snapshot_name)) : nil
39
+ contract Symbol, C::KeywordArgs[path: C::Optional[Pathlike], final: C::Optional[C::Bool]] => nil
40
+ def snapshot(snapshot_name, final: true, path: nil)
41
+ pathlike = final ? (path || basic_path_from_rules_for(@item_rep, snapshot_name)) : nil
42
42
  actual_path = pathlike && pathlike.to_s
43
43
  @rule_memory.add_snapshot(snapshot_name, final, actual_path)
44
44
  nil
@@ -50,7 +50,7 @@ module Nanoc
50
50
  return nil if routing_rule.nil?
51
51
 
52
52
  dependency_tracker = Nanoc::Int::DependencyTracker::Null.new
53
- view_context = Nanoc::ViewContext.new(reps: nil, items: nil, dependency_tracker: dependency_tracker, compiler: nil)
53
+ view_context = Nanoc::ViewContext.new(reps: nil, items: nil, dependency_tracker: dependency_tracker, compilation_context: nil)
54
54
  basic_path = routing_rule.apply_to(rep, executor: nil, site: @site, view_context: view_context)
55
55
  if basic_path && !basic_path.start_with?('/')
56
56
  raise PathWithoutInitialSlashError.new(rep, basic_path)
@@ -9,8 +9,6 @@ module Nanoc::RuleDSL
9
9
 
10
10
  # @return [Symbol] The name of the snapshot this rule will apply to.
11
11
  # Ignored for compilation rules, but used for routing rules.
12
- #
13
- # @since 3.2.0
14
12
  attr_reader :snapshot_name
15
13
 
16
14
  attr_reader :pattern
@@ -35,7 +35,7 @@ module Nanoc::RuleDSL
35
35
  #
36
36
  # @return [void]
37
37
  def filter(filter_name, filter_args = {})
38
- @_executor.filter(rep.unwrap, filter_name, filter_args)
38
+ @_executor.filter(filter_name, filter_args)
39
39
  end
40
40
 
41
41
  # Layouts the current representation (calls {Nanoc::Int::ItemRep#layout} with
@@ -48,7 +48,7 @@ module Nanoc::RuleDSL
48
48
  #
49
49
  # @return [void]
50
50
  def layout(layout_identifier, extra_filter_args = nil)
51
- @_executor.layout(rep.unwrap, layout_identifier, extra_filter_args)
51
+ @_executor.layout(layout_identifier, extra_filter_args)
52
52
  end
53
53
 
54
54
  # Creates a snapshot of the current compiled item content. Calls
@@ -62,7 +62,7 @@ module Nanoc::RuleDSL
62
62
  #
63
63
  # @return [void]
64
64
  def snapshot(snapshot_name, path: nil)
65
- @_executor.snapshot(rep.unwrap, snapshot_name, path: path)
65
+ @_executor.snapshot(snapshot_name, path: path)
66
66
  end
67
67
 
68
68
  # Creates a snapshot named :last the current compiled item content, with
@@ -66,7 +66,7 @@ module Nanoc::RuleDSL
66
66
  # @return [Nanoc::Int::RuleMemory]
67
67
  def new_rule_memory_for_rep(rep)
68
68
  dependency_tracker = Nanoc::Int::DependencyTracker::Null.new
69
- view_context = @site.compiler.create_view_context(dependency_tracker)
69
+ view_context = @site.compiler.compilation_context.create_view_context(dependency_tracker)
70
70
 
71
71
  executor = Nanoc::RuleDSL::RecordingExecutor.new(rep, @rules_collection, @site)
72
72
  rule = @rules_collection.compilation_rule_for(rep)
@@ -75,14 +75,14 @@ module Nanoc::RuleDSL
75
75
  raise NoRuleMemoryForItemRepException.new(rep)
76
76
  end
77
77
 
78
- executor.snapshot(rep, :raw)
79
- executor.snapshot(rep, :pre, final: false)
78
+ executor.snapshot(:raw)
79
+ executor.snapshot(:pre, final: false)
80
80
  rule.apply_to(rep, executor: executor, site: @site, view_context: view_context)
81
81
  if executor.rule_memory.any_layouts?
82
- executor.snapshot(rep, :post)
82
+ executor.snapshot(:post)
83
83
  end
84
84
  unless executor.rule_memory.snapshot_actions.any? { |sa| sa.snapshot_name == :last }
85
- executor.snapshot(rep, :last)
85
+ executor.snapshot(:last)
86
86
  end
87
87
 
88
88
  executor.rule_memory
@@ -118,7 +118,7 @@ module Nanoc
118
118
  reps: @reps,
119
119
  items: @items,
120
120
  dependency_tracker: @dependency_tracker,
121
- compiler: new_site.compiler,
121
+ compilation_context: new_site.compiler.compilation_context,
122
122
  )
123
123
  end
124
124
 
@@ -1,4 +1,4 @@
1
1
  module Nanoc
2
2
  # The current Nanoc version.
3
- VERSION = '4.4.4'.freeze
3
+ VERSION = '4.4.5'.freeze
4
4
  end
@@ -11,9 +11,11 @@ class Nanoc::Int::CompilerTest < Nanoc::TestCase
11
11
 
12
12
  action_provider = Nanoc::Int::ActionProvider.named(:rule_dsl).for(site)
13
13
 
14
+ objects = site.items.to_a + site.layouts.to_a
15
+
14
16
  params = {
15
17
  compiled_content_cache: Nanoc::Int::CompiledContentCache.new(items: site.items),
16
- checksum_store: Nanoc::Int::ChecksumStore.new(site: site),
18
+ checksum_store: Nanoc::Int::ChecksumStore.new(site: site, objects: objects),
17
19
  rule_memory_store: Nanoc::Int::RuleMemoryStore.new,
18
20
  dependency_store: Nanoc::Int::DependencyStore.new(
19
21
  site.items.to_a + site.layouts.to_a,
@@ -87,25 +87,6 @@ class Nanoc::Int::DependencyTrackerTest < Nanoc::TestCase
87
87
  assert_contains_exactly [items[1]], store.objects_causing_outdatedness_of(items[0])
88
88
  end
89
89
 
90
- def test_objects_outdated_due_to
91
- # Mock items
92
- items = [
93
- Nanoc::Int::Item.new('a', {}, '/a.md'),
94
- Nanoc::Int::Item.new('b', {}, '/b.md'),
95
- Nanoc::Int::Item.new('c', {}, '/c.md'),
96
- ]
97
-
98
- # Create
99
- store = Nanoc::Int::DependencyStore.new(items)
100
-
101
- # Record some dependencies
102
- store.record_dependency(items[0], items[1])
103
- store.record_dependency(items[1], items[2])
104
-
105
- # Verify dependencies
106
- assert_contains_exactly [items[0]], store.objects_outdated_due_to(items[1])
107
- end
108
-
109
90
  def test_store_graph_and_load_graph_simple
110
91
  # Mock items
111
92
  items = [
@@ -139,7 +139,10 @@ class Nanoc::Int::ItemRepTest < Nanoc::TestCase
139
139
  def test_access_compiled_content_of_binary_item
140
140
  content = Nanoc::Int::BinaryContent.new(File.expand_path('content/somefile.dat'))
141
141
  item = Nanoc::Int::Item.new(content, {}, '/somefile/')
142
+
142
143
  item_rep = Nanoc::Int::ItemRep.new(item, :foo)
144
+ item_rep.expects(:compiled?).returns(true)
145
+
143
146
  assert_raises(Nanoc::Int::Errors::CannotGetCompiledContentOfBinaryItem) do
144
147
  item_rep.compiled_content
145
148
  end
@@ -75,7 +75,7 @@ class Nanoc::CLI::Commands::CreateSiteTest < Nanoc::TestCase
75
75
  FileUtils.cd('foo') do
76
76
  # Try with encoding = default encoding = utf-8
77
77
  File.open('content/index.html', 'w') { |io| io.write('Hello ' + 0xD6.chr + "!\n") }
78
- exception = assert_raises(RuntimeError) do
78
+ exception = assert_raises(Nanoc::DataSources::Filesystem::Errors::InvalidEncoding) do
79
79
  Nanoc::Int::SiteLoader.new.new_from_cwd
80
80
  end
81
81
  assert_equal 'Could not read content/index.html because the file is not valid UTF-8.', exception.message
@@ -135,7 +135,7 @@ class Nanoc::DataSources::FilesystemTest < Nanoc::TestCase
135
135
  File.open('foo/stuff.dat', 'w') { |io| io.write('random binary data') }
136
136
 
137
137
  # Load
138
- assert_raises(RuntimeError) do
138
+ assert_raises(Nanoc::DataSources::Filesystem::Errors::BinaryLayout) do
139
139
  data_source.send(:load_objects, 'foo', Nanoc::Int::Layout)
140
140
  end
141
141
  end
@@ -642,7 +642,7 @@ class Nanoc::DataSources::FilesystemTest < Nanoc::TestCase
642
642
  end
643
643
 
644
644
  # Check
645
- assert_raises RuntimeError do
645
+ assert_raises(Nanoc::DataSources::Filesystem::Errors::MultipleContentFiles) do
646
646
  data_source.send(:all_split_files_in, '.')
647
647
  end
648
648
  end
@@ -829,7 +829,7 @@ class Nanoc::DataSources::FilesystemTest < Nanoc::TestCase
829
829
  data_source = Nanoc::DataSources::Filesystem.new(nil, nil, nil, nil)
830
830
 
831
831
  # Parse it
832
- assert_raises(RuntimeError) do
832
+ assert_raises(Nanoc::DataSources::Filesystem::Errors::InvalidFormat) do
833
833
  data_source.instance_eval { parse('test.html', nil) }
834
834
  end
835
835
  end
@@ -981,7 +981,7 @@ class Nanoc::DataSources::FilesystemTest < Nanoc::TestCase
981
981
 
982
982
  data_source = Nanoc::DataSources::Filesystem.new(nil, nil, nil, nil)
983
983
 
984
- assert_raises(Nanoc::DataSources::Filesystem::InvalidMetadataError) do
984
+ assert_raises(Nanoc::DataSources::Filesystem::Errors::InvalidMetadata) do
985
985
  data_source.instance_eval { parse('test.html', nil) }
986
986
  end
987
987
  end
@@ -992,7 +992,7 @@ class Nanoc::DataSources::FilesystemTest < Nanoc::TestCase
992
992
 
993
993
  data_source = Nanoc::DataSources::Filesystem.new(nil, nil, nil, nil)
994
994
 
995
- assert_raises(Nanoc::DataSources::Filesystem::InvalidMetadataError) do
995
+ assert_raises(Nanoc::DataSources::Filesystem::Errors::InvalidMetadata) do
996
996
  data_source.instance_eval { parse('test.html', 'test.yaml') }
997
997
  end
998
998
  end
@@ -1,5 +1,7 @@
1
1
  class Nanoc::Filters::CoffeeScriptTest < Nanoc::TestCase
2
2
  def test_filter
3
+ skip_v8_on_ruby24
4
+
3
5
  if_have 'coffee-script' do
4
6
  # Create filter
5
7
  filter = ::Nanoc::Filters::CoffeeScript.new
@@ -1,5 +1,7 @@
1
1
  class Nanoc::Filters::HandlebarsTest < Nanoc::TestCase
2
2
  def test_filter
3
+ skip_v8_on_ruby24
4
+
3
5
  if_have 'handlebars' do
4
6
  # Create data
5
7
  item = Nanoc::Int::Item.new(
@@ -34,6 +36,8 @@ class Nanoc::Filters::HandlebarsTest < Nanoc::TestCase
34
36
  end
35
37
 
36
38
  def test_filter_without_layout
39
+ skip_v8_on_ruby24
40
+
37
41
  if_have 'handlebars' do
38
42
  # Create data
39
43
  item = Nanoc::Int::Item.new(