1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/spec/bundler/commands/viz_spec.rb
hsbt 8598f8c2dc Merge bundler to standard libraries.
rubygems 2.7.x depends bundler-1.15.x. This is preparation for
  rubygems and bundler migration.

  * lib/bundler.rb, lib/bundler/*: files of bundler-1.15.4
  * spec/bundler/*: rspec examples of bundler-1.15.4. I applied patches.
    * https://github.com/bundler/bundler/pull/6007
    * Exclude not working examples on ruby repository.
    * Fake ruby interpriter instead of installed ruby.
  * Makefile.in: Added test task named `test-bundler`. This task is only
    working macOS/linux yet. I'm going to support Windows environment later.
  * tool/sync_default_gems.rb: Added sync task for bundler.

  [Feature #12733][ruby-core:77172]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59779 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-08 08:45:41 +00:00

150 lines
4.3 KiB
Ruby

# frozen_string_literal: true
require "spec_helper"
RSpec.describe "bundle viz", :ruby => "1.9.3", :if => Bundler.which("dot") do
let(:ruby_graphviz) do
graphviz_glob = base_system_gems.join("cache/ruby-graphviz*")
Pathname.glob(graphviz_glob).first
end
before do
system_gems ruby_graphviz
end
it "graphs gems from the Gemfile" do
install_gemfile <<-G
source "file://#{gem_repo1}"
gem "rack"
gem "rack-obama"
G
bundle! "viz"
expect(out).to include("gem_graph.png")
bundle! "viz", :format => "debug"
expect(out).to eq(strip_whitespace(<<-DOT).strip)
digraph Gemfile {
concentrate = "true";
normalize = "true";
nodesep = "0.55";
edge[ weight = "2"];
node[ fontname = "Arial, Helvetica, SansSerif"];
edge[ fontname = "Arial, Helvetica, SansSerif" , fontsize = "12"];
default [style = "filled", fillcolor = "#B9B9D5", shape = "box3d", fontsize = "16", label = "default"];
rack [style = "filled", fillcolor = "#B9B9D5", label = "rack"];
default -> rack [constraint = "false"];
"rack-obama" [style = "filled", fillcolor = "#B9B9D5", label = "rack-obama"];
default -> "rack-obama" [constraint = "false"];
"rack-obama" -> rack;
}
debugging bundle viz...
DOT
end
it "graphs gems that are prereleases" do
build_repo2 do
build_gem "rack", "1.3.pre"
end
install_gemfile <<-G
source "file://#{gem_repo2}"
gem "rack", "= 1.3.pre"
gem "rack-obama"
G
bundle! "viz"
expect(out).to include("gem_graph.png")
bundle! "viz", :format => :debug, :version => true
expect(out).to eq(strip_whitespace(<<-EOS).strip)
digraph Gemfile {
concentrate = "true";
normalize = "true";
nodesep = "0.55";
edge[ weight = "2"];
node[ fontname = "Arial, Helvetica, SansSerif"];
edge[ fontname = "Arial, Helvetica, SansSerif" , fontsize = "12"];
default [style = "filled", fillcolor = "#B9B9D5", shape = "box3d", fontsize = "16", label = "default"];
rack [style = "filled", fillcolor = "#B9B9D5", label = "rack\\n1.3.pre"];
default -> rack [constraint = "false"];
"rack-obama" [style = "filled", fillcolor = "#B9B9D5", label = "rack-obama\\n1.0"];
default -> "rack-obama" [constraint = "false"];
"rack-obama" -> rack;
}
debugging bundle viz...
EOS
end
context "with another gem that has a graphviz file" do
before do
build_repo4 do
build_gem "graphviz", "999" do |s|
s.write("lib/graphviz.rb", "abort 'wrong graphviz gem loaded'")
end
end
system_gems ruby_graphviz, "graphviz-999", :gem_repo => gem_repo4
end
it "loads the correct ruby-graphviz gem" do
install_gemfile <<-G
source "file://#{gem_repo1}"
gem "rack"
gem "rack-obama"
G
bundle! "viz", :format => "debug"
expect(out).to eq(strip_whitespace(<<-DOT).strip)
digraph Gemfile {
concentrate = "true";
normalize = "true";
nodesep = "0.55";
edge[ weight = "2"];
node[ fontname = "Arial, Helvetica, SansSerif"];
edge[ fontname = "Arial, Helvetica, SansSerif" , fontsize = "12"];
default [style = "filled", fillcolor = "#B9B9D5", shape = "box3d", fontsize = "16", label = "default"];
rack [style = "filled", fillcolor = "#B9B9D5", label = "rack"];
default -> rack [constraint = "false"];
"rack-obama" [style = "filled", fillcolor = "#B9B9D5", label = "rack-obama"];
default -> "rack-obama" [constraint = "false"];
"rack-obama" -> rack;
}
debugging bundle viz...
DOT
end
end
context "--without option" do
it "one group" do
install_gemfile <<-G
source "file://#{gem_repo1}"
gem "activesupport"
group :rails do
gem "rails"
end
G
bundle! "viz --without=rails"
expect(out).to include("gem_graph.png")
end
it "two groups" do
install_gemfile <<-G
source "file://#{gem_repo1}"
gem "activesupport"
group :rack do
gem "rack"
end
group :rails do
gem "rails"
end
G
bundle! "viz --without=rails:rack"
expect(out).to include("gem_graph.png")
end
end
end