nanoc 4.8.5 → 4.8.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|