nanoc 4.8.5 → 4.8.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +41 -48
- data/NEWS.md +6 -0
- data/lib/nanoc.rb +2 -1
- data/lib/nanoc/base/entities/context.rb +2 -2
- data/lib/nanoc/base/entities/identifiable_collection.rb +5 -0
- data/lib/nanoc/base/entities/item_rep.rb +2 -4
- data/lib/nanoc/base/entities/pattern.rb +1 -1
- data/lib/nanoc/base/entities/props.rb +1 -1
- data/lib/nanoc/base/entities/site.rb +1 -1
- data/lib/nanoc/base/repos/compiled_content_cache.rb +1 -2
- data/lib/nanoc/base/repos/dependency_store.rb +3 -3
- data/lib/nanoc/base/services/checksummer.rb +1 -1
- data/lib/nanoc/base/views/mixins/mutable_document_view_mixin.rb +12 -0
- data/lib/nanoc/checking/checks/internal_links.rb +1 -1
- data/lib/nanoc/cli/cleaning_stream.rb +2 -2
- data/lib/nanoc/cli/commands/deploy.rb +1 -1
- data/lib/nanoc/cli/commands/show-data.rb +1 -1
- data/lib/nanoc/cli/commands/show-rules.rb +1 -1
- data/lib/nanoc/cli/error_handler.rb +2 -2
- data/lib/nanoc/deploying/deployers/fog.rb +1 -1
- data/lib/nanoc/filters/colorize_syntax.rb +1 -1
- data/lib/nanoc/filters/colorize_syntax/colorizers.rb +1 -1
- data/lib/nanoc/filters/sass.rb +1 -1
- data/lib/nanoc/helpers/blogging.rb +1 -1
- data/lib/nanoc/helpers/capturing.rb +2 -2
- data/lib/nanoc/helpers/link_to.rb +1 -1
- data/lib/nanoc/helpers/xml_sitemap.rb +2 -2
- data/lib/nanoc/rule_dsl/recording_executor.rb +1 -1
- data/lib/nanoc/spec.rb +1 -1
- data/lib/nanoc/telemetry/table.rb +1 -1
- data/lib/nanoc/version.rb +1 -1
- data/nanoc.gemspec +1 -0
- data/spec/nanoc/base/entities/code_snippet_spec.rb +2 -2
- data/spec/nanoc/base/entities/identifiable_collection_spec.rb +6 -0
- data/spec/nanoc/base/entities/lazy_value_spec.rb +1 -1
- data/spec/nanoc/base/feature_spec.rb +2 -2
- data/spec/nanoc/base/services/outdatedness_rules_spec.rb +1 -1
- data/spec/nanoc/base/views/mutable_document_view_spec.rb +81 -0
- data/spec/nanoc/deploying/git_spec.rb +2 -2
- data/spec/nanoc/helpers/capturing_spec.rb +4 -4
- data/spec/nanoc/helpers/html_escape_spec.rb +1 -1
- data/spec/nanoc/regressions/gh_1216_spec.rb +91 -0
- data/test/base/test_code_snippet.rb +0 -12
- data/test/base/test_item_array.rb +1 -1
- data/test/deploying/test_git.rb +6 -6
- data/test/filters/test_erb.rb +4 -4
- data/test/filters/test_erubi.rb +4 -4
- data/test/filters/test_erubis.rb +4 -4
- data/test/helpers/test_blogging.rb +4 -16
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d488b6ffac3f6bdcd6e411cb5d84625842b373c
|
4
|
+
data.tar.gz: 0c5c0e6bf848cf835f89cb36919059ac5e5486a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 83b4a5c841d3a75d164372d26577efb52075a9a5a1fed0f8de70741db075087a9808b15758f1603267bf41053aa26a0304f915e8028141f9decbd80846dd250a
|
7
|
+
data.tar.gz: 4f1570f8ebdba18d4acccd1b8775fed99138d1536a7a1851eef55be082bb009dda31173fb68fac93489727946556d61104a4c9047e3471ceae577bebb8e2f724
|
data/.rubocop.yml
CHANGED
@@ -5,22 +5,9 @@ AllCops:
|
|
5
5
|
DisplayCopNames: true
|
6
6
|
|
7
7
|
# We use filenames such as “create-site.rb” that translate to method names.
|
8
|
-
FileName:
|
8
|
+
Naming/FileName:
|
9
9
|
Exclude:
|
10
10
|
- 'lib/nanoc/cli/commands/*.rb'
|
11
|
-
- 'Appraisals'
|
12
|
-
|
13
|
-
# A common pattern in tests is to define anonymous classes in which methods are defined, which trips
|
14
|
-
# up Rubocop’s nested method definition cop.
|
15
|
-
Lint/NestedMethodDefinition:
|
16
|
-
Exclude:
|
17
|
-
- 'test/**/*.rb'
|
18
|
-
- 'spec/**/*.rb'
|
19
|
-
|
20
|
-
# This is used in tests, to verify the effect of state-changing functions.
|
21
|
-
Style/GlobalVars:
|
22
|
-
Exclude:
|
23
|
-
- 'test/**/*.rb'
|
24
11
|
|
25
12
|
Style/TrailingCommaInArguments:
|
26
13
|
EnforcedStyleForMultiline: comma
|
@@ -28,40 +15,47 @@ Style/TrailingCommaInArguments:
|
|
28
15
|
Style/TrailingCommaInLiteral:
|
29
16
|
EnforcedStyleForMultiline: comma
|
30
17
|
|
18
|
+
Layout/IndentArray:
|
19
|
+
EnforcedStyle: consistent
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
# ----- CONFIGURED (exceptions for tests) -----
|
24
|
+
|
25
|
+
# This breaks RSpec on occasion, e.g. `expect { subject }.not_to change { foo }`,
|
26
|
+
# and generally does not provide useful warnings
|
27
|
+
Lint/AmbiguousBlockAssociation:
|
28
|
+
Exclude:
|
29
|
+
- 'spec/**/*.rb'
|
30
|
+
|
31
31
|
# `rescue nil` is useful in specs where the exception is not important, but
|
32
32
|
# the size effects are.
|
33
33
|
Style/RescueModifier:
|
34
34
|
Exclude:
|
35
35
|
- 'spec/**/*.rb'
|
36
36
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
Lint/DuplicateMethods:
|
37
|
+
# A common pattern in tests is to define anonymous classes in which methods are defined, which trips
|
38
|
+
# up Rubocop’s nested method definition cop.
|
39
|
+
Lint/NestedMethodDefinition:
|
41
40
|
Exclude:
|
42
|
-
- 'test
|
43
|
-
- 'spec
|
41
|
+
- 'test/**/*.rb'
|
42
|
+
- 'spec/**/*.rb'
|
44
43
|
|
45
|
-
# This
|
46
|
-
|
47
|
-
|
44
|
+
# This is used in tests, to verify the effect of state-changing functions.
|
45
|
+
Style/GlobalVars:
|
46
|
+
Exclude:
|
47
|
+
- 'test/**/*.rb'
|
48
48
|
|
49
|
-
Layout/IndentHeredoc:
|
50
|
-
EnforcedStyle: squiggly
|
51
49
|
|
52
|
-
# This breaks RSpec on occasion, e.g. `expect { subject }.not_to change { foo }`,
|
53
|
-
# and generally does not provide useful warnings
|
54
|
-
Lint/AmbiguousBlockAssociation:
|
55
|
-
Enabled: false
|
56
50
|
|
57
51
|
# ----- TO ENABLE LATER -----
|
58
52
|
|
59
53
|
# Valid cops, but fixing the offenses they report is non-trivial.
|
60
54
|
|
61
|
-
RegexpLiteral:
|
55
|
+
Style/RegexpLiteral:
|
62
56
|
Enabled: false
|
63
57
|
|
64
|
-
ClassAndModuleChildren:
|
58
|
+
Style/ClassAndModuleChildren:
|
65
59
|
Enabled: false
|
66
60
|
|
67
61
|
Style/EmptyElse:
|
@@ -70,12 +64,11 @@ Style/EmptyElse:
|
|
70
64
|
Style/Next:
|
71
65
|
Enabled: false
|
72
66
|
|
67
|
+
# This cop is broken (#4731, #4745)
|
68
|
+
Style/SafeNavigation:
|
69
|
+
Enabled: false
|
73
70
|
|
74
|
-
|
75
|
-
# ----- DISABLED (hard) -----
|
76
|
-
|
77
|
-
# Rubocop trips up on this.
|
78
|
-
Layout/LeadingCommentSpace:
|
71
|
+
Naming/HeredocDelimiterNaming:
|
79
72
|
Enabled: false
|
80
73
|
|
81
74
|
|
@@ -98,6 +91,7 @@ Security/Eval:
|
|
98
91
|
- 'lib/nanoc/filters/erubi.rb'
|
99
92
|
|
100
93
|
|
94
|
+
|
101
95
|
# ----- DISABLED (metrics) -----
|
102
96
|
|
103
97
|
# Cops for metrics are disabled because they should not cause tests to fail.
|
@@ -138,37 +132,36 @@ Metrics/PerceivedComplexity:
|
|
138
132
|
|
139
133
|
# We should embrace UTF-8, not avoid it. Since the Encoding cop is enabled,
|
140
134
|
# there’s no point in enforcing ASCII comments.
|
141
|
-
AsciiComments:
|
135
|
+
Style/AsciiComments:
|
142
136
|
Enabled: false
|
143
137
|
|
144
138
|
# It does not make sense to enforce everything to have documentation.
|
145
|
-
Documentation:
|
139
|
+
Style/Documentation:
|
146
140
|
Enabled: false
|
147
141
|
|
148
142
|
# Nanoc suppresses exceptions for valid reasons in a few cases.
|
149
|
-
HandleExceptions:
|
143
|
+
Lint/HandleExceptions:
|
150
144
|
Enabled: false
|
151
145
|
|
152
146
|
# if/unless at the end of the line makes it too easy to oversee.
|
153
|
-
IfUnlessModifier:
|
147
|
+
Style/IfUnlessModifier:
|
154
148
|
Enabled: false
|
155
149
|
|
156
150
|
# Personal preference is to have decent constructors for exceptions rather than
|
157
151
|
# just a class and a message.
|
158
|
-
RaiseArgs:
|
159
|
-
Enabled: false
|
160
|
-
|
161
|
-
# Personal preference is to use `raise` to signal exceptions (normal control
|
162
|
-
# flow should not use exceptions anyway).
|
163
|
-
SignalException:
|
152
|
+
Style/RaiseArgs:
|
164
153
|
Enabled: false
|
165
154
|
|
166
155
|
# Some methods that appear to be accessors (return a single value or set a
|
167
156
|
# single value) should still not be considered to be accessors. This is a purely
|
168
157
|
# semantic difference.
|
169
|
-
TrivialAccessors:
|
158
|
+
Style/TrivialAccessors:
|
170
159
|
Enabled: false
|
171
160
|
|
172
161
|
# This does not always semantically make sense.
|
173
|
-
GuardClause:
|
162
|
+
Style/GuardClause:
|
163
|
+
Enabled: false
|
164
|
+
|
165
|
+
# Used for “undo work, whatever error happens”
|
166
|
+
Lint/RescueWithoutErrorClass:
|
174
167
|
Enabled: false
|
data/NEWS.md
CHANGED
data/lib/nanoc.rb
CHANGED
@@ -8,7 +8,7 @@ module Nanoc
|
|
8
8
|
def self.version_information
|
9
9
|
gem_info = defined?(Gem) ? "with RubyGems #{Gem::VERSION}" : 'without RubyGems'
|
10
10
|
engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'ruby'
|
11
|
-
res =
|
11
|
+
res = +''
|
12
12
|
res << "Nanoc #{Nanoc::VERSION} © 2007-2017 Denis Defreyne.\n"
|
13
13
|
res << "Running #{engine} #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) on #{RUBY_PLATFORM} #{gem_info}.\n"
|
14
14
|
res
|
@@ -26,6 +26,7 @@ end
|
|
26
26
|
require 'hamster'
|
27
27
|
require 'ref'
|
28
28
|
require 'ddplugin'
|
29
|
+
require 'addressable'
|
29
30
|
|
30
31
|
# Load general requirements
|
31
32
|
require 'digest'
|
@@ -34,11 +34,11 @@ module Nanoc::Int
|
|
34
34
|
# Returns a binding for this instance.
|
35
35
|
#
|
36
36
|
# @return [Binding] A binding for this instance
|
37
|
-
# rubocop:disable
|
37
|
+
# rubocop:disable Naming/AccessorMethodName
|
38
38
|
def get_binding
|
39
39
|
binding
|
40
40
|
end
|
41
|
-
# rubocop:enable
|
41
|
+
# rubocop:enable Naming/AccessorMethodName
|
42
42
|
|
43
43
|
def method_missing(method, *args, &blk)
|
44
44
|
ivar_name = '@' + method.to_s
|
@@ -44,16 +44,14 @@ module Nanoc::Int
|
|
44
44
|
@modified = false
|
45
45
|
end
|
46
46
|
|
47
|
-
contract C::HashOf[Symbol => C::IterOf[String]] =>
|
47
|
+
contract C::HashOf[Symbol => C::IterOf[String]] => C::HashOf[Symbol => C::IterOf[String]]
|
48
48
|
def raw_paths=(val)
|
49
49
|
@raw_paths = val
|
50
|
-
self
|
51
50
|
end
|
52
51
|
|
53
|
-
contract C::HashOf[Symbol => C::IterOf[String]] =>
|
52
|
+
contract C::HashOf[Symbol => C::IterOf[String]] => C::HashOf[Symbol => C::IterOf[String]]
|
54
53
|
def paths=(val)
|
55
54
|
@paths = val
|
56
|
-
self
|
57
55
|
end
|
58
56
|
|
59
57
|
contract Symbol => C::Bool
|
@@ -8,7 +8,7 @@ module Nanoc::Int
|
|
8
8
|
attr_reader :code_snippets
|
9
9
|
attr_reader :config
|
10
10
|
attr_accessor :data_source
|
11
|
-
|
11
|
+
attr_writer :compiler
|
12
12
|
|
13
13
|
contract C::KeywordArgs[config: Nanoc::Int::Configuration, code_snippets: C::IterOf[Nanoc::Int::CodeSnippet], data_source: C::Maybe[C::Named['Nanoc::DataSource']]] => C::Any
|
14
14
|
def initialize(config:, code_snippets:, data_source:)
|
@@ -26,7 +26,7 @@ module Nanoc::Int
|
|
26
26
|
item_cache[rep.name]
|
27
27
|
end
|
28
28
|
|
29
|
-
contract Nanoc::Int::ItemRep, C::HashOf[Symbol => Nanoc::Int::Content] =>
|
29
|
+
contract Nanoc::Int::ItemRep, C::HashOf[Symbol => Nanoc::Int::Content] => C::HashOf[Symbol => Nanoc::Int::Content]
|
30
30
|
# Sets the compiled content for the given representation.
|
31
31
|
#
|
32
32
|
# This cached compiled content is a hash where the keys are the snapshot
|
@@ -34,7 +34,6 @@ module Nanoc::Int
|
|
34
34
|
def []=(rep, content)
|
35
35
|
@cache[rep.item.identifier] ||= {}
|
36
36
|
@cache[rep.item.identifier][rep.name] = content
|
37
|
-
self
|
38
37
|
end
|
39
38
|
|
40
39
|
protected
|
@@ -5,8 +5,8 @@ module Nanoc::Int
|
|
5
5
|
class DependencyStore < ::Nanoc::Int::Store
|
6
6
|
include Nanoc::Int::ContractsSupport
|
7
7
|
|
8
|
-
|
9
|
-
|
8
|
+
attr_reader :items
|
9
|
+
attr_reader :layouts
|
10
10
|
|
11
11
|
contract Nanoc::Int::ItemCollection, Nanoc::Int::LayoutCollection, Nanoc::Int::Configuration, C::KeywordArgs[site: C::Optional[C::Maybe[Nanoc::Int::Site]]] => C::Any
|
12
12
|
def initialize(items, layouts, config, site: nil)
|
@@ -140,7 +140,7 @@ module Nanoc::Int
|
|
140
140
|
protected
|
141
141
|
|
142
142
|
def obj2ref(obj)
|
143
|
-
obj
|
143
|
+
obj&.reference
|
144
144
|
end
|
145
145
|
|
146
146
|
def ref2obj(reference)
|
@@ -16,6 +16,10 @@ module Nanoc
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def raw_content=(arg)
|
19
|
+
# FIXME: clearing checksum data should be done in the document
|
20
|
+
unwrap.checksum_data = nil
|
21
|
+
unwrap.content_checksum_data = nil
|
22
|
+
|
19
23
|
unwrap.content = Nanoc::Int::Content.create(arg)
|
20
24
|
end
|
21
25
|
|
@@ -25,6 +29,10 @@ module Nanoc
|
|
25
29
|
#
|
26
30
|
# @see Hash#[]=
|
27
31
|
def []=(key, value)
|
32
|
+
# FIXME: clearing checksum data should be done in the document
|
33
|
+
unwrap.checksum_data = nil
|
34
|
+
unwrap.attributes_checksum_data = nil
|
35
|
+
|
28
36
|
disallowed_value_classes = Set.new([
|
29
37
|
Nanoc::Int::Item,
|
30
38
|
Nanoc::Int::Layout,
|
@@ -51,6 +59,10 @@ module Nanoc
|
|
51
59
|
#
|
52
60
|
# @return [self]
|
53
61
|
def update_attributes(hash)
|
62
|
+
# FIXME: clearing checksum data should be done in the document
|
63
|
+
unwrap.checksum_data = nil
|
64
|
+
unwrap.attributes_checksum_data = nil
|
65
|
+
|
54
66
|
hash.each { |k, v| unwrap.attributes[k] = v }
|
55
67
|
self
|
56
68
|
end
|
@@ -140,11 +140,11 @@ module Nanoc::CLI
|
|
140
140
|
end
|
141
141
|
|
142
142
|
# @see ARGF.set_encoding
|
143
|
-
# rubocop:disable
|
143
|
+
# rubocop:disable Naming/AccessorMethodName
|
144
144
|
def set_encoding(*args)
|
145
145
|
@stream.set_encoding(*args)
|
146
146
|
end
|
147
|
-
# rubocop:enable
|
147
|
+
# rubocop:enable Naming/AccessorMethodName
|
148
148
|
|
149
149
|
protected
|
150
150
|
|
@@ -46,7 +46,7 @@ module Nanoc::CLI::Commands
|
|
46
46
|
puts "#{@c.c('Layout ' + layout.identifier, :bold, :yellow)}:"
|
47
47
|
|
48
48
|
found = false
|
49
|
-
@rules.layout_filter_mapping.
|
49
|
+
@rules.layout_filter_mapping.each_key do |pattern|
|
50
50
|
if pattern.match?(layout.identifier)
|
51
51
|
puts " #{pattern}"
|
52
52
|
found = true
|
@@ -155,12 +155,12 @@ module Nanoc::CLI
|
|
155
155
|
|
156
156
|
# @return [Nanoc::Int::Site] The site that is currently being processed
|
157
157
|
def site
|
158
|
-
@command
|
158
|
+
@command&.site
|
159
159
|
end
|
160
160
|
|
161
161
|
# @return [Nanoc::Int::Compiler] The compiler for the current site
|
162
162
|
def compiler
|
163
|
-
site
|
163
|
+
site&.compiler
|
164
164
|
end
|
165
165
|
|
166
166
|
# @return [Hash<String, Array>] A hash containing the gem names as keys and gem versions as value
|
@@ -36,7 +36,7 @@ module Nanoc::Filters
|
|
36
36
|
|
37
37
|
# Add language-something class
|
38
38
|
unless extracted_language.from_class
|
39
|
-
klass = element['class'] ||
|
39
|
+
klass = element['class'] || +''
|
40
40
|
klass << ' ' unless [' ', nil].include?(klass[-1, 1])
|
41
41
|
klass << "language-#{extracted_language.language}"
|
42
42
|
element['class'] = klass
|
@@ -104,7 +104,7 @@ module Nanoc::Filters::ColorizeSyntax::Colorizers
|
|
104
104
|
check_availability('highlight', '--version')
|
105
105
|
|
106
106
|
cmd = ['highlight', '--syntax', language, '--fragment']
|
107
|
-
params.
|
107
|
+
params.each_key do |key|
|
108
108
|
if SIMON_HIGHLIGHT_OPT_MAP[key]
|
109
109
|
cmd << SIMON_HIGHLIGHT_OPT_MAP[key]
|
110
110
|
else
|
data/lib/nanoc/filters/sass.rb
CHANGED
@@ -130,7 +130,7 @@ module Nanoc::Helpers
|
|
130
130
|
"of the capture, optionally params, and the content) but got #{args.size} instead"
|
131
131
|
end
|
132
132
|
|
133
|
-
_erbout =
|
133
|
+
_erbout = +'' # rubocop:disable Lint/UnderscorePrefixedVariableName
|
134
134
|
SetContent.new(name, params, @item).run { _erbout << content }
|
135
135
|
else # Get content
|
136
136
|
if args.size != 2
|
@@ -157,7 +157,7 @@ module Nanoc::Helpers
|
|
157
157
|
erbout_addition = erbout[erbout_length..-1]
|
158
158
|
|
159
159
|
# Remove addition
|
160
|
-
erbout[erbout_length..-1] =
|
160
|
+
erbout[erbout_length..-1] = +''
|
161
161
|
|
162
162
|
# Depending on how the filter outputs, the result might be a
|
163
163
|
# single string or an array of strings (slim outputs the latter).
|
@@ -15,7 +15,7 @@ module Nanoc::Helpers
|
|
15
15
|
select_proc = params.fetch(:rep_select, nil)
|
16
16
|
|
17
17
|
# Create builder
|
18
|
-
buffer =
|
18
|
+
buffer = +''
|
19
19
|
xml = Builder::XmlMarkup.new(target: buffer, indent: 2)
|
20
20
|
|
21
21
|
# Check for required attributes
|
@@ -32,7 +32,7 @@ module Nanoc::Helpers
|
|
32
32
|
reps.select! { |r| select_proc[r] } if select_proc
|
33
33
|
reps.sort_by { |r| r.name.to_s }.each do |rep|
|
34
34
|
xml.url do
|
35
|
-
xml.loc URI.escape(@config[:base_url] + rep.path)
|
35
|
+
xml.loc Addressable::URI.escape(@config[:base_url] + rep.path)
|
36
36
|
xml.lastmod item[:mtime].__nanoc_to_iso8601_date unless item[:mtime].nil?
|
37
37
|
xml.changefreq item[:changefreq] unless item[:changefreq].nil?
|
38
38
|
xml.priority item[:priority] unless item[:priority].nil?
|
@@ -35,7 +35,7 @@ module Nanoc
|
|
35
35
|
Pathlike = C::Maybe[C::Or[String, Nanoc::Identifier]]
|
36
36
|
contract Symbol, C::KeywordArgs[path: C::Optional[Pathlike]] => nil
|
37
37
|
def snapshot(snapshot_name, path: nil)
|
38
|
-
@action_sequence_builder.add_snapshot(snapshot_name, path
|
38
|
+
@action_sequence_builder.add_snapshot(snapshot_name, path&.to_s)
|
39
39
|
case snapshot_name
|
40
40
|
when :last
|
41
41
|
@last_snapshot = true
|
data/lib/nanoc/spec.rb
CHANGED
data/lib/nanoc/version.rb
CHANGED
data/nanoc.gemspec
CHANGED
@@ -26,6 +26,7 @@ Gem::Specification.new do |s|
|
|
26
26
|
s.add_runtime_dependency('hamster', '~> 3.0')
|
27
27
|
s.add_runtime_dependency('ref', '~> 2.0')
|
28
28
|
s.add_runtime_dependency('ddplugin', '~> 1.0')
|
29
|
+
s.add_runtime_dependency('addressable', '~> 2.5')
|
29
30
|
|
30
31
|
s.add_development_dependency('bundler', '>= 1.7.10', '< 2.0')
|
31
32
|
s.add_development_dependency('appraisal', '~> 2.1')
|
@@ -19,7 +19,7 @@ describe Nanoc::Int::CodeSnippet do
|
|
19
19
|
EOS
|
20
20
|
end
|
21
21
|
|
22
|
-
it 'makes helper functions available
|
22
|
+
it 'makes helper functions available everywhere' do
|
23
23
|
expect { subject }
|
24
24
|
.to change { [Nanoc::Int::Context.new({}).respond_to?(:fe345b48e4), Complex.respond_to?(:fe345b48e4)] }
|
25
25
|
.from([false, false])
|
@@ -40,7 +40,7 @@ describe Nanoc::Int::CodeSnippet do
|
|
40
40
|
EOS
|
41
41
|
end
|
42
42
|
|
43
|
-
it 'makes helper functions available
|
43
|
+
it 'makes helper functions available in helpers only' do
|
44
44
|
expect { subject }
|
45
45
|
.to change { [Nanoc::Int::Context.new({}).respond_to?(:e0f0c30b5e), Complex.respond_to?(:e0f0c30b5e)] }
|
46
46
|
.from([false, false])
|
@@ -13,6 +13,12 @@ describe Nanoc::Int::IdentifiableCollection do
|
|
13
13
|
it { is_expected.to be_a(described_class) }
|
14
14
|
end
|
15
15
|
|
16
|
+
describe '#inspect' do
|
17
|
+
subject { identifiable_collection.inspect }
|
18
|
+
|
19
|
+
it { is_expected.to eq("<#{described_class}>") }
|
20
|
+
end
|
21
|
+
|
16
22
|
describe '#[]' do
|
17
23
|
let(:objects) do
|
18
24
|
[
|
@@ -8,7 +8,7 @@ describe Nanoc::Feature do
|
|
8
8
|
|
9
9
|
before do
|
10
10
|
Nanoc::Feature.reset_caches
|
11
|
-
ENV['NANOC_FEATURES'] =
|
11
|
+
ENV['NANOC_FEATURES'] = +''
|
12
12
|
end
|
13
13
|
|
14
14
|
context 'not set' do
|
@@ -42,7 +42,7 @@ describe Nanoc::Feature do
|
|
42
42
|
|
43
43
|
before do
|
44
44
|
Nanoc::Feature.reset_caches
|
45
|
-
ENV['NANOC_FEATURES'] =
|
45
|
+
ENV['NANOC_FEATURES'] = +''
|
46
46
|
end
|
47
47
|
|
48
48
|
context 'not set' do
|
@@ -25,6 +25,33 @@ shared_examples 'a mutable document view' do
|
|
25
25
|
.from('content')
|
26
26
|
.to('donkey')
|
27
27
|
end
|
28
|
+
|
29
|
+
context 'checksum_data set' do
|
30
|
+
before do
|
31
|
+
document.checksum_data = 'my checksum data'
|
32
|
+
document.content_checksum_data = 'my content checksum data'
|
33
|
+
document.attributes_checksum_data = 'my attributes checksum data'
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'unsets checksum_data' do
|
37
|
+
expect { view.raw_content = 'donkey' }
|
38
|
+
.to change { document.checksum_data }
|
39
|
+
.from('my checksum data')
|
40
|
+
.to(nil)
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'unsets content_checksum_data' do
|
44
|
+
expect { view.raw_content = 'donkey' }
|
45
|
+
.to change { document.content_checksum_data }
|
46
|
+
.from('my content checksum data')
|
47
|
+
.to(nil)
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'keeps attributes_checksum_data' do
|
51
|
+
expect { view.raw_content = 'donkey' }
|
52
|
+
.not_to change { document.attributes_checksum_data }
|
53
|
+
end
|
54
|
+
end
|
28
55
|
end
|
29
56
|
|
30
57
|
describe '#[]=' do
|
@@ -54,6 +81,33 @@ shared_examples 'a mutable document view' do
|
|
54
81
|
layout = Nanoc::LayoutView.new(Nanoc::Int::Layout.new('content', {}, '/foo.md'), nil)
|
55
82
|
expect { view[:layout] = layout }.to raise_error(Nanoc::MutableDocumentViewMixin::DisallowedAttributeValueError)
|
56
83
|
end
|
84
|
+
|
85
|
+
context 'checksum_data set' do
|
86
|
+
before do
|
87
|
+
document.checksum_data = 'my checksum data'
|
88
|
+
document.content_checksum_data = 'my content checksum data'
|
89
|
+
document.attributes_checksum_data = 'my attributes checksum data'
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'unsets checksum_data' do
|
93
|
+
expect { view[:title] = 'Donkey' }
|
94
|
+
.to change { document.checksum_data }
|
95
|
+
.from('my checksum data')
|
96
|
+
.to(nil)
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'unsets attributes_checksum_data' do
|
100
|
+
expect { view[:title] = 'Donkey' }
|
101
|
+
.to change { document.attributes_checksum_data }
|
102
|
+
.from('my attributes checksum data')
|
103
|
+
.to(nil)
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'keeps content_checksum_data' do
|
107
|
+
expect { view[:title] = 'Donkey' }
|
108
|
+
.not_to change { document.content_checksum_data }
|
109
|
+
end
|
110
|
+
end
|
57
111
|
end
|
58
112
|
|
59
113
|
describe '#identifier=' do
|
@@ -102,5 +156,32 @@ shared_examples 'a mutable document view' do
|
|
102
156
|
it 'returns self' do
|
103
157
|
expect(subject).to equal(view)
|
104
158
|
end
|
159
|
+
|
160
|
+
context 'checksum_data set' do
|
161
|
+
before do
|
162
|
+
document.checksum_data = 'my checksum data'
|
163
|
+
document.content_checksum_data = 'my content checksum data'
|
164
|
+
document.attributes_checksum_data = 'my attributes checksum data'
|
165
|
+
end
|
166
|
+
|
167
|
+
it 'unsets checksum_data' do
|
168
|
+
expect { subject }
|
169
|
+
.to change { document.checksum_data }
|
170
|
+
.from('my checksum data')
|
171
|
+
.to(nil)
|
172
|
+
end
|
173
|
+
|
174
|
+
it 'unsets attributes_checksum_data' do
|
175
|
+
expect { subject }
|
176
|
+
.to change { document.attributes_checksum_data }
|
177
|
+
.from('my attributes checksum data')
|
178
|
+
.to(nil)
|
179
|
+
end
|
180
|
+
|
181
|
+
it 'keeps content_checksum_data' do
|
182
|
+
expect { subject }
|
183
|
+
.not_to change { document.content_checksum_data }
|
184
|
+
end
|
185
|
+
end
|
105
186
|
end
|
106
187
|
end
|
@@ -14,8 +14,8 @@ describe Nanoc::Deploying::Deployers::Git, stdio: true do
|
|
14
14
|
let(:forced_options) { {} }
|
15
15
|
|
16
16
|
def run_and_get_stdout(*args)
|
17
|
-
stdout =
|
18
|
-
stderr =
|
17
|
+
stdout = +''
|
18
|
+
stderr = +''
|
19
19
|
piper = Nanoc::Extra::Piper.new(stdout: stdout, stderr: stderr)
|
20
20
|
piper.run(args, '')
|
21
21
|
stdout
|
@@ -9,7 +9,7 @@ describe Nanoc::Helpers::Capturing, helper: true do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
describe 'setting content' do
|
12
|
-
let(:_erbout) {
|
12
|
+
let(:_erbout) { +'existing content' }
|
13
13
|
|
14
14
|
let(:params) { raise 'overwrite me' }
|
15
15
|
|
@@ -129,7 +129,7 @@ describe Nanoc::Helpers::Capturing, helper: true do
|
|
129
129
|
describe 'with item + name' do
|
130
130
|
subject { helper.content_for(item, :foo) }
|
131
131
|
|
132
|
-
let(:_erbout) {
|
132
|
+
let(:_erbout) { +'existing content' }
|
133
133
|
|
134
134
|
context 'requesting for same item' do
|
135
135
|
let(:item) { ctx.item }
|
@@ -198,7 +198,7 @@ describe Nanoc::Helpers::Capturing, helper: true do
|
|
198
198
|
|
199
199
|
describe '#capture' do
|
200
200
|
context 'with string' do
|
201
|
-
let(:_erbout) {
|
201
|
+
let(:_erbout) { +'existing content' }
|
202
202
|
|
203
203
|
subject { helper.capture { _erbout << 'new content' } }
|
204
204
|
|
@@ -244,7 +244,7 @@ describe Nanoc::Helpers::Capturing, helper: true do
|
|
244
244
|
context 'output field separator set to nothing' do
|
245
245
|
around do |ex|
|
246
246
|
orig_output_field_separator = $OUTPUT_FIELD_SEPARATOR
|
247
|
-
$OUTPUT_FIELD_SEPARATOR =
|
247
|
+
$OUTPUT_FIELD_SEPARATOR = +''
|
248
248
|
ex.run
|
249
249
|
$OUTPUT_FIELD_SEPARATOR = orig_output_field_separator
|
250
250
|
end
|
@@ -10,7 +10,7 @@ describe Nanoc::Helpers::HTMLEscape, helper: true do
|
|
10
10
|
end
|
11
11
|
|
12
12
|
context 'given a block' do
|
13
|
-
let!(:_erbout) {
|
13
|
+
let!(:_erbout) { +'moo' }
|
14
14
|
|
15
15
|
it 'adds escaped content to _erbout' do
|
16
16
|
helper.html_escape { _erbout << '<h1>Stuff!</h1>' }
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
describe 'GH-1216', site: true, stdio: true do
|
4
|
+
before do
|
5
|
+
FileUtils.mkdir_p('content/talks')
|
6
|
+
File.write('content/talks/aaa.html', 'A')
|
7
|
+
File.write('content/talks/bbb.html', 'B')
|
8
|
+
File.write('content/talks.html', '<%= @items.find_all("/talks/*").map { |i| i.raw_content + "=" + i[:status].to_s }.join(" ") %>')
|
9
|
+
|
10
|
+
File.write('Rules', <<~EOS)
|
11
|
+
compile '/**/*' do
|
12
|
+
filter :erb
|
13
|
+
write ext: 'html'
|
14
|
+
end
|
15
|
+
EOS
|
16
|
+
end
|
17
|
+
|
18
|
+
before do
|
19
|
+
Nanoc::CLI.run(%w[compile])
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'attributes changed using #[]=' do
|
23
|
+
before do
|
24
|
+
File.write('Rules', <<~EOS)
|
25
|
+
preprocess do
|
26
|
+
@items['/talks/aaa.*'][:status] = 'archived'
|
27
|
+
@items['/talks/bbb.*'][:status] = 'archived'
|
28
|
+
end
|
29
|
+
|
30
|
+
compile '/**/*' do
|
31
|
+
filter :erb
|
32
|
+
write ext: 'html'
|
33
|
+
end
|
34
|
+
EOS
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'changes output file' do
|
38
|
+
expect { Nanoc::CLI.run(%w[compile]) }
|
39
|
+
.to change { File.read('output/talks.html') }
|
40
|
+
.from('A= B=')
|
41
|
+
.to('A=archived B=archived')
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'attributes changed using update_attributes' do
|
46
|
+
before do
|
47
|
+
File.write('Rules', <<~EOS)
|
48
|
+
preprocess do
|
49
|
+
@items['/talks/aaa.*'].update_attributes(status: 'archived')
|
50
|
+
@items['/talks/bbb.*'].update_attributes(status: 'archived')
|
51
|
+
end
|
52
|
+
|
53
|
+
compile '/**/*' do
|
54
|
+
filter :erb
|
55
|
+
write ext: 'html'
|
56
|
+
end
|
57
|
+
EOS
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'changes output file' do
|
61
|
+
expect { Nanoc::CLI.run(%w[compile]) }
|
62
|
+
.to change { File.read('output/talks.html') }
|
63
|
+
.from('A= B=')
|
64
|
+
.to('A=archived B=archived')
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
context 'raw content changed' do
|
69
|
+
before do
|
70
|
+
File.write('Rules', <<~EOS)
|
71
|
+
preprocess do
|
72
|
+
@items['/talks/aaa.*'][:status] = 'archived'
|
73
|
+
@items['/talks/bbb.*'][:status] = 'current'
|
74
|
+
@items['/talks/aaa.*'].raw_content = 'AAH'
|
75
|
+
end
|
76
|
+
|
77
|
+
compile '/**/*' do
|
78
|
+
filter :erb
|
79
|
+
write ext: 'html'
|
80
|
+
end
|
81
|
+
EOS
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'changes output file' do
|
85
|
+
expect { Nanoc::CLI.run(%w[compile]) }
|
86
|
+
.to change { File.read('output/talks.html') }
|
87
|
+
.from('A= B=')
|
88
|
+
.to('AAH=archived B=current')
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -3,18 +3,6 @@
|
|
3
3
|
require 'helper'
|
4
4
|
|
5
5
|
class Nanoc::Int::CodeSnippetTest < Nanoc::TestCase
|
6
|
-
def test_load
|
7
|
-
# Initialize
|
8
|
-
$complete_insane_parrot = 'meow'
|
9
|
-
|
10
|
-
# Create code and load it
|
11
|
-
code_snippet = Nanoc::Int::CodeSnippet.new("$complete_insane_parrot = 'woof'", 'parrot.rb')
|
12
|
-
code_snippet.load
|
13
|
-
|
14
|
-
# Ensure code is loaded
|
15
|
-
assert_equal('woof', $complete_insane_parrot)
|
16
|
-
end
|
17
|
-
|
18
6
|
def test_load_with_toplevel_binding
|
19
7
|
# Initialize
|
20
8
|
@foo = 'meow'
|
@@ -23,7 +23,7 @@ class Nanoc::Int::IdentifiableCollectionTest < Nanoc::TestCase
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_enumerable
|
26
|
-
assert_equal @one, @items.find { |i| i.identifier == '/one' }
|
26
|
+
assert_equal @one, (@items.find { |i| i.identifier == '/one' })
|
27
27
|
end
|
28
28
|
|
29
29
|
def test_less_than_less_than
|
data/test/deploying/test_git.rb
CHANGED
@@ -34,7 +34,7 @@ class Nanoc::Deploying::Deployers::GitTest < Nanoc::TestCase
|
|
34
34
|
git push origin master
|
35
35
|
EOS
|
36
36
|
|
37
|
-
assert_match Regexp.new(/^#{commands.chomp}$/), git.instance_eval { @shell_cmd_args.join("\n") }
|
37
|
+
assert_match Regexp.new(/^#{commands.chomp}$/), (git.instance_eval { @shell_cmd_args.join("\n") })
|
38
38
|
end
|
39
39
|
|
40
40
|
def test_run_with_clean_repository
|
@@ -67,7 +67,7 @@ EOS
|
|
67
67
|
git checkout master
|
68
68
|
EOS
|
69
69
|
|
70
|
-
assert_match Regexp.new(/^#{commands.chomp}$/), git.instance_eval { @shell_cmd_args.join("\n") }
|
70
|
+
assert_match Regexp.new(/^#{commands.chomp}$/), (git.instance_eval { @shell_cmd_args.join("\n") })
|
71
71
|
end
|
72
72
|
|
73
73
|
def test_run_with_custom_options
|
@@ -103,7 +103,7 @@ EOS
|
|
103
103
|
git push -f github gh-pages
|
104
104
|
EOS
|
105
105
|
|
106
|
-
assert_match Regexp.new(/^#{commands.chomp}$/), git.instance_eval { @shell_cmd_args.join("\n") }
|
106
|
+
assert_match Regexp.new(/^#{commands.chomp}$/), (git.instance_eval { @shell_cmd_args.join("\n") })
|
107
107
|
end
|
108
108
|
|
109
109
|
def test_run_without_git_init
|
@@ -138,7 +138,7 @@ EOS
|
|
138
138
|
git push origin master
|
139
139
|
EOS
|
140
140
|
|
141
|
-
assert_match Regexp.new(/^#{commands.chomp}$/), git.instance_eval { @shell_cmd_args.join("\n") }
|
141
|
+
assert_match Regexp.new(/^#{commands.chomp}$/), (git.instance_eval { @shell_cmd_args.join("\n") })
|
142
142
|
end
|
143
143
|
|
144
144
|
def test_run_with_ssh_url
|
@@ -173,7 +173,7 @@ EOS
|
|
173
173
|
git push git@github.com:myself/myproject.git master
|
174
174
|
EOS
|
175
175
|
|
176
|
-
assert_match Regexp.new(/^#{commands.chomp}$/), git.instance_eval { @shell_cmd_args.join("\n") }
|
176
|
+
assert_match Regexp.new(/^#{commands.chomp}$/), (git.instance_eval { @shell_cmd_args.join("\n") })
|
177
177
|
end
|
178
178
|
|
179
179
|
def test_run_with_http_url
|
@@ -208,7 +208,7 @@ EOS
|
|
208
208
|
git push https://github.com/nanoc/nanoc.git master
|
209
209
|
EOS
|
210
210
|
|
211
|
-
assert_match Regexp.new(/^#{commands.chomp}$/), git.instance_eval { @shell_cmd_args.join("\n") }
|
211
|
+
assert_match Regexp.new(/^#{commands.chomp}$/), (git.instance_eval { @shell_cmd_args.join("\n") })
|
212
212
|
end
|
213
213
|
|
214
214
|
def test_clean_repo_on_a_clean_repo
|
data/test/filters/test_erb.rb
CHANGED
@@ -8,7 +8,7 @@ class Nanoc::Filters::ERBTest < Nanoc::TestCase
|
|
8
8
|
filter = ::Nanoc::Filters::ERB.new(location: 'a cheap motel')
|
9
9
|
|
10
10
|
# Run filter
|
11
|
-
result = filter.setup_and_run('<%= "I was hiding in #{@location}." %>')
|
11
|
+
result = filter.setup_and_run('<%= "I was hiding in #{@location}." %>') # rubocop:disable Lint/InterpolationCheck
|
12
12
|
assert_equal('I was hiding in a cheap motel.', result)
|
13
13
|
end
|
14
14
|
|
@@ -17,7 +17,7 @@ class Nanoc::Filters::ERBTest < Nanoc::TestCase
|
|
17
17
|
filter = ::Nanoc::Filters::ERB.new(location: 'a cheap motel')
|
18
18
|
|
19
19
|
# Run filter
|
20
|
-
result = filter.setup_and_run('<%= "I was hiding in #{location}." %>')
|
20
|
+
result = filter.setup_and_run('<%= "I was hiding in #{location}." %>') # rubocop:disable Lint/InterpolationCheck
|
21
21
|
assert_equal('I was hiding in a cheap motel.', result)
|
22
22
|
end
|
23
23
|
|
@@ -52,7 +52,7 @@ class Nanoc::Filters::ERBTest < Nanoc::TestCase
|
|
52
52
|
filter = ::Nanoc::Filters::ERB.new(content: 'a cheap motel')
|
53
53
|
|
54
54
|
# Run filter
|
55
|
-
result = filter.setup_and_run('<%= "I was hiding in #{yield}." %>')
|
55
|
+
result = filter.setup_and_run('<%= "I was hiding in #{yield}." %>') # rubocop:disable Lint/InterpolationCheck
|
56
56
|
assert_equal('I was hiding in a cheap motel.', result)
|
57
57
|
end
|
58
58
|
|
@@ -62,7 +62,7 @@ class Nanoc::Filters::ERBTest < Nanoc::TestCase
|
|
62
62
|
|
63
63
|
# Run filter
|
64
64
|
assert_raises LocalJumpError do
|
65
|
-
filter.setup_and_run('<%= "I was hiding in #{yield}." %>')
|
65
|
+
filter.setup_and_run('<%= "I was hiding in #{yield}." %>') # rubocop:disable Lint/InterpolationCheck
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
data/test/filters/test_erubi.rb
CHANGED
@@ -9,7 +9,7 @@ class Nanoc::Filters::ErubiTest < Nanoc::TestCase
|
|
9
9
|
filter = ::Nanoc::Filters::Erubi.new(location: 'a cheap motel')
|
10
10
|
|
11
11
|
# Run filter
|
12
|
-
result = filter.setup_and_run('<%= "I was hiding in #{@location}." %>')
|
12
|
+
result = filter.setup_and_run('<%= "I was hiding in #{@location}." %>') # rubocop:disable Lint/InterpolationCheck
|
13
13
|
assert_equal('I was hiding in a cheap motel.', result)
|
14
14
|
end
|
15
15
|
end
|
@@ -20,7 +20,7 @@ class Nanoc::Filters::ErubiTest < Nanoc::TestCase
|
|
20
20
|
filter = ::Nanoc::Filters::Erubi.new(location: 'a cheap motel')
|
21
21
|
|
22
22
|
# Run filter
|
23
|
-
result = filter.setup_and_run('<%= "I was hiding in #{location}." %>')
|
23
|
+
result = filter.setup_and_run('<%= "I was hiding in #{location}." %>') # rubocop:disable Lint/InterpolationCheck
|
24
24
|
assert_equal('I was hiding in a cheap motel.', result)
|
25
25
|
end
|
26
26
|
end
|
@@ -48,7 +48,7 @@ class Nanoc::Filters::ErubiTest < Nanoc::TestCase
|
|
48
48
|
filter = ::Nanoc::Filters::Erubi.new(content: 'a cheap motel')
|
49
49
|
|
50
50
|
# Run filter
|
51
|
-
result = filter.setup_and_run('<%= "I was hiding in #{yield}." %>')
|
51
|
+
result = filter.setup_and_run('<%= "I was hiding in #{yield}." %>') # rubocop:disable Lint/InterpolationCheck
|
52
52
|
assert_equal('I was hiding in a cheap motel.', result)
|
53
53
|
end
|
54
54
|
end
|
@@ -60,7 +60,7 @@ class Nanoc::Filters::ErubiTest < Nanoc::TestCase
|
|
60
60
|
|
61
61
|
# Run filter
|
62
62
|
assert_raises LocalJumpError do
|
63
|
-
filter.setup_and_run('<%= "I was hiding in #{yield}." %>')
|
63
|
+
filter.setup_and_run('<%= "I was hiding in #{yield}." %>') # rubocop:disable Lint/InterpolationCheck
|
64
64
|
end
|
65
65
|
end
|
66
66
|
end
|
data/test/filters/test_erubis.rb
CHANGED
@@ -9,7 +9,7 @@ class Nanoc::Filters::ErubisTest < Nanoc::TestCase
|
|
9
9
|
filter = ::Nanoc::Filters::Erubis.new(location: 'a cheap motel')
|
10
10
|
|
11
11
|
# Run filter
|
12
|
-
result = filter.setup_and_run('<%= "I was hiding in #{@location}." %>')
|
12
|
+
result = filter.setup_and_run('<%= "I was hiding in #{@location}." %>') # rubocop:disable Lint/InterpolationCheck
|
13
13
|
assert_equal('I was hiding in a cheap motel.', result)
|
14
14
|
end
|
15
15
|
end
|
@@ -20,7 +20,7 @@ class Nanoc::Filters::ErubisTest < Nanoc::TestCase
|
|
20
20
|
filter = ::Nanoc::Filters::Erubis.new(location: 'a cheap motel')
|
21
21
|
|
22
22
|
# Run filter
|
23
|
-
result = filter.setup_and_run('<%= "I was hiding in #{location}." %>')
|
23
|
+
result = filter.setup_and_run('<%= "I was hiding in #{location}." %>') # rubocop:disable Lint/InterpolationCheck
|
24
24
|
assert_equal('I was hiding in a cheap motel.', result)
|
25
25
|
end
|
26
26
|
end
|
@@ -49,7 +49,7 @@ class Nanoc::Filters::ErubisTest < Nanoc::TestCase
|
|
49
49
|
filter = ::Nanoc::Filters::Erubis.new(content: 'a cheap motel')
|
50
50
|
|
51
51
|
# Run filter
|
52
|
-
result = filter.setup_and_run('<%= "I was hiding in #{yield}." %>')
|
52
|
+
result = filter.setup_and_run('<%= "I was hiding in #{yield}." %>') # rubocop:disable Lint/InterpolationCheck
|
53
53
|
assert_equal('I was hiding in a cheap motel.', result)
|
54
54
|
end
|
55
55
|
end
|
@@ -61,7 +61,7 @@ class Nanoc::Filters::ErubisTest < Nanoc::TestCase
|
|
61
61
|
|
62
62
|
# Run filter
|
63
63
|
assert_raises LocalJumpError do
|
64
|
-
filter.setup_and_run('<%= "I was hiding in #{yield}." %>')
|
64
|
+
filter.setup_and_run('<%= "I was hiding in #{yield}." %>') # rubocop:disable Lint/InterpolationCheck
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
@@ -312,24 +312,12 @@ class Nanoc::Helpers::BloggingTest < Nanoc::TestCase
|
|
312
312
|
# TODO: Use xpath matchers for more specific test
|
313
313
|
result = atom_feed
|
314
314
|
# Still should keep feed level author
|
315
|
-
|
316
|
-
|
317
|
-
result,
|
318
|
-
)
|
319
|
-
assert_match(
|
320
|
-
/#{Regexp.escape('<uri>http://stoneship.org/</uri>')}/, #'
|
321
|
-
result,
|
322
|
-
)
|
315
|
+
assert_includes(result, '<name>Denis Defreyne</name>')
|
316
|
+
assert_includes(result, '<uri>http://stoneship.org/</uri>')
|
323
317
|
|
324
318
|
# Overrides on specific items
|
325
|
-
|
326
|
-
|
327
|
-
result,
|
328
|
-
)
|
329
|
-
assert_match(
|
330
|
-
/#{Regexp.escape('<uri>http://don.example.com/</uri>')}/, #'
|
331
|
-
result,
|
332
|
-
)
|
319
|
+
assert_includes(result, '<name>Don Alias</name>')
|
320
|
+
assert_includes(result, '<uri>http://don.example.com/</uri>')
|
333
321
|
end
|
334
322
|
end
|
335
323
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nanoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.8.
|
4
|
+
version: 4.8.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Denis Defreyne
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
11
|
+
date: 2017-09-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cri
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: addressable
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '2.5'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '2.5'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: bundler
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -513,6 +527,7 @@ files:
|
|
513
527
|
- spec/nanoc/regressions/gh_1145_spec.rb
|
514
528
|
- spec/nanoc/regressions/gh_1171_spec.rb
|
515
529
|
- spec/nanoc/regressions/gh_1185_spec.rb
|
530
|
+
- spec/nanoc/regressions/gh_1216_spec.rb
|
516
531
|
- spec/nanoc/regressions/gh_761_spec.rb
|
517
532
|
- spec/nanoc/regressions/gh_767_spec.rb
|
518
533
|
- spec/nanoc/regressions/gh_769_spec.rb
|