nanoc 4.8.10 → 4.8.11
Sign up to get free protection for your applications and to get access to all the features.
- 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
|