nanoc 4.8.10 → 4.8.11
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 +6 -0
- data/NEWS.md +7 -0
- data/lib/nanoc.rb +11 -6
- data/lib/nanoc/base.rb +1 -0
- data/lib/nanoc/base/changes_stream.rb +53 -0
- data/lib/nanoc/base/contracts_support.rb +0 -2
- data/lib/nanoc/base/feature.rb +3 -0
- data/lib/nanoc/base/memoization.rb +0 -2
- data/lib/nanoc/base/repos/aggregate_data_source.rb +8 -0
- data/lib/nanoc/base/repos/data_source.rb +12 -0
- data/lib/nanoc/base/repos/in_mem_data_source.rb +10 -1
- data/lib/nanoc/base/repos/prefixed_data_source.rb +8 -0
- data/lib/nanoc/base/repos/site_loader.rb +11 -7
- data/lib/nanoc/base/services/compiler.rb +2 -3
- data/lib/nanoc/base/services/compiler/stages/postprocess.rb +2 -3
- data/lib/nanoc/base/services/compiler/stages/preprocess.rb +1 -1
- data/lib/nanoc/base/services/pruner.rb +0 -2
- data/lib/nanoc/base/services/temp_filename_factory.rb +0 -2
- data/lib/nanoc/checking/checks/external_links.rb +0 -5
- data/lib/nanoc/checking/checks/internal_links.rb +0 -2
- data/lib/nanoc/checking/checks/stale.rb +0 -2
- data/lib/nanoc/cli.rb +7 -1
- data/lib/nanoc/cli/commands/compile_listeners/diff_generator.rb +0 -3
- data/lib/nanoc/cli/commands/live.rb +30 -0
- data/lib/nanoc/cli/commands/view.rb +4 -5
- data/lib/nanoc/cli/error_handler.rb +52 -36
- data/lib/nanoc/cli/logger.rb +0 -2
- data/lib/nanoc/cli/stack_trace_writer.rb +50 -0
- data/lib/nanoc/data_sources/filesystem.rb +25 -0
- data/lib/nanoc/extra.rb +1 -0
- data/lib/nanoc/extra/jruby_nokogiri_warner.rb +0 -2
- data/lib/nanoc/extra/link_collector.rb +0 -2
- data/lib/nanoc/extra/live_recompiler.rb +131 -0
- data/lib/nanoc/extra/parallel_collection.rb +0 -2
- data/lib/nanoc/extra/piper.rb +0 -2
- data/lib/nanoc/filters/relativize_paths.rb +8 -7
- data/lib/nanoc/helpers/link_to.rb +0 -2
- data/lib/nanoc/rule_dsl/action_provider.rb +2 -2
- data/lib/nanoc/version.rb +1 -1
- data/nanoc.gemspec +15 -4
- data/nanoc.manifest +545 -0
- data/spec/manifest_spec.rb +22 -0
- data/spec/nanoc/base/changes_stream_spec.rb +45 -0
- data/spec/nanoc/base/checksummer_spec.rb +0 -2
- data/spec/nanoc/base/directed_graph_spec.rb +66 -0
- data/spec/nanoc/base/entities/code_snippet_spec.rb +9 -0
- data/spec/nanoc/base/entities/context_spec.rb +26 -0
- data/spec/nanoc/base/entities/identifiable_collection_spec.rb +53 -0
- data/spec/nanoc/base/repos/aggregate_data_source_spec.rb +87 -0
- data/spec/nanoc/base/repos/data_source_spec.rb +95 -0
- data/spec/nanoc/base/repos/in_mem_data_source_spec.rb +39 -0
- data/spec/nanoc/base/repos/prefixed_data_source_spec.rb +39 -0
- data/spec/nanoc/cli/error_handler_spec.rb +43 -0
- data/spec/nanoc/cli/stack_trace_writer_spec.rb +156 -0
- data/spec/nanoc/data_sources/filesystem_spec.rb +46 -0
- data/spec/nanoc/extra/live_recompiler_spec.rb +129 -0
- data/spec/nanoc/helpers/blogging_spec.rb +1 -1
- data/spec/spec_helper.rb +60 -0
- data/test/base/test_compiler.rb +11 -11
- data/test/cli/test_cli.rb +0 -1
- data/test/cli/test_error_handler.rb +4 -5
- data/test/filters/test_relativize_paths.rb +30 -0
- data/test/filters/test_sass.rb +3 -3
- data/test/rule_dsl/test_compiler_dsl.rb +2 -2
- metadata +39 -43
- data/.github/CONTRIBUTING.md +0 -17
- data/.github/ISSUE_TEMPLATE.md +0 -23
- data/.github/PULL_REQUEST_TEMPLATE.md +0 -18
- data/.gitignore +0 -10
- data/.travis.yml +0 -27
- data/Gemfile +0 -73
- data/Guardfile +0 -5
- data/scripts/release +0 -95
- data/test/base/test_code_snippet.rb +0 -17
- data/test/base/test_context.rb +0 -35
- data/test/base/test_data_source.rb +0 -60
- data/test/base/test_directed_graph.rb +0 -56
- data/test/base/test_item_array.rb +0 -37
data/.github/CONTRIBUTING.md
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
Contributing
|
2
|
-
============
|
3
|
-
|
4
|
-
Reporting bugs
|
5
|
-
--------------
|
6
|
-
|
7
|
-
If you find a bug in Nanoc, you should report it! Some information that you should include in your bug report is the Nanoc version (`nanoc --version`) and, if relevant, the crash log (`crash.log`). For details, check the [*bug reporting* section of the development guide](http://nanoc.ws/development/#reporting-bugs).
|
8
|
-
|
9
|
-
Contributing code
|
10
|
-
-----------------
|
11
|
-
|
12
|
-
Pull requests are appreciated! When submitting a PR, make sure that your changes have covering tests, that the documentation remains up-to-date and that you retain backwards compatibility. For details, check the [*contributing code* section of the development guide](http://nanoc.ws/development/#contributing-code).
|
13
|
-
|
14
|
-
Contributor code of conduct
|
15
|
-
---------------------------
|
16
|
-
|
17
|
-
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone. For details, see the contributor code of conduct at http://nanoc.ws/contributing/#contributor-code-of-conduct.
|
data/.github/ISSUE_TEMPLATE.md
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
(Summarise the bug in a single line.)
|
2
|
-
|
3
|
-
### Steps to reproduce
|
4
|
-
|
5
|
-
1. [First step]
|
6
|
-
2. [Second step]
|
7
|
-
3. …
|
8
|
-
|
9
|
-
### Expected behavior
|
10
|
-
|
11
|
-
(Describe what you expected to happen.)
|
12
|
-
|
13
|
-
### Actual behavior
|
14
|
-
|
15
|
-
(Describe what actually happened instead.)
|
16
|
-
|
17
|
-
### Details
|
18
|
-
|
19
|
-
(Describe other details, if any, that you believe might be relevant.)
|
20
|
-
|
21
|
-
### Crash log
|
22
|
-
|
23
|
-
(When reporting a crash, create a [Gist](https://gist.github.com/) with the contents of the `crash.log` file, and link the Gist here.)
|
@@ -1,18 +0,0 @@
|
|
1
|
-
(Summarise the change in a single line.)
|
2
|
-
|
3
|
-
### Detailed description
|
4
|
-
|
5
|
-
(Describe the change in detail.)
|
6
|
-
|
7
|
-
### To do
|
8
|
-
|
9
|
-
(Include the to-do list for this PR to be finished here.)
|
10
|
-
|
11
|
-
* [ ] Tests
|
12
|
-
* [ ] Documentation
|
13
|
-
* [ ] Feature flags
|
14
|
-
* [ ] …
|
15
|
-
|
16
|
-
### Related issues
|
17
|
-
|
18
|
-
(Add issue IDs for related issues here.)
|
data/.gitignore
DELETED
data/.travis.yml
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
rvm:
|
3
|
-
- "2.3"
|
4
|
-
- "2.4"
|
5
|
-
branches:
|
6
|
-
only:
|
7
|
-
- "master"
|
8
|
-
env:
|
9
|
-
global:
|
10
|
-
-
|
11
|
-
LC_ALL=en_US.UTF_8
|
12
|
-
LANG=en_US.UTF_8
|
13
|
-
matrix:
|
14
|
-
fast_finish: true
|
15
|
-
include:
|
16
|
-
- rvm: jruby-9.1.9.0
|
17
|
-
env: DISABLE_NOKOGIRI=1
|
18
|
-
allow_failures:
|
19
|
-
- rvm: jruby-9.1.9.0
|
20
|
-
env: DISABLE_NOKOGIRI=1
|
21
|
-
script:
|
22
|
-
- bundle exec rake test_ci
|
23
|
-
- bundle exec appraisal install && FOCUS=rouge bundle exec appraisal rake spec
|
24
|
-
cache: bundler
|
25
|
-
sudo: false
|
26
|
-
git:
|
27
|
-
depth: 10
|
data/Gemfile
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
source 'https://rubygems.org'
|
4
|
-
|
5
|
-
gemspec
|
6
|
-
|
7
|
-
group :devel do
|
8
|
-
gem 'codecov', require: false
|
9
|
-
gem 'contracts', '~> 0.14'
|
10
|
-
gem 'coveralls', require: false
|
11
|
-
gem 'fuubar'
|
12
|
-
gem 'guard-rake'
|
13
|
-
gem 'json', '~> 2.0'
|
14
|
-
gem 'm', '~> 1.5'
|
15
|
-
gem 'minitest', '~> 5.0'
|
16
|
-
gem 'mocha'
|
17
|
-
gem 'pry'
|
18
|
-
gem 'rainbow', '~> 2.1'
|
19
|
-
gem 'rake'
|
20
|
-
gem 'rdoc', '~> 5.0'
|
21
|
-
gem 'rspec'
|
22
|
-
gem 'rspec-its', '~> 1.2'
|
23
|
-
gem 'rspec-mocks'
|
24
|
-
gem 'rubocop', '~> 0.49'
|
25
|
-
gem 'simplecov', require: false
|
26
|
-
gem 'timecop'
|
27
|
-
gem 'vcr'
|
28
|
-
gem 'webmock'
|
29
|
-
gem 'yard'
|
30
|
-
gem 'yard-contracts'
|
31
|
-
end
|
32
|
-
|
33
|
-
group :plugins do
|
34
|
-
gem 'adsf'
|
35
|
-
gem 'asciidoctor'
|
36
|
-
gem 'bluecloth', platforms: :ruby
|
37
|
-
gem 'builder'
|
38
|
-
gem 'coderay'
|
39
|
-
gem 'coffee-script'
|
40
|
-
gem 'compass'
|
41
|
-
gem 'erubi'
|
42
|
-
gem 'erubis'
|
43
|
-
gem 'fog-aws'
|
44
|
-
gem 'fog-local'
|
45
|
-
gem 'haml'
|
46
|
-
gem 'handlebars', platforms: :ruby
|
47
|
-
gem 'kramdown'
|
48
|
-
gem 'less', '~> 2.0', platforms: :ruby
|
49
|
-
gem 'libv8', platforms: :ruby
|
50
|
-
gem 'listen'
|
51
|
-
gem 'markaby'
|
52
|
-
gem 'maruku'
|
53
|
-
gem 'mime-types'
|
54
|
-
gem 'mustache', '~> 1.0'
|
55
|
-
gem 'nokogiri', '~> 1.6'
|
56
|
-
gem 'nokogumbo', '~> 1.4', platforms: :ruby
|
57
|
-
gem 'pandoc-ruby'
|
58
|
-
gem 'pygments.rb', '~> 1.1', '>= 1.1.1', platforms: %i[ruby mswin]
|
59
|
-
gem 'rack'
|
60
|
-
gem 'rainpress'
|
61
|
-
gem 'rdiscount', '~> 2.2', platforms: %i[ruby mswin]
|
62
|
-
gem 'redcarpet', platforms: %i[ruby mswin]
|
63
|
-
gem 'RedCloth', platforms: :ruby
|
64
|
-
gem 'rouge'
|
65
|
-
gem 'rubypants'
|
66
|
-
gem 'sass'
|
67
|
-
gem 'slim', '~> 3.0'
|
68
|
-
gem 'therubyracer', '~> 0.12', platforms: :ruby
|
69
|
-
gem 'typogruby'
|
70
|
-
gem 'uglifier'
|
71
|
-
gem 'w3c_validators'
|
72
|
-
gem 'yuicompressor'
|
73
|
-
end
|
data/Guardfile
DELETED
data/scripts/release
DELETED
@@ -1,95 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require 'fileutils'
|
5
|
-
require 'octokit'
|
6
|
-
|
7
|
-
def run(*args)
|
8
|
-
puts 'I will execute the following:'
|
9
|
-
puts ' ' + args.map { |a| a =~ /\s/ ? a.inspect : a }.join(' ')
|
10
|
-
print 'Is this correct? [y/N] '
|
11
|
-
res = gets
|
12
|
-
unless res.strip.casecmp('y').zero?
|
13
|
-
$stderr.puts 'Answer was not Y; release aborted.'
|
14
|
-
exit 1
|
15
|
-
end
|
16
|
-
|
17
|
-
system('echo', *args)
|
18
|
-
system(*args)
|
19
|
-
|
20
|
-
print 'Continue? [y/N] '
|
21
|
-
res = gets
|
22
|
-
unless res.strip.casecmp('y').zero?
|
23
|
-
$stderr.puts 'Answer was not Y; release aborted.'
|
24
|
-
exit 1
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
puts '=== Logging in to GitHub’s API…'
|
29
|
-
client = Octokit::Client.new(netrc: true)
|
30
|
-
puts
|
31
|
-
|
32
|
-
puts '=== Deleting old *.gem files…'
|
33
|
-
Dir['*.gem'].each do |fn|
|
34
|
-
puts " #{fn}…"
|
35
|
-
FileUtils.rm_f(fn)
|
36
|
-
end
|
37
|
-
puts
|
38
|
-
|
39
|
-
puts '=== Verifying presence of release date…'
|
40
|
-
unless File.readlines('NEWS.md').drop(2).first =~ / \(\d{4}-\d{2}-\d{2}\)$/
|
41
|
-
$stderr.puts 'No proper release date found!'
|
42
|
-
exit 1
|
43
|
-
end
|
44
|
-
puts
|
45
|
-
|
46
|
-
puts '=== Building new gem…'
|
47
|
-
run('gem', 'build', 'nanoc.gemspec')
|
48
|
-
puts
|
49
|
-
|
50
|
-
puts '=== Reading version…'
|
51
|
-
require './lib/nanoc/version'
|
52
|
-
puts "Version = #{Nanoc::VERSION}"
|
53
|
-
puts
|
54
|
-
|
55
|
-
puts '=== Verifying that release does not yet exist…'
|
56
|
-
releases = client.releases('nanoc/nanoc')
|
57
|
-
release = releases.find { |r| r.tag_name == Nanoc::VERSION }
|
58
|
-
if release
|
59
|
-
$stderr.puts 'Release already exists!'
|
60
|
-
$stderr.puts 'ABORTED!'
|
61
|
-
exit 1
|
62
|
-
end
|
63
|
-
puts
|
64
|
-
|
65
|
-
puts '=== Creating Git tag…'
|
66
|
-
run('git', 'tag', '--sign', '--annotate', Nanoc::VERSION, '--message', "Version #{Nanoc::VERSION}")
|
67
|
-
puts
|
68
|
-
|
69
|
-
puts '=== Pushing Git data…'
|
70
|
-
run('git', 'push', 'origin', '--tags')
|
71
|
-
puts
|
72
|
-
|
73
|
-
puts '=== Pushing gem…'
|
74
|
-
run('gem', 'push', "nanoc-#{Nanoc::VERSION}.gem")
|
75
|
-
puts
|
76
|
-
|
77
|
-
puts '=== Reading release notes…'
|
78
|
-
release_notes =
|
79
|
-
File.readlines('NEWS.md')
|
80
|
-
.drop(4)
|
81
|
-
.take_while { |l| l !~ /^## / }
|
82
|
-
.join
|
83
|
-
puts
|
84
|
-
|
85
|
-
puts '=== Creating release on GitHub…'
|
86
|
-
sleep 3 # Give GitHub some time to detect the new tag
|
87
|
-
is_prerelease = Nanoc::VERSION =~ /a|b|rc/ || Nanoc::VERSION =~ /^0/
|
88
|
-
client.create_release(
|
89
|
-
'nanoc/nanoc', Nanoc::VERSION,
|
90
|
-
prerelease: !is_prerelease.nil?,
|
91
|
-
body: release_notes
|
92
|
-
)
|
93
|
-
puts
|
94
|
-
|
95
|
-
puts 'DONE!'
|
@@ -1,17 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'helper'
|
4
|
-
|
5
|
-
class Nanoc::Int::CodeSnippetTest < Nanoc::TestCase
|
6
|
-
def test_load_with_toplevel_binding
|
7
|
-
# Initialize
|
8
|
-
@foo = 'meow'
|
9
|
-
|
10
|
-
# Create code and load it
|
11
|
-
code_snippet = Nanoc::Int::CodeSnippet.new("@foo = 'woof'", 'dog.rb')
|
12
|
-
code_snippet.load
|
13
|
-
|
14
|
-
# Ensure binding is correct
|
15
|
-
assert_equal('meow', @foo)
|
16
|
-
end
|
17
|
-
end
|
data/test/base/test_context.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'helper'
|
4
|
-
|
5
|
-
class Nanoc::Int::ContextTest < Nanoc::TestCase
|
6
|
-
def test_context_with_instance_variable
|
7
|
-
# Create context
|
8
|
-
context = Nanoc::Int::Context.new(foo: 'bar', baz: 'quux')
|
9
|
-
|
10
|
-
# Ensure correct evaluation
|
11
|
-
assert_equal('bar', eval('@foo', context.get_binding))
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_context_with_instance_method
|
15
|
-
# Create context
|
16
|
-
context = Nanoc::Int::Context.new(foo: 'bar', baz: 'quux')
|
17
|
-
|
18
|
-
# Ensure correct evaluation
|
19
|
-
assert_equal('bar', eval('foo', context.get_binding))
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_example
|
23
|
-
# Parse
|
24
|
-
YARD.parse(LIB_DIR + '/nanoc/base/entities/context.rb')
|
25
|
-
|
26
|
-
# Run
|
27
|
-
assert_examples_correct 'Nanoc::Int::Context#initialize'
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_include
|
31
|
-
context = Nanoc::Int::Context.new({})
|
32
|
-
eval('include Nanoc::Helpers::HTMLEscape', context.get_binding)
|
33
|
-
assert_equal('<>', eval('h("<>")', context.get_binding))
|
34
|
-
end
|
35
|
-
end
|
@@ -1,60 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'helper'
|
4
|
-
|
5
|
-
class Nanoc::DataSourceTest < Nanoc::TestCase
|
6
|
-
def test_not_implemented
|
7
|
-
# Create data source
|
8
|
-
data_source = Nanoc::DataSource.new(nil, nil, nil, nil)
|
9
|
-
|
10
|
-
# Test optional methods
|
11
|
-
data_source.up
|
12
|
-
data_source.down
|
13
|
-
|
14
|
-
# Test methods - loading data
|
15
|
-
assert_equal [], data_source.items
|
16
|
-
assert_equal [], data_source.layouts
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_new_item
|
20
|
-
data_source = Nanoc::DataSource.new(nil, nil, nil, nil)
|
21
|
-
|
22
|
-
item = data_source.new_item('stuff', { title: 'Stuff!' }, '/asdf', checksum_data: 'abcdef')
|
23
|
-
assert_equal 'stuff', item.content.string
|
24
|
-
assert_equal 'Stuff!', item.attributes[:title]
|
25
|
-
assert_equal Nanoc::Identifier.new('/asdf'), item.identifier
|
26
|
-
assert_equal 'abcdef', item.checksum_data
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_new_item_with_checksums
|
30
|
-
data_source = Nanoc::DataSource.new(nil, nil, nil, nil)
|
31
|
-
|
32
|
-
item = data_source.new_item('stuff', { title: 'Stuff!' }, '/asdf', content_checksum_data: 'con-cs', attributes_checksum_data: 'attr-cs')
|
33
|
-
assert_equal 'stuff', item.content.string
|
34
|
-
assert_equal 'Stuff!', item.attributes[:title]
|
35
|
-
assert_equal Nanoc::Identifier.new('/asdf'), item.identifier
|
36
|
-
assert_equal 'con-cs', item.content_checksum_data
|
37
|
-
assert_equal 'attr-cs', item.attributes_checksum_data
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_new_layout
|
41
|
-
data_source = Nanoc::DataSource.new(nil, nil, nil, nil)
|
42
|
-
|
43
|
-
layout = data_source.new_layout('stuff', { title: 'Stuff!' }, '/asdf', checksum_data: 'abcdef')
|
44
|
-
assert_equal 'stuff', layout.content.string
|
45
|
-
assert_equal 'Stuff!', layout.attributes[:title]
|
46
|
-
assert_equal Nanoc::Identifier.new('/asdf'), layout.identifier
|
47
|
-
assert_equal 'abcdef', layout.checksum_data
|
48
|
-
end
|
49
|
-
|
50
|
-
def test_new_layout_with_checksums
|
51
|
-
data_source = Nanoc::DataSource.new(nil, nil, nil, nil)
|
52
|
-
|
53
|
-
layout = data_source.new_layout('stuff', { title: 'Stuff!' }, '/asdf', content_checksum_data: 'con-cs', attributes_checksum_data: 'attr-cs')
|
54
|
-
assert_equal 'stuff', layout.content.string
|
55
|
-
assert_equal 'Stuff!', layout.attributes[:title]
|
56
|
-
assert_equal Nanoc::Identifier.new('/asdf'), layout.identifier
|
57
|
-
assert_equal 'con-cs', layout.content_checksum_data
|
58
|
-
assert_equal 'attr-cs', layout.attributes_checksum_data
|
59
|
-
end
|
60
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'helper'
|
4
|
-
|
5
|
-
class Nanoc::Int::DirectedGraphTest < Nanoc::TestCase
|
6
|
-
def test_add_edge
|
7
|
-
graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
|
8
|
-
|
9
|
-
assert_equal [], graph.predecessors_of(2).to_a
|
10
|
-
|
11
|
-
graph.add_edge(1, 2)
|
12
|
-
|
13
|
-
assert_equal [1], graph.predecessors_of(2).to_a
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_add_edge_with_new_vertices
|
17
|
-
graph = Nanoc::Int::DirectedGraph.new([1])
|
18
|
-
graph.add_edge(1, 2)
|
19
|
-
graph.add_edge(3, 2)
|
20
|
-
|
21
|
-
assert graph.vertices.include?(2)
|
22
|
-
assert graph.vertices.include?(3)
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_delete_edges_to
|
26
|
-
graph = Nanoc::Int::DirectedGraph.new([1, 2, 3])
|
27
|
-
|
28
|
-
graph.add_edge(1, 2)
|
29
|
-
graph.add_edge(2, 1)
|
30
|
-
graph.add_edge(2, 3)
|
31
|
-
graph.add_edge(3, 2)
|
32
|
-
graph.add_edge(1, 3)
|
33
|
-
graph.add_edge(3, 1)
|
34
|
-
|
35
|
-
assert_equal [2, 3], graph.direct_predecessors_of(1).sort
|
36
|
-
assert_equal [1, 3], graph.direct_predecessors_of(2).sort
|
37
|
-
assert_equal [1, 2], graph.direct_predecessors_of(3).sort
|
38
|
-
|
39
|
-
graph.delete_edges_to(1)
|
40
|
-
|
41
|
-
assert_equal [], graph.direct_predecessors_of(1).sort
|
42
|
-
assert_equal [1, 3], graph.direct_predecessors_of(2).sort
|
43
|
-
assert_equal [1, 2], graph.direct_predecessors_of(3).sort
|
44
|
-
|
45
|
-
graph.delete_edges_to(2)
|
46
|
-
|
47
|
-
assert_equal [], graph.direct_predecessors_of(1).sort
|
48
|
-
assert_equal [], graph.direct_predecessors_of(2).sort
|
49
|
-
assert_equal [1, 2], graph.direct_predecessors_of(3).sort
|
50
|
-
end
|
51
|
-
|
52
|
-
def test_example
|
53
|
-
YARD.parse(LIB_DIR + '/nanoc/base/entities/directed_graph.rb')
|
54
|
-
assert_examples_correct 'Nanoc::Int::DirectedGraph'
|
55
|
-
end
|
56
|
-
end
|