diff --git a/lib/nanoc/data_sources/filesystem.rb b/lib/nanoc/data_sources/filesystem.rb index 64f05816f1..40f6cd16db 100644 --- a/lib/nanoc/data_sources/filesystem.rb +++ b/lib/nanoc/data_sources/filesystem.rb @@ -163,7 +163,7 @@ def load_objects(dir_name, klass) attributes, identifier, content_checksum_data: proto_doc.content_checksum_data, - attributes_checksum_data: proto_doc.attributes_checksum_data, + attributes_checksum_data: attributes_checksum_data_for(proto_doc, content_filename, meta_filename), ) end end @@ -171,6 +171,13 @@ def load_objects(dir_name, klass) res end + def attributes_checksum_data_for(proto_doc, content_filename, meta_filename) + YAML.dump( + attributes: proto_doc.attributes_checksum_data, + extra_attributes: extra_attributes_for(content_filename, meta_filename), + ) + end + def extra_attributes_for(content_filename, meta_filename) { filename: content_filename, diff --git a/spec/nanoc/data_sources/filesystem_spec.rb b/spec/nanoc/data_sources/filesystem_spec.rb index 90c02e6416..4d831f8803 100644 --- a/spec/nanoc/data_sources/filesystem_spec.rb +++ b/spec/nanoc/data_sources/filesystem_spec.rb @@ -48,7 +48,19 @@ expect(subject[0].identifier).to eq(Nanoc::Identifier.new('/bar/')) expect(subject[0].checksum_data).to be_nil expect(subject[0].content_checksum_data).to eq('test 1') - expect(subject[0].attributes_checksum_data).to eq("num: 1\n") + end + + it 'has the right attributes checksum data' do + cs = YAML.load(subject[0].attributes_checksum_data) + + expect(cs[:attributes]).to eq("num: 1\n") + expect(cs[:extra_attributes]).to eq( + filename: 'foo/bar.html', + content_filename: 'foo/bar.html', + meta_filename: nil, + extension: 'html', + mtime: now, + ) end end end diff --git a/spec/nanoc/integration/outdatedness_integration_spec.rb b/spec/nanoc/integration/outdatedness_integration_spec.rb index df1aa50301..6dabb31a4e 100644 --- a/spec/nanoc/integration/outdatedness_integration_spec.rb +++ b/spec/nanoc/integration/outdatedness_integration_spec.rb @@ -1,9 +1,14 @@ describe 'Outdatedness integration', site: true, stdio: true do context 'only attribute dependency' do + let(:time) { Time.now } + before do File.write('content/foo.md', "---\ntitle: hello\n---\n\nfoo") File.write('content/bar.md', '<%= @items["/foo.*"][:title] %>') + FileUtils.touch('content/foo.md', mtime: time) + FileUtils.touch('content/bar.md', mtime: time) + File.write('Rules', <') + + File.write('nanoc.yaml', <http://example.com/foo/}) + expect(contents).to match(%r{2015-03-02}) + end + + it 'updates the sitemap' do + Nanoc::CLI.run(%w(compile)) + File.write('content/foo.txt', 'foo 2') + FileUtils.touch('content/foo.txt', mtime: Time.parse('2016-04-03 10:00:00Z')) + Nanoc::CLI.run(%w(compile)) + + expect(File.file?('output/sitemap.xml')).to be + contents = File.read('output/sitemap.xml') + expect(contents).to match(%r{http://example.com/foo/}) + expect(contents).to match(%r{2016-04-03}) + end +end