build-dependency 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 65c0e1207b71d3690bd1563328d3769b961893495e22d864a5fe62f556e3d07e
4
- data.tar.gz: 313048959a43750d5870f3af1e76b7055f041f7993c5123d17c220df417937b2
3
+ metadata.gz: 5e75821952292fe3d139db84771db2b5270afdb26039a5637c2584889caffeec
4
+ data.tar.gz: 2d6088783e2ab1dddb8510c40ad0fae285ab560ba7e03c8a1cbcf5ef4b3371a6
5
5
  SHA512:
6
- metadata.gz: 2cb579aa45e4e3909ae9fae81672d3840bd19e83edab636a5e82ed321c894c2d15b4e16793ccbc6f8746c7990e6c3b1e2f8c660878e7a63841f38118cbb5c93c
7
- data.tar.gz: b5856d282613dc9b3751180f3f2e2f25eda993d61bbfb4a088c4375357f7db2b67392b9e9715349ed28a272b330bb99008f973ed799e65b63cea067d3c1a03ff
6
+ metadata.gz: d38ed1a6a757143480bb7f9daa122a3d89977ae886a553ce4e6123ce7f8d562185e76a925a828b8c7f089a660a26c496f135baf06cda3afe3b42ebe809f83edc
7
+ data.tar.gz: 4cccf4a5c64f3294d4669b371b72357895942dc785b39371cd545c1c3d945eac3108a911491b14bb98d3a80dbb57c33a1d3748198652349e7defc070538d678a
@@ -1,19 +1,17 @@
1
1
  language: ruby
2
- sudo: false
3
- dist: trusty
2
+ dist: xenial
4
3
  cache: bundler
5
- rvm:
6
- - 2.1
7
- - 2.2
8
- - 2.3
9
- - 2.4
10
- - ruby-head
11
- - jruby-head
12
- matrix:
13
- allow_failures:
14
- - rvm: "ruby-head"
15
- - rvm: "jruby-head"
4
+
16
5
  addons:
17
6
  apt:
18
7
  packages:
19
- - graphviz
8
+ - graphviz
9
+
10
+ matrix:
11
+ include:
12
+ - rvm: 2.3
13
+ - rvm: 2.4
14
+ - rvm: 2.5
15
+ - rvm: 2.6
16
+ - rvm: 2.6
17
+ env: COVERAGE=BriefSummary,Coveralls
@@ -17,7 +17,8 @@ Gem::Specification.new do |spec|
17
17
 
18
18
  spec.add_dependency "graphviz"
19
19
 
20
- spec.add_development_dependency "bundler", "~> 1.3"
20
+ spec.add_development_dependency "covered"
21
+ spec.add_development_dependency "bundler"
21
22
  spec.add_development_dependency "rspec", "~> 3.6"
22
23
  spec.add_development_dependency "rake"
23
24
  end
data/full.svg CHANGED
@@ -4,120 +4,120 @@
4
4
  <!-- Generated by graphviz version 2.40.1 (20161225.0304)
5
5
  -->
6
6
  <!-- Title: G Pages: 1 -->
7
- <svg width="357pt" height="404pt"
8
- viewBox="0.00 0.00 357.00 404.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
7
+ <svg width="360pt" height="404pt"
8
+ viewBox="0.00 0.00 359.50 404.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
9
  <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 400)">
10
10
  <title>G</title>
11
- <polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-400 353,-400 353,4 -4,4"/>
11
+ <polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-400 355.5,-400 355.5,4 -4,4"/>
12
12
  <!-- Variant/debug -->
13
13
  <g id="node1" class="node">
14
14
  <title>Variant/debug</title>
15
- <polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="130,-36 4,-36 4,0 130,0 130,-36"/>
16
- <text text-anchor="middle" x="67" y="-14.3" font-family="Monaco" font-size="14.00" fill="#000000">Variant/debug</text>
15
+ <polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="117,-36 0,-36 0,0 117,0 117,-36"/>
16
+ <text text-anchor="middle" x="58.5" y="-14.3" font-family="Monaco" font-size="14.00" fill="#000000">Variant/debug</text>
17
17
  </g>
18
18
  <!-- variant -->
19
19
  <g id="node2" class="node">
20
20
  <title>variant</title>
21
- <polygon fill="#d3d3d3" stroke="#000000" points="104.5,-108 29.5,-108 29.5,-72 104.5,-72 104.5,-108"/>
22
- <text text-anchor="middle" x="67" y="-86.3" font-family="Monaco" font-size="14.00" fill="#000000">variant</text>
21
+ <polygon fill="#d3d3d3" stroke="#000000" points="92,-108 25,-108 25,-72 92,-72 92,-108"/>
22
+ <text text-anchor="middle" x="58.5" y="-86.3" font-family="Monaco" font-size="14.00" fill="#000000">variant</text>
23
23
  </g>
24
24
  <!-- variant&#45;&gt;Variant/debug -->
25
25
  <g id="edge1" class="edge">
26
26
  <title>variant&#45;&gt;Variant/debug</title>
27
- <path fill="none" stroke="#000000" d="M67,-71.8314C67,-61 67,-47.2876 67,-36.4133"/>
27
+ <path fill="none" stroke="#000000" d="M58.5,-71.8314C58.5,-61 58.5,-47.2876 58.5,-36.4133"/>
28
28
  </g>
29
29
  <!-- Platform/linux -->
30
30
  <g id="node3" class="node">
31
31
  <title>Platform/linux</title>
32
- <polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="134,-180 0,-180 0,-144 134,-144 134,-180"/>
33
- <text text-anchor="middle" x="67" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Platform/linux</text>
32
+ <polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="116.5,-180 .5,-180 .5,-144 116.5,-144 116.5,-180"/>
33
+ <text text-anchor="middle" x="58.5" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Platform/linux</text>
34
34
  </g>
35
35
  <!-- Platform/linux&#45;&gt;variant -->
36
36
  <g id="edge2" class="edge">
37
37
  <title>Platform/linux&#45;&gt;variant</title>
38
- <path fill="none" stroke="#000000" d="M67,-143.8314C67,-136.131 67,-126.9743 67,-118.4166"/>
39
- <polygon fill="#000000" stroke="#000000" points="70.5001,-118.4132 67,-108.4133 63.5001,-118.4133 70.5001,-118.4132"/>
38
+ <path fill="none" stroke="#000000" d="M58.5,-143.8314C58.5,-136.131 58.5,-126.9743 58.5,-118.4166"/>
39
+ <polygon fill="#000000" stroke="#000000" points="62.0001,-118.4132 58.5,-108.4133 55.0001,-118.4133 62.0001,-118.4132"/>
40
40
  </g>
41
41
  <!-- platform -->
42
42
  <g id="node4" class="node">
43
43
  <title>platform</title>
44
- <polygon fill="#d3d3d3" stroke="#000000" points="109,-252 25,-252 25,-216 109,-216 109,-252"/>
45
- <text text-anchor="middle" x="67" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">platform</text>
44
+ <polygon fill="#d3d3d3" stroke="#000000" points="97.5,-252 19.5,-252 19.5,-216 97.5,-216 97.5,-252"/>
45
+ <text text-anchor="middle" x="58.5" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">platform</text>
46
46
  </g>
47
47
  <!-- platform&#45;&gt;Platform/linux -->
48
48
  <g id="edge3" class="edge">
49
49
  <title>platform&#45;&gt;Platform/linux</title>
50
- <path fill="none" stroke="#000000" d="M67,-215.8314C67,-205 67,-191.2876 67,-180.4133"/>
50
+ <path fill="none" stroke="#000000" d="M58.5,-215.8314C58.5,-205 58.5,-191.2876 58.5,-180.4133"/>
51
51
  </g>
52
52
  <!-- Compiler/clang -->
53
53
  <g id="node5" class="node">
54
54
  <title>Compiler/clang</title>
55
- <polygon fill="#add8e6" stroke="#000000" points="321,-180 187,-180 187,-144 321,-144 321,-180"/>
56
- <text text-anchor="middle" x="254" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Compiler/clang</text>
55
+ <polygon fill="#add8e6" stroke="#000000" points="303.5,-180 179.5,-180 179.5,-144 303.5,-144 303.5,-180"/>
56
+ <text text-anchor="middle" x="241.5" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Compiler/clang</text>
57
57
  </g>
58
58
  <!-- Language/C++14 -->
59
59
  <g id="node6" class="node">
60
60
  <title>Language/C++14</title>
61
- <polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="349,-324 215,-324 215,-288 349,-288 349,-324"/>
62
- <text text-anchor="middle" x="282" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++14</text>
61
+ <polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="351.5,-324 207.5,-324 207.5,-288 351.5,-288 351.5,-324"/>
62
+ <text text-anchor="middle" x="279.5" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++14</text>
63
63
  </g>
64
64
  <!-- Language/C++14&#45;&gt;Compiler/clang -->
65
65
  <g id="edge4" class="edge">
66
66
  <title>Language/C++14&#45;&gt;Compiler/clang</title>
67
- <path fill="none" stroke="#000000" d="M280.4243,-287.9292C278.6363,-269.6554 275.2651,-240.6656 270,-216 267.4281,-203.9513 263.5119,-190.6816 260.1978,-180.3117"/>
67
+ <path fill="none" stroke="#000000" d="M279.0847,-287.6971C278.246,-269.2427 275.7655,-240.1153 268.5,-216 264.7507,-203.5554 258.2988,-190.4971 252.6421,-180.3393"/>
68
68
  </g>
69
69
  <!-- Language/C++17 -->
70
70
  <g id="node7" class="node">
71
71
  <title>Language/C++17</title>
72
- <polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="261,-252 127,-252 127,-216 261,-216 261,-252"/>
73
- <text text-anchor="middle" x="194" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++17</text>
72
+ <polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="259.5,-252 115.5,-252 115.5,-216 259.5,-216 259.5,-252"/>
73
+ <text text-anchor="middle" x="187.5" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++17</text>
74
74
  </g>
75
75
  <!-- Language/C++17&#45;&gt;Compiler/clang -->
76
76
  <g id="edge5" class="edge">
77
77
  <title>Language/C++17&#45;&gt;Compiler/clang</title>
78
- <path fill="none" stroke="#000000" d="M209.1405,-215.8314C218.1666,-205 229.5937,-191.2876 238.6556,-180.4133"/>
78
+ <path fill="none" stroke="#000000" d="M201.1265,-215.8314C209.25,-205 219.5343,-191.2876 227.69,-180.4133"/>
79
79
  </g>
80
80
  <!-- lib -->
81
81
  <g id="node8" class="node">
82
82
  <title>lib</title>
83
- <polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="190,-324 136,-324 136,-288 190,-288 190,-324"/>
84
- <text text-anchor="middle" x="163" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">lib</text>
83
+ <polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="182.5,-324 128.5,-324 128.5,-288 182.5,-288 182.5,-324"/>
84
+ <text text-anchor="middle" x="155.5" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">lib</text>
85
85
  </g>
86
86
  <!-- lib&#45;&gt;platform -->
87
87
  <g id="edge6" class="edge">
88
88
  <title>lib&#45;&gt;platform</title>
89
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M138.7751,-287.8314C126.8372,-278.8779 112.2744,-267.9558 99.394,-258.2955"/>
90
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="101.3171,-255.3629 91.2171,-252.1628 97.1171,-260.9629 101.3171,-255.3629"/>
89
+ <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M131.0228,-287.8314C118.9605,-278.8779 104.246,-267.9558 91.2314,-258.2955"/>
90
+ <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="93.0852,-255.3127 82.9694,-252.1628 88.913,-260.9335 93.0852,-255.3127"/>
91
91
  </g>
92
92
  <!-- lib&#45;&gt;Language/C++17 -->
93
93
  <g id="edge7" class="edge">
94
94
  <title>lib&#45;&gt;Language/C++17</title>
95
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M170.8226,-287.8314C174.2109,-279.9617 178.2541,-270.5712 182.0076,-261.8533"/>
96
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="185.3321,-262.9822 186.0721,-252.4133 178.9027,-260.214 185.3321,-262.9822"/>
95
+ <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M163.575,-287.8314C167.1102,-279.8771 171.336,-270.369 175.2456,-261.5723"/>
96
+ <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="178.4532,-262.9729 179.3163,-252.4133 172.0565,-260.1299 178.4532,-262.9729"/>
97
97
  </g>
98
98
  <!-- app -->
99
99
  <g id="node9" class="node">
100
100
  <title>app</title>
101
- <polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="190,-396 136,-396 136,-360 190,-360 190,-396"/>
102
- <text text-anchor="middle" x="163" y="-374.3" font-family="Monaco" font-size="14.00" fill="#000000">app</text>
101
+ <polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="182.5,-396 128.5,-396 128.5,-360 182.5,-360 182.5,-396"/>
102
+ <text text-anchor="middle" x="155.5" y="-374.3" font-family="Monaco" font-size="14.00" fill="#000000">app</text>
103
103
  </g>
104
104
  <!-- app&#45;&gt;platform -->
105
105
  <g id="edge9" class="edge">
106
106
  <title>app&#45;&gt;platform</title>
107
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M150.8415,-359.7623C134.1067,-334.66 103.8678,-289.3017 84.6447,-260.4671"/>
108
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="87.519,-258.4687 79.0597,-252.0896 81.6946,-262.3516 87.519,-258.4687"/>
107
+ <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M143.2149,-359.7623C126.3057,-334.66 95.7518,-289.3017 76.3285,-260.4671"/>
108
+ <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="79.1751,-258.4281 70.6854,-252.0896 73.3694,-262.3389 79.1751,-258.4281"/>
109
109
  </g>
110
110
  <!-- app&#45;&gt;Language/C++14 -->
111
111
  <g id="edge10" class="edge">
112
112
  <title>app&#45;&gt;Language/C++14</title>
113
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M190.0029,-361.6621C205.7696,-352.1226 225.9279,-339.926 243.3541,-329.3824"/>
114
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="245.436,-332.2136 252.18,-324.0423 241.8123,-326.2245 245.436,-332.2136"/>
113
+ <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M182.7123,-362.1993C199.3768,-352.5231 220.9988,-339.9685 239.5782,-329.1804"/>
114
+ <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="241.5292,-332.0949 248.4196,-324.0467 238.0142,-326.0413 241.5292,-332.0949"/>
115
115
  </g>
116
116
  <!-- app&#45;&gt;lib -->
117
117
  <g id="edge8" class="edge">
118
118
  <title>app&#45;&gt;lib</title>
119
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M163,-359.8314C163,-352.131 163,-342.9743 163,-334.4166"/>
120
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="166.5001,-334.4132 163,-324.4133 159.5001,-334.4133 166.5001,-334.4132"/>
119
+ <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M155.5,-359.8314C155.5,-352.131 155.5,-342.9743 155.5,-334.4166"/>
120
+ <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="159.0001,-334.4132 155.5,-324.4133 152.0001,-334.4133 159.0001,-334.4132"/>
121
121
  </g>
122
122
  </g>
123
123
  </svg>
@@ -20,6 +20,8 @@
20
20
 
21
21
  require_relative 'resolver'
22
22
 
23
+ require 'set'
24
+
23
25
  module Build
24
26
  module Dependency
25
27
  class Chain < Resolver
@@ -40,7 +42,7 @@ module Build
40
42
  super()
41
43
 
42
44
  # Explicitly selected dependencies which will be used when resolving ambiguity:
43
- @selection = Set.new(selection)
45
+ @selection = ::Set.new(selection)
44
46
 
45
47
  # The list of dependencies that needs to be satisfied:
46
48
  @dependencies = dependencies.collect{|dependency| Depends[dependency]}
@@ -18,7 +18,7 @@
18
18
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
19
  # THE SOFTWARE.
20
20
 
21
- require 'set'
21
+ require_relative 'set'
22
22
 
23
23
  module Build
24
24
  module Dependency
@@ -102,8 +102,12 @@ module Build
102
102
  end
103
103
  end
104
104
 
105
+ def public?
106
+ !!@options[:public]
107
+ end
108
+
105
109
  def private?
106
- @options[:private]
110
+ !!@options[:private]
107
111
  end
108
112
 
109
113
  def alias?
@@ -144,7 +148,7 @@ module Build
144
148
  @provisions ||= {}
145
149
  end
146
150
 
147
- # @return Set<Dependency>
151
+ # @return [IdentitySet<Dependency>]
148
152
  def dependencies
149
153
  @dependencies ||= Set.new
150
154
  end
@@ -0,0 +1,86 @@
1
+ # Copyright, 2015, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in
11
+ # all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ # THE SOFTWARE.
20
+
21
+ require 'forwardable'
22
+
23
+ module Build
24
+ module Dependency
25
+ # Very similar to a set but uses a specific callback (defaults to &:name) for object identity.
26
+ class Set
27
+ include Enumerable
28
+
29
+ def initialize(contents = [])
30
+ @table = {}
31
+
32
+ contents.each do |object|
33
+ add(object)
34
+ end
35
+ end
36
+
37
+ attr :table
38
+
39
+ extend Forwardable
40
+
41
+ def_delegators :@table, :size, :empty?, :clear, :count, :[], :to_s, :inspect
42
+
43
+ def freeze
44
+ return self if frozen?
45
+
46
+ @table.freeze
47
+
48
+ super
49
+ end
50
+
51
+ def initialize_dup(other)
52
+ @table = other.table.dup
53
+ end
54
+
55
+ def identity(object)
56
+ object.name
57
+ end
58
+
59
+ def add(object)
60
+ if include?(object)
61
+ raise KeyError, "Object #{identity(object)} already exists!"
62
+ end
63
+
64
+ @table[identity(object)] = object
65
+ end
66
+
67
+ alias << add
68
+
69
+ def delete(object)
70
+ @table.delete(identity(object))
71
+ end
72
+
73
+ def include?(object)
74
+ @table.include?(identity(object))
75
+ end
76
+
77
+ def each(&block)
78
+ @table.each_value(&block)
79
+ end
80
+
81
+ def slice(names)
82
+ names.collect{|name| @table[name]}
83
+ end
84
+ end
85
+ end
86
+ end
@@ -20,6 +20,6 @@
20
20
 
21
21
  module Build
22
22
  module Dependency
23
- VERSION = "1.3.0"
23
+ VERSION = "1.4.0"
24
24
  end
25
25
  end
@@ -4,90 +4,90 @@
4
4
  <!-- Generated by graphviz version 2.40.1 (20161225.0304)
5
5
  -->
6
6
  <!-- Title: G Pages: 1 -->
7
- <svg width="465pt" height="332pt"
8
- viewBox="0.00 0.00 465.00 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
7
+ <svg width="472pt" height="332pt"
8
+ viewBox="0.00 0.00 471.50 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
9
  <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
10
10
  <title>G</title>
11
- <polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-328 461,-328 461,4 -4,4"/>
11
+ <polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-328 467.5,-328 467.5,4 -4,4"/>
12
12
  <!-- Variant/debug -->
13
13
  <g id="node1" class="node">
14
14
  <title>Variant/debug</title>
15
- <polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="130,-36 4,-36 4,0 130,0 130,-36"/>
16
- <text text-anchor="middle" x="67" y="-14.3" font-family="Monaco" font-size="14.00" fill="#000000">Variant/debug</text>
15
+ <polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="117,-36 0,-36 0,0 117,0 117,-36"/>
16
+ <text text-anchor="middle" x="58.5" y="-14.3" font-family="Monaco" font-size="14.00" fill="#000000">Variant/debug</text>
17
17
  </g>
18
18
  <!-- variant -->
19
19
  <g id="node2" class="node">
20
20
  <title>variant</title>
21
- <polygon fill="#d3d3d3" stroke="#000000" points="104.5,-108 29.5,-108 29.5,-72 104.5,-72 104.5,-108"/>
22
- <text text-anchor="middle" x="67" y="-86.3" font-family="Monaco" font-size="14.00" fill="#000000">variant</text>
21
+ <polygon fill="#d3d3d3" stroke="#000000" points="92,-108 25,-108 25,-72 92,-72 92,-108"/>
22
+ <text text-anchor="middle" x="58.5" y="-86.3" font-family="Monaco" font-size="14.00" fill="#000000">variant</text>
23
23
  </g>
24
24
  <!-- variant&#45;&gt;Variant/debug -->
25
25
  <g id="edge1" class="edge">
26
26
  <title>variant&#45;&gt;Variant/debug</title>
27
- <path fill="none" stroke="#000000" d="M67,-71.8314C67,-61 67,-47.2876 67,-36.4133"/>
27
+ <path fill="none" stroke="#000000" d="M58.5,-71.8314C58.5,-61 58.5,-47.2876 58.5,-36.4133"/>
28
28
  </g>
29
29
  <!-- Platform/linux -->
30
30
  <g id="node3" class="node">
31
31
  <title>Platform/linux</title>
32
- <polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="134,-180 0,-180 0,-144 134,-144 134,-180"/>
33
- <text text-anchor="middle" x="67" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Platform/linux</text>
32
+ <polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="116.5,-180 .5,-180 .5,-144 116.5,-144 116.5,-180"/>
33
+ <text text-anchor="middle" x="58.5" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Platform/linux</text>
34
34
  </g>
35
35
  <!-- Platform/linux&#45;&gt;variant -->
36
36
  <g id="edge2" class="edge">
37
37
  <title>Platform/linux&#45;&gt;variant</title>
38
- <path fill="none" stroke="#000000" d="M67,-143.8314C67,-136.131 67,-126.9743 67,-118.4166"/>
39
- <polygon fill="#000000" stroke="#000000" points="70.5001,-118.4132 67,-108.4133 63.5001,-118.4133 70.5001,-118.4132"/>
38
+ <path fill="none" stroke="#000000" d="M58.5,-143.8314C58.5,-136.131 58.5,-126.9743 58.5,-118.4166"/>
39
+ <polygon fill="#000000" stroke="#000000" points="62.0001,-118.4132 58.5,-108.4133 55.0001,-118.4133 62.0001,-118.4132"/>
40
40
  </g>
41
41
  <!-- platform -->
42
42
  <g id="node4" class="node">
43
43
  <title>platform</title>
44
- <polygon fill="#d3d3d3" stroke="#000000" points="109,-252 25,-252 25,-216 109,-216 109,-252"/>
45
- <text text-anchor="middle" x="67" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">platform</text>
44
+ <polygon fill="#d3d3d3" stroke="#000000" points="97.5,-252 19.5,-252 19.5,-216 97.5,-216 97.5,-252"/>
45
+ <text text-anchor="middle" x="58.5" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">platform</text>
46
46
  </g>
47
47
  <!-- platform&#45;&gt;Platform/linux -->
48
48
  <g id="edge3" class="edge">
49
49
  <title>platform&#45;&gt;Platform/linux</title>
50
- <path fill="none" stroke="#000000" d="M67,-215.8314C67,-205 67,-191.2876 67,-180.4133"/>
50
+ <path fill="none" stroke="#000000" d="M58.5,-215.8314C58.5,-205 58.5,-191.2876 58.5,-180.4133"/>
51
51
  </g>
52
52
  <!-- lib -->
53
53
  <g id="node5" class="node">
54
54
  <title>lib</title>
55
- <polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="94,-324 40,-324 40,-288 94,-288 94,-324"/>
56
- <text text-anchor="middle" x="67" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">lib</text>
55
+ <polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="85.5,-324 31.5,-324 31.5,-288 85.5,-288 85.5,-324"/>
56
+ <text text-anchor="middle" x="58.5" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">lib</text>
57
57
  </g>
58
58
  <!-- lib&#45;&gt;platform -->
59
59
  <g id="edge4" class="edge">
60
60
  <title>lib&#45;&gt;platform</title>
61
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M67,-287.8314C67,-280.131 67,-270.9743 67,-262.4166"/>
62
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="70.5001,-262.4132 67,-252.4133 63.5001,-262.4133 70.5001,-262.4132"/>
61
+ <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M58.5,-287.8314C58.5,-280.131 58.5,-270.9743 58.5,-262.4166"/>
62
+ <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="62.0001,-262.4132 58.5,-252.4133 55.0001,-262.4133 62.0001,-262.4132"/>
63
63
  </g>
64
64
  <!-- Compiler/clang -->
65
65
  <g id="node6" class="node">
66
66
  <title>Compiler/clang</title>
67
- <polygon fill="#add8e6" stroke="#000000" points="349,-180 215,-180 215,-144 349,-144 349,-180"/>
68
- <text text-anchor="middle" x="282" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Compiler/clang</text>
67
+ <polygon fill="#add8e6" stroke="#000000" points="334.5,-180 210.5,-180 210.5,-144 334.5,-144 334.5,-180"/>
68
+ <text text-anchor="middle" x="272.5" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Compiler/clang</text>
69
69
  </g>
70
70
  <!-- Language/C++14 -->
71
71
  <g id="node7" class="node">
72
72
  <title>Language/C++14</title>
73
- <polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="305,-252 171,-252 171,-216 305,-216 305,-252"/>
74
- <text text-anchor="middle" x="238" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++14</text>
73
+ <polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="301.5,-252 157.5,-252 157.5,-216 301.5,-216 301.5,-252"/>
74
+ <text text-anchor="middle" x="229.5" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++14</text>
75
75
  </g>
76
76
  <!-- Language/C++14&#45;&gt;Compiler/clang -->
77
77
  <g id="edge5" class="edge">
78
78
  <title>Language/C++14&#45;&gt;Compiler/clang</title>
79
- <path fill="none" stroke="#000000" d="M249.1031,-215.8314C255.7222,-205 264.102,-191.2876 270.7474,-180.4133"/>
79
+ <path fill="none" stroke="#000000" d="M240.3507,-215.8314C246.8194,-205 255.0088,-191.2876 261.5032,-180.4133"/>
80
80
  </g>
81
81
  <!-- Language/C++17 -->
82
82
  <g id="node8" class="node">
83
83
  <title>Language/C++17</title>
84
- <polygon fill="#ffffff" stroke="#000000" points="457,-252 323,-252 323,-216 457,-216 457,-252"/>
85
- <text text-anchor="middle" x="390" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++17</text>
84
+ <polygon fill="#ffffff" stroke="#000000" points="463.5,-252 319.5,-252 319.5,-216 463.5,-216 463.5,-252"/>
85
+ <text text-anchor="middle" x="391.5" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++17</text>
86
86
  </g>
87
87
  <!-- Language/C++17&#45;&gt;Compiler/clang -->
88
88
  <g id="edge6" class="edge">
89
89
  <title>Language/C++17&#45;&gt;Compiler/clang</title>
90
- <path fill="none" stroke="#000000" d="M362.747,-215.8314C346.3751,-204.9167 325.6147,-191.0764 309.2442,-180.1628"/>
90
+ <path fill="none" stroke="#000000" d="M361.4713,-215.8314C343.4318,-204.9167 320.5569,-191.0764 302.5191,-180.1628"/>
91
91
  </g>
92
92
  </g>
93
93
  </svg>
@@ -18,6 +18,8 @@
18
18
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
19
  # THE SOFTWARE.
20
20
 
21
+ require_relative 'package'
22
+
21
23
  RSpec.describe Build::Dependency do
22
24
  describe "valid dependency resolution" do
23
25
  let(:a) do
@@ -0,0 +1,89 @@
1
+ # Copyright, 2019, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in
11
+ # all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ # THE SOFTWARE.
20
+
21
+ require 'build/dependency'
22
+
23
+ class Package
24
+ include Build::Dependency
25
+
26
+ def initialize(name = nil)
27
+ @name = name
28
+ end
29
+
30
+ attr :name
31
+
32
+ def inspect
33
+ "<Package:#{@name}>"
34
+ end
35
+ end
36
+
37
+ RSpec.shared_context "app packages" do
38
+ let(:app) do
39
+ Package.new('app').tap do |package|
40
+ package.provides 'app'
41
+ package.depends 'lib', private: true
42
+ package.depends :platform, private: true
43
+ package.depends 'Language/C++14', private: true
44
+ end
45
+ end
46
+
47
+ let(:tests) do
48
+ Package.new('tests').tap do |package|
49
+ package.provides 'tests'
50
+ package.depends 'lib', private: true
51
+ package.depends :platform, private: true
52
+ package.depends 'Language/C++17', private: true
53
+ end
54
+ end
55
+
56
+ let(:lib) do
57
+ Package.new('lib').tap do |package|
58
+ package.provides 'lib'
59
+ package.depends :platform, private: true
60
+ package.depends 'Language/C++17', private: true
61
+ end
62
+ end
63
+
64
+ let(:platform) do
65
+ Package.new('Platform/linux').tap do |package|
66
+ package.provides platform: 'Platform/linux'
67
+ package.provides 'Platform/linux'
68
+ package.depends :variant
69
+ end
70
+ end
71
+
72
+ let(:variant) do
73
+ Package.new('Variant/debug').tap do |package|
74
+ package.provides variant: 'Variant/debug'
75
+ package.provides 'Variant/debug'
76
+ end
77
+ end
78
+
79
+ let(:compiler) do
80
+ Package.new('Compiler/clang').tap do |package|
81
+ package.provides 'Language/C++14'
82
+ package.provides 'Language/C++17'
83
+ end
84
+ end
85
+
86
+ let(:packages) {[app, tests, lib, platform, variant, compiler]}
87
+
88
+ let(:visualization) {Build::Dependency::Visualization.new}
89
+ end
@@ -18,6 +18,8 @@
18
18
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
19
  # THE SOFTWARE.
20
20
 
21
+ require_relative 'package'
22
+
21
23
  RSpec.describe Build::Dependency::PartialChain do
22
24
  describe "app chain" do
23
25
  include_context "app packages"
@@ -46,7 +48,7 @@ RSpec.describe Build::Dependency::PartialChain do
46
48
 
47
49
  graph = visualization.generate(chain)
48
50
 
49
- Graphviz::output(graph, path: "full.svg")
51
+ Graphviz.output(graph, path: "full.svg", format: 'svg')
50
52
  end
51
53
 
52
54
  subject {described_class.new(chain, app.dependencies)}
@@ -61,7 +63,7 @@ RSpec.describe Build::Dependency::PartialChain do
61
63
 
62
64
  graph = visualization.generate(subject)
63
65
 
64
- Graphviz::output(graph, path: "partial.svg")
66
+ Graphviz.output(graph, path: "partial.svg", format: 'svg')
65
67
  end
66
68
  end
67
69
 
@@ -18,13 +18,15 @@
18
18
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
19
  # THE SOFTWARE.
20
20
 
21
+ require_relative 'package'
22
+
21
23
  RSpec.describe Build::Dependency::Provider do
22
24
  include_context "app packages"
23
25
 
24
26
  let(:provider) do
25
27
  Package.new("test").tap do |package|
26
28
  package.depends "a", private: true
27
- package.depends "b"
29
+ package.depends "b", public: true
28
30
  package.depends :variant
29
31
 
30
32
  package.provides "c" do
@@ -60,7 +62,7 @@ RSpec.describe Build::Dependency::Provider do
60
62
  end
61
63
 
62
64
  describe Build::Dependency::Depends do
63
- subject {provider.dependencies.first}
65
+ subject {provider.dependencies["a"]}
64
66
 
65
67
  it "should have a name" do
66
68
  expect(subject.name).to be == "a"
@@ -73,6 +75,38 @@ RSpec.describe Build::Dependency::Provider do
73
75
  it "should format nicely" do
74
76
  expect(subject.to_s).to be == 'depends on "a" {:private=>true}'
75
77
  end
78
+
79
+ it "should be private" do
80
+ expect(subject).to be_private
81
+ end
82
+
83
+ it "should not be public" do
84
+ expect(subject).to_not be_public
85
+ end
86
+ end
87
+
88
+ describe Build::Dependency::Depends do
89
+ subject {provider.dependencies["b"]}
90
+
91
+ it "should be public" do
92
+ expect(subject).to be_public
93
+ end
94
+
95
+ it "should not be private" do
96
+ expect(subject).to_not be_private
97
+ end
98
+ end
99
+
100
+ describe Build::Dependency::Depends do
101
+ subject {provider.dependencies[:variant]}
102
+
103
+ it "should not be public" do
104
+ expect(subject).to_not be_public
105
+ end
106
+
107
+ it "should not be private" do
108
+ expect(subject).to_not be_private
109
+ end
76
110
  end
77
111
 
78
112
  describe Build::Dependency::Alias do
@@ -0,0 +1,87 @@
1
+ # Copyright, 2012, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in
11
+ # all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ # THE SOFTWARE.
20
+
21
+ require 'build/dependency/set'
22
+
23
+ RSpec.describe Build::Dependency::Set do
24
+ NamedObject = Struct.new(:name, :age)
25
+
26
+ let(:object_class) {Struct.new(:name, :age)}
27
+
28
+ describe "empty set" do
29
+ it "is empty" do
30
+ expect(subject).to be_empty
31
+ end
32
+ end
33
+
34
+ describe "non-empty set" do
35
+ let(:bob) {object_class.new('Bob', 10)}
36
+ subject {described_class.new([bob])}
37
+
38
+ it "should contain named objects" do
39
+ expect(subject).to be_include bob
40
+ end
41
+
42
+ it "can enumerate all contained objects" do
43
+ expect(subject.each.to_a).to be == [bob]
44
+ end
45
+
46
+ it "contains one item" do
47
+ expect(subject).to_not be_empty
48
+ expect(subject.size).to be == 1
49
+ end
50
+
51
+ it "can be cleared" do
52
+ expect(subject).to_not be_empty
53
+ subject.clear
54
+ expect(subject).to be_empty
55
+ end
56
+
57
+ it "can delete items" do
58
+ expect(subject).to_not be_empty
59
+ subject.delete(bob)
60
+ expect(subject).to be_empty
61
+ end
62
+
63
+ it "can be frozen" do
64
+ subject.freeze
65
+
66
+ expect(subject).to be_frozen
67
+ end
68
+
69
+ it "can look up named items" do
70
+ expect(subject[bob.name]).to be == bob
71
+ end
72
+
73
+ it "should have string representation" do
74
+ expect(subject.to_s).to be =~ /Bob/
75
+ end
76
+ end
77
+
78
+ it "could contain many items" do
79
+ names = ["Apple", "Orange", "Banana", "Kiwifruit"]
80
+
81
+ names.each_with_index do |name, index|
82
+ subject << NamedObject.new(name, index)
83
+ end
84
+
85
+ expect(subject.size).to be == names.size
86
+ end
87
+ end
@@ -18,6 +18,8 @@
18
18
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
19
  # THE SOFTWARE.
20
20
 
21
+ require_relative 'package'
22
+
21
23
  RSpec.describe Build::Dependency::Visualization do
22
24
  include_context "app packages"
23
25
 
@@ -26,6 +28,6 @@ RSpec.describe Build::Dependency::Visualization do
26
28
 
27
29
  graph = subject.generate(chain)
28
30
 
29
- Graphviz::output(graph, path: "visualization.svg")
31
+ Graphviz.output(graph, path: "visualization.svg", format: 'svg')
30
32
  end
31
33
  end
@@ -18,6 +18,8 @@
18
18
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
19
  # THE SOFTWARE.
20
20
 
21
+ require_relative 'package'
22
+
21
23
  RSpec.describe Build::Dependency do
22
24
  describe "test packages" do
23
25
  let(:a) do
@@ -1,91 +1,5 @@
1
1
 
2
- if ENV['COVERAGE'] || ENV['TRAVIS']
3
- begin
4
- require 'simplecov'
5
-
6
- SimpleCov.start do
7
- add_filter "/spec/"
8
- end
9
-
10
- if ENV['TRAVIS']
11
- require 'coveralls'
12
- Coveralls.wear!
13
- end
14
- rescue LoadError
15
- warn "Could not load simplecov: #{$!}"
16
- end
17
- end
18
-
19
- require "bundler/setup"
20
- require "build/dependency"
21
-
22
- class Package
23
- include Build::Dependency
24
-
25
- def initialize(name = nil)
26
- @name = name
27
- end
28
-
29
- attr :name
30
-
31
- def inspect
32
- "<Package:#{@name}>"
33
- end
34
- end
35
-
36
- RSpec.shared_context "app packages" do
37
- let(:app) do
38
- Package.new('app').tap do |package|
39
- package.provides 'app'
40
- package.depends 'lib', private: true
41
- package.depends :platform, private: true
42
- package.depends 'Language/C++14', private: true
43
- end
44
- end
45
-
46
- let(:tests) do
47
- Package.new('tests').tap do |package|
48
- package.provides 'tests'
49
- package.depends 'lib', private: true
50
- package.depends :platform, private: true
51
- package.depends 'Language/C++17', private: true
52
- end
53
- end
54
-
55
- let(:lib) do
56
- Package.new('lib').tap do |package|
57
- package.provides 'lib'
58
- package.depends :platform, private: true
59
- package.depends 'Language/C++17', private: true
60
- end
61
- end
62
-
63
- let(:platform) do
64
- Package.new('Platform/linux').tap do |package|
65
- package.provides platform: 'Platform/linux'
66
- package.provides 'Platform/linux'
67
- package.depends :variant
68
- end
69
- end
70
-
71
- let(:variant) do
72
- Package.new('Variant/debug').tap do |package|
73
- package.provides variant: 'Variant/debug'
74
- package.provides 'Variant/debug'
75
- end
76
- end
77
-
78
- let(:compiler) do
79
- Package.new('Compiler/clang').tap do |package|
80
- package.provides 'Language/C++14'
81
- package.provides 'Language/C++17'
82
- end
83
- end
84
-
85
- let(:packages) {[app, tests, lib, platform, variant, compiler]}
86
-
87
- let(:visualization) {Build::Dependency::Visualization.new}
88
- end
2
+ require 'covered/rspec'
89
3
 
90
4
  RSpec.configure do |config|
91
5
  # Enable flags like --only-failures and --next-failure
@@ -4,144 +4,144 @@
4
4
  <!-- Generated by graphviz version 2.40.1 (20161225.0304)
5
5
  -->
6
6
  <!-- Title: G Pages: 1 -->
7
- <svg width="385pt" height="404pt"
8
- viewBox="0.00 0.00 385.00 404.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
7
+ <svg width="400pt" height="404pt"
8
+ viewBox="0.00 0.00 400.00 404.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9
9
  <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 400)">
10
10
  <title>G</title>
11
- <polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-400 381,-400 381,4 -4,4"/>
11
+ <polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-400 396,-400 396,4 -4,4"/>
12
12
  <!-- Variant/debug -->
13
13
  <g id="node1" class="node">
14
14
  <title>Variant/debug</title>
15
- <polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="282,-36 156,-36 156,0 282,0 282,-36"/>
16
- <text text-anchor="middle" x="219" y="-14.3" font-family="Monaco" font-size="14.00" fill="#000000">Variant/debug</text>
15
+ <polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="268.5,-36 151.5,-36 151.5,0 268.5,0 268.5,-36"/>
16
+ <text text-anchor="middle" x="210" y="-14.3" font-family="Monaco" font-size="14.00" fill="#000000">Variant/debug</text>
17
17
  </g>
18
18
  <!-- variant -->
19
19
  <g id="node2" class="node">
20
20
  <title>variant</title>
21
- <polygon fill="#d3d3d3" stroke="#000000" points="256.5,-108 181.5,-108 181.5,-72 256.5,-72 256.5,-108"/>
22
- <text text-anchor="middle" x="219" y="-86.3" font-family="Monaco" font-size="14.00" fill="#000000">variant</text>
21
+ <polygon fill="#d3d3d3" stroke="#000000" points="243.5,-108 176.5,-108 176.5,-72 243.5,-72 243.5,-108"/>
22
+ <text text-anchor="middle" x="210" y="-86.3" font-family="Monaco" font-size="14.00" fill="#000000">variant</text>
23
23
  </g>
24
24
  <!-- variant&#45;&gt;Variant/debug -->
25
25
  <g id="edge1" class="edge">
26
26
  <title>variant&#45;&gt;Variant/debug</title>
27
- <path fill="none" stroke="#000000" d="M219,-71.8314C219,-61 219,-47.2876 219,-36.4133"/>
27
+ <path fill="none" stroke="#000000" d="M210,-71.8314C210,-61 210,-47.2876 210,-36.4133"/>
28
28
  </g>
29
29
  <!-- Platform/linux -->
30
30
  <g id="node3" class="node">
31
31
  <title>Platform/linux</title>
32
- <polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="286,-180 152,-180 152,-144 286,-144 286,-180"/>
33
- <text text-anchor="middle" x="219" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Platform/linux</text>
32
+ <polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="268,-180 152,-180 152,-144 268,-144 268,-180"/>
33
+ <text text-anchor="middle" x="210" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Platform/linux</text>
34
34
  </g>
35
35
  <!-- Platform/linux&#45;&gt;variant -->
36
36
  <g id="edge2" class="edge">
37
37
  <title>Platform/linux&#45;&gt;variant</title>
38
- <path fill="none" stroke="#000000" d="M219,-143.8314C219,-136.131 219,-126.9743 219,-118.4166"/>
39
- <polygon fill="#000000" stroke="#000000" points="222.5001,-118.4132 219,-108.4133 215.5001,-118.4133 222.5001,-118.4132"/>
38
+ <path fill="none" stroke="#000000" d="M210,-143.8314C210,-136.131 210,-126.9743 210,-118.4166"/>
39
+ <polygon fill="#000000" stroke="#000000" points="213.5001,-118.4132 210,-108.4133 206.5001,-118.4133 213.5001,-118.4132"/>
40
40
  </g>
41
41
  <!-- platform -->
42
42
  <g id="node4" class="node">
43
43
  <title>platform</title>
44
- <polygon fill="#d3d3d3" stroke="#000000" points="225,-252 141,-252 141,-216 225,-216 225,-252"/>
45
- <text text-anchor="middle" x="183" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">platform</text>
44
+ <polygon fill="#d3d3d3" stroke="#000000" points="230,-252 152,-252 152,-216 230,-216 230,-252"/>
45
+ <text text-anchor="middle" x="191" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">platform</text>
46
46
  </g>
47
47
  <!-- platform&#45;&gt;Platform/linux -->
48
48
  <g id="edge3" class="edge">
49
49
  <title>platform&#45;&gt;Platform/linux</title>
50
- <path fill="none" stroke="#000000" d="M192.0843,-215.8314C197.5,-205 204.3562,-191.2876 209.7934,-180.4133"/>
50
+ <path fill="none" stroke="#000000" d="M195.7945,-215.8314C198.6528,-205 202.2713,-191.2876 205.1409,-180.4133"/>
51
51
  </g>
52
52
  <!-- Compiler/clang -->
53
53
  <g id="node5" class="node">
54
54
  <title>Compiler/clang</title>
55
- <polygon fill="#add8e6" stroke="#000000" points="134,-180 0,-180 0,-144 134,-144 134,-180"/>
56
- <text text-anchor="middle" x="67" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Compiler/clang</text>
55
+ <polygon fill="#add8e6" stroke="#000000" points="134,-180 10,-180 10,-144 134,-144 134,-180"/>
56
+ <text text-anchor="middle" x="72" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Compiler/clang</text>
57
57
  </g>
58
58
  <!-- Language/C++14 -->
59
59
  <g id="node6" class="node">
60
60
  <title>Language/C++14</title>
61
- <polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="134,-324 0,-324 0,-288 134,-288 134,-324"/>
62
- <text text-anchor="middle" x="67" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++14</text>
61
+ <polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="144,-324 0,-324 0,-288 144,-288 144,-324"/>
62
+ <text text-anchor="middle" x="72" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++14</text>
63
63
  </g>
64
64
  <!-- Language/C++14&#45;&gt;Compiler/clang -->
65
65
  <g id="edge4" class="edge">
66
66
  <title>Language/C++14&#45;&gt;Compiler/clang</title>
67
- <path fill="none" stroke="#000000" d="M67,-287.7623C67,-260.0633 67,-207.7005 67,-180.0896"/>
67
+ <path fill="none" stroke="#000000" d="M72,-287.7623C72,-260.0633 72,-207.7005 72,-180.0896"/>
68
68
  </g>
69
69
  <!-- Language/C++17 -->
70
70
  <g id="node7" class="node">
71
71
  <title>Language/C++17</title>
72
- <polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="377,-252 243,-252 243,-216 377,-216 377,-252"/>
73
- <text text-anchor="middle" x="310" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++17</text>
72
+ <polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="392,-252 248,-252 248,-216 392,-216 392,-252"/>
73
+ <text text-anchor="middle" x="320" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++17</text>
74
74
  </g>
75
75
  <!-- Language/C++17&#45;&gt;Compiler/clang -->
76
76
  <g id="edge5" class="edge">
77
77
  <title>Language/C++17&#45;&gt;Compiler/clang</title>
78
- <path fill="none" stroke="#000000" d="M248.9945,-215.9243C212.0197,-204.9688 165.0099,-191.04 128.0306,-180.0831"/>
78
+ <path fill="none" stroke="#000000" d="M257.7392,-215.9243C220.0037,-204.9688 172.0266,-191.04 134.2864,-180.0831"/>
79
79
  </g>
80
80
  <!-- lib -->
81
81
  <g id="node8" class="node">
82
82
  <title>lib</title>
83
- <polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="282,-324 228,-324 228,-288 282,-288 282,-324"/>
84
- <text text-anchor="middle" x="255" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">lib</text>
83
+ <polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="292,-324 238,-324 238,-288 292,-288 292,-324"/>
84
+ <text text-anchor="middle" x="265" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">lib</text>
85
85
  </g>
86
86
  <!-- lib&#45;&gt;platform -->
87
87
  <g id="edge6" class="edge">
88
88
  <title>lib&#45;&gt;platform</title>
89
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M236.8314,-287.8314C228.2848,-279.2848 217.9443,-268.9443 208.6198,-259.6198"/>
90
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="210.9592,-257.0095 201.4133,-252.4133 206.0095,-261.9592 210.9592,-257.0095"/>
89
+ <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M246.3267,-287.8314C237.4751,-279.219 226.7514,-268.7851 217.1105,-259.4048"/>
90
+ <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="219.2754,-256.6279 209.6674,-252.1628 214.3939,-261.645 219.2754,-256.6279"/>
91
91
  </g>
92
92
  <!-- lib&#45;&gt;Language/C++17 -->
93
93
  <g id="edge7" class="edge">
94
94
  <title>lib&#45;&gt;Language/C++17</title>
95
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M268.8788,-287.8314C275.2136,-279.5386 282.8384,-269.557 289.7926,-260.4533"/>
96
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="292.6452,-262.4847 295.9343,-252.4133 287.0825,-258.2353 292.6452,-262.4847"/>
95
+ <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M278.8788,-287.8314C285.2136,-279.5386 292.8384,-269.557 299.7926,-260.4533"/>
96
+ <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="302.6452,-262.4847 305.9343,-252.4133 297.0825,-258.2353 302.6452,-262.4847"/>
97
97
  </g>
98
98
  <!-- app -->
99
99
  <g id="node9" class="node">
100
100
  <title>app</title>
101
- <polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="189,-396 135,-396 135,-360 189,-360 189,-396"/>
102
- <text text-anchor="middle" x="162" y="-374.3" font-family="Monaco" font-size="14.00" fill="#000000">app</text>
101
+ <polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="199,-396 145,-396 145,-360 199,-360 199,-396"/>
102
+ <text text-anchor="middle" x="172" y="-374.3" font-family="Monaco" font-size="14.00" fill="#000000">app</text>
103
103
  </g>
104
104
  <!-- app&#45;&gt;platform -->
105
105
  <g id="edge9" class="edge">
106
106
  <title>app&#45;&gt;platform</title>
107
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M164.6597,-359.7623C168.2415,-335.201 174.6514,-291.2474 178.865,-262.3541"/>
108
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="182.3821,-262.4901 180.3619,-252.0896 175.4554,-261.4798 182.3821,-262.4901"/>
107
+ <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M174.4064,-359.7623C177.6471,-335.201 183.4465,-291.2474 187.2588,-262.3541"/>
108
+ <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="190.7749,-262.4616 188.6132,-252.0896 183.8351,-261.5458 190.7749,-262.4616"/>
109
109
  </g>
110
110
  <!-- app&#45;&gt;Language/C++14 -->
111
111
  <g id="edge10" class="edge">
112
112
  <title>app&#45;&gt;Language/C++14</title>
113
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M138.0275,-359.8314C126.2139,-350.8779 111.8028,-339.9558 99.0565,-330.2955"/>
114
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="101.0486,-327.4137 90.9648,-324.1628 96.8205,-332.9925 101.0486,-327.4137"/>
113
+ <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M146.7658,-359.8314C134.212,-350.7927 118.8717,-339.7476 105.3609,-330.0198"/>
114
+ <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="107.3866,-327.1655 97.2261,-324.1628 103.2964,-332.8463 107.3866,-327.1655"/>
115
115
  </g>
116
116
  <!-- app&#45;&gt;lib -->
117
117
  <g id="edge8" class="edge">
118
118
  <title>app&#45;&gt;lib</title>
119
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M185.4678,-359.8314C197.0327,-350.8779 211.1404,-339.9558 223.6183,-330.2955"/>
120
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="225.775,-333.0521 231.5397,-324.1628 221.4898,-327.5171 225.775,-333.0521"/>
119
+ <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M195.4678,-359.8314C207.0327,-350.8779 221.1404,-339.9558 233.6183,-330.2955"/>
120
+ <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="235.775,-333.0521 241.5397,-324.1628 231.4898,-327.5171 235.775,-333.0521"/>
121
121
  </g>
122
122
  <!-- tests -->
123
123
  <g id="node10" class="node">
124
124
  <title>tests</title>
125
- <polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="284.5,-396 225.5,-396 225.5,-360 284.5,-360 284.5,-396"/>
126
- <text text-anchor="middle" x="255" y="-374.3" font-family="Monaco" font-size="14.00" fill="#000000">tests</text>
125
+ <polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="292,-396 238,-396 238,-360 292,-360 292,-396"/>
126
+ <text text-anchor="middle" x="265" y="-374.3" font-family="Monaco" font-size="14.00" fill="#000000">tests</text>
127
127
  </g>
128
128
  <!-- tests&#45;&gt;platform -->
129
129
  <g id="edge12" class="edge">
130
130
  <title>tests&#45;&gt;platform</title>
131
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M241.3445,-359.5973C234.154,-349.4209 225.5044,-336.3651 219,-324 208.4065,-303.8615 198.9605,-279.8887 192.405,-261.7501"/>
132
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="195.6176,-260.3365 188.9822,-252.0768 189.0185,-262.6716 195.6176,-260.3365"/>
131
+ <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M251.438,-359.5475C244.2749,-349.3566 235.6216,-336.3027 229,-324 218.0804,-303.712 208.0496,-279.6131 201.039,-261.4605"/>
132
+ <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="204.2882,-260.1576 197.4685,-252.0494 197.7434,-262.6407 204.2882,-260.1576"/>
133
133
  </g>
134
134
  <!-- tests&#45;&gt;Language/C++17 -->
135
135
  <g id="edge13" class="edge">
136
136
  <title>tests&#45;&gt;Language/C++17</title>
137
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M269.8853,-359.5185C277.2462,-349.5296 285.672,-336.6716 291,-324 299.3306,-304.1876 304.1533,-280.3321 306.8541,-262.1605"/>
138
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="310.3302,-262.5721 308.2095,-252.1917 303.3941,-261.6289 310.3302,-262.5721"/>
137
+ <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M279.8853,-359.5185C287.2462,-349.5296 295.672,-336.6716 301,-324 309.3306,-304.1876 314.1533,-280.3321 316.8541,-262.1605"/>
138
+ <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="320.3302,-262.5721 318.2095,-252.1917 313.3941,-261.6289 320.3302,-262.5721"/>
139
139
  </g>
140
140
  <!-- tests&#45;&gt;lib -->
141
141
  <g id="edge11" class="edge">
142
142
  <title>tests&#45;&gt;lib</title>
143
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M255,-359.8314C255,-352.131 255,-342.9743 255,-334.4166"/>
144
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="258.5001,-334.4132 255,-324.4133 251.5001,-334.4133 258.5001,-334.4132"/>
143
+ <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M265,-359.8314C265,-352.131 265,-342.9743 265,-334.4166"/>
144
+ <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="268.5001,-334.4132 265,-324.4133 261.5001,-334.4133 268.5001,-334.4132"/>
145
145
  </g>
146
146
  </g>
147
147
  </svg>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: build-dependency
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-14 00:00:00.000000000 Z
11
+ date: 2019-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: graphviz
@@ -24,20 +24,34 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: covered
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - "~>"
45
+ - - ">="
32
46
  - !ruby/object:Gem::Version
33
- version: '1.3'
47
+ version: '0'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - "~>"
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
- version: '1.3'
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rspec
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -88,12 +102,15 @@ files:
88
102
  - lib/build/dependency/partial_chain.rb
89
103
  - lib/build/dependency/provider.rb
90
104
  - lib/build/dependency/resolver.rb
105
+ - lib/build/dependency/set.rb
91
106
  - lib/build/dependency/version.rb
92
107
  - lib/build/dependency/visualization.rb
93
108
  - partial.svg
94
109
  - spec/build/dependency/chain_spec.rb
110
+ - spec/build/dependency/package.rb
95
111
  - spec/build/dependency/partial_chain_spec.rb
96
112
  - spec/build/dependency/provider_spec.rb
113
+ - spec/build/dependency/set_spec.rb
97
114
  - spec/build/dependency/visualization_spec.rb
98
115
  - spec/build/dependency/wildcard_spec.rb
99
116
  - spec/spec_helper.rb
@@ -117,15 +134,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
134
  - !ruby/object:Gem::Version
118
135
  version: '0'
119
136
  requirements: []
120
- rubyforge_project:
121
- rubygems_version: 2.7.8
137
+ rubygems_version: 3.0.2
122
138
  signing_key:
123
139
  specification_version: 4
124
140
  summary: A set of data structures and algorithms for dependency resolution.
125
141
  test_files:
126
142
  - spec/build/dependency/chain_spec.rb
143
+ - spec/build/dependency/package.rb
127
144
  - spec/build/dependency/partial_chain_spec.rb
128
145
  - spec/build/dependency/provider_spec.rb
146
+ - spec/build/dependency/set_spec.rb
129
147
  - spec/build/dependency/visualization_spec.rb
130
148
  - spec/build/dependency/wildcard_spec.rb
131
149
  - spec/spec_helper.rb