ruby/spec/bundler/commands/viz_spec.rb
David Rodríguez 4fc82519a0 [rubygems/rubygems] Make sure bundle viz specs are actually run
These are marked as realworld, but the realworld workflow file does not
install graphviz, so the specs are actually skipped.

These are not actually realworld, so remove that tag. Now they'll be run
together with the reset of specs in the standard workflow file, which
does install `graphviz`.

e865fcaa22
2024-11-14 11:21:39 +09:00

144 lines
4.2 KiB
Ruby

# frozen_string_literal: true
RSpec.describe "bundle viz", bundler: "< 3", if: Bundler.which("dot") do
before do
realworld_system_gems "ruby-graphviz --version 1.2.5"
end
it "graphs gems from the Gemfile" do
install_gemfile <<-G
source "https://gem.repo1"
gem "myrack"
gem "myrack-obama"
G
bundle "viz"
expect(out).to include("gem_graph.png")
bundle "viz", format: "debug"
expect(out).to eq(<<~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"];
myrack [style = "filled", fillcolor = "#B9B9D5", label = "myrack"];
default -> myrack [constraint = "false"];
"myrack-obama" [style = "filled", fillcolor = "#B9B9D5", label = "myrack-obama"];
default -> "myrack-obama" [constraint = "false"];
"myrack-obama" -> myrack;
}
debugging bundle viz...
DOT
end
it "graphs gems that are prereleases" do
build_repo2 do
build_gem "myrack", "1.3.pre"
end
install_gemfile <<-G
source "https://gem.repo2"
gem "myrack", "= 1.3.pre"
gem "myrack-obama"
G
bundle "viz"
expect(out).to include("gem_graph.png")
bundle "viz", format: :debug, version: true
expect(out).to eq(<<~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"];
myrack [style = "filled", fillcolor = "#B9B9D5", label = "myrack\\n1.3.pre"];
default -> myrack [constraint = "false"];
"myrack-obama" [style = "filled", fillcolor = "#B9B9D5", label = "myrack-obama\\n1.0"];
default -> "myrack-obama" [constraint = "false"];
"myrack-obama" -> myrack;
}
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 "graphviz-999", gem_repo: gem_repo4
end
it "loads the correct ruby-graphviz gem" do
install_gemfile <<-G
source "https://gem.repo1"
gem "myrack"
gem "myrack-obama"
G
bundle "viz", format: "debug"
expect(out).to eq(<<~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"];
myrack [style = "filled", fillcolor = "#B9B9D5", label = "myrack"];
default -> myrack [constraint = "false"];
"myrack-obama" [style = "filled", fillcolor = "#B9B9D5", label = "myrack-obama"];
default -> "myrack-obama" [constraint = "false"];
"myrack-obama" -> myrack;
}
debugging bundle viz...
DOT
end
end
context "--without option" do
it "one group" do
install_gemfile <<-G
source "https://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 "https://gem.repo1"
gem "activesupport"
group :myrack do
gem "myrack"
end
group :rails do
gem "rails"
end
G
bundle "viz --without=rails:myrack"
expect(out).to include("gem_graph.png")
end
end
end