274 lines
7.1 KiB
Ruby
274 lines
7.1 KiB
Ruby
# typed: false
|
|
# frozen_string_literal: true
|
|
|
|
require "utils/bottles"
|
|
|
|
describe Utils::Bottles do
|
|
describe "#tag", :needs_macos do
|
|
it "returns :big_sur or :arm64_big_sur on Big Sur" do
|
|
allow(MacOS).to receive(:version).and_return(MacOS::Version.new("11.0"))
|
|
if Hardware::CPU.intel?
|
|
expect(described_class.tag).to eq(:big_sur)
|
|
else
|
|
expect(described_class.tag).to eq(:arm64_big_sur)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "#add_bottle_stanza!" do
|
|
let(:bottle_output) do
|
|
<<~RUBY.chomp.indent(2)
|
|
bottle do
|
|
sha256 "f7b1fc772c79c20fddf621ccc791090bc1085fcef4da6cca03399424c66e06ca" => :sierra
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
context "when `license` is a string" do
|
|
let(:formula_contents) do
|
|
<<~RUBY.chomp
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tar.gz"
|
|
license "MIT"
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
let(:new_contents) do
|
|
<<~RUBY.chomp
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tar.gz"
|
|
license "MIT"
|
|
|
|
bottle do
|
|
sha256 "f7b1fc772c79c20fddf621ccc791090bc1085fcef4da6cca03399424c66e06ca" => :sierra
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "adds `bottle` after `license`" do
|
|
described_class.add_bottle_stanza! formula_contents, bottle_output
|
|
expect(formula_contents).to eq(new_contents)
|
|
end
|
|
end
|
|
|
|
context "when `license` is a symbol" do
|
|
let(:formula_contents) do
|
|
<<~RUBY.chomp
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tar.gz"
|
|
license :cannot_represent
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
let(:new_contents) do
|
|
<<~RUBY.chomp
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tar.gz"
|
|
license :cannot_represent
|
|
|
|
bottle do
|
|
sha256 "f7b1fc772c79c20fddf621ccc791090bc1085fcef4da6cca03399424c66e06ca" => :sierra
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "adds `bottle` after `license`" do
|
|
described_class.add_bottle_stanza! formula_contents, bottle_output
|
|
expect(formula_contents).to eq(new_contents)
|
|
end
|
|
end
|
|
|
|
context "when `license` is multiline" do
|
|
let(:formula_contents) do
|
|
<<~RUBY.chomp
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tar.gz"
|
|
license all_of: [
|
|
:public_domain,
|
|
"MIT",
|
|
"GPL-3.0-or-later" => { with: "Autoconf-exception-3.0" },
|
|
]
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
let(:new_contents) do
|
|
<<~RUBY.chomp
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tar.gz"
|
|
license all_of: [
|
|
:public_domain,
|
|
"MIT",
|
|
"GPL-3.0-or-later" => { with: "Autoconf-exception-3.0" },
|
|
]
|
|
|
|
bottle do
|
|
sha256 "f7b1fc772c79c20fddf621ccc791090bc1085fcef4da6cca03399424c66e06ca" => :sierra
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "adds `bottle` after `license`" do
|
|
described_class.add_bottle_stanza! formula_contents, bottle_output
|
|
expect(formula_contents).to eq(new_contents)
|
|
end
|
|
end
|
|
|
|
context "when `head` is a string" do
|
|
let(:formula_contents) do
|
|
<<~RUBY.chomp
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tar.gz"
|
|
head "https://brew.sh/foo.git"
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
let(:new_contents) do
|
|
<<~RUBY.chomp
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tar.gz"
|
|
head "https://brew.sh/foo.git"
|
|
|
|
bottle do
|
|
sha256 "f7b1fc772c79c20fddf621ccc791090bc1085fcef4da6cca03399424c66e06ca" => :sierra
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "adds `bottle` after `head`" do
|
|
described_class.add_bottle_stanza! formula_contents, bottle_output
|
|
expect(formula_contents).to eq(new_contents)
|
|
end
|
|
end
|
|
|
|
context "when `head` is a block" do
|
|
let(:formula_contents) do
|
|
<<~RUBY.chomp
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tar.gz"
|
|
|
|
head do
|
|
url "https://brew.sh/foo.git"
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
let(:new_contents) do
|
|
<<~RUBY.chomp
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tar.gz"
|
|
|
|
bottle do
|
|
sha256 "f7b1fc772c79c20fddf621ccc791090bc1085fcef4da6cca03399424c66e06ca" => :sierra
|
|
end
|
|
|
|
head do
|
|
url "https://brew.sh/foo.git"
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "adds `bottle` before `head`" do
|
|
described_class.add_bottle_stanza! formula_contents, bottle_output
|
|
expect(formula_contents).to eq(new_contents)
|
|
end
|
|
end
|
|
|
|
context "when there is a comment on the same line" do
|
|
let(:formula_contents) do
|
|
<<~RUBY.chomp
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tar.gz" # comment
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
let(:new_contents) do
|
|
<<~RUBY.chomp
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tar.gz" # comment
|
|
|
|
bottle do
|
|
sha256 "f7b1fc772c79c20fddf621ccc791090bc1085fcef4da6cca03399424c66e06ca" => :sierra
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "adds `bottle` after the comment" do
|
|
described_class.add_bottle_stanza! formula_contents, bottle_output
|
|
expect(formula_contents).to eq(new_contents)
|
|
end
|
|
end
|
|
|
|
context "when the next line is a comment" do
|
|
let(:formula_contents) do
|
|
<<~RUBY.chomp
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tar.gz"
|
|
# comment
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
let(:new_contents) do
|
|
<<~RUBY.chomp
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tar.gz"
|
|
# comment
|
|
|
|
bottle do
|
|
sha256 "f7b1fc772c79c20fddf621ccc791090bc1085fcef4da6cca03399424c66e06ca" => :sierra
|
|
end
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "adds `bottle` after the comment" do
|
|
described_class.add_bottle_stanza! formula_contents, bottle_output
|
|
expect(formula_contents).to eq(new_contents)
|
|
end
|
|
end
|
|
|
|
context "when the next line is blank and the one after it is a comment" do
|
|
let(:formula_contents) do
|
|
<<~RUBY.chomp
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tar.gz"
|
|
|
|
# comment
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
let(:new_contents) do
|
|
<<~RUBY.chomp
|
|
class Foo < Formula
|
|
url "https://brew.sh/foo-1.0.tar.gz"
|
|
|
|
bottle do
|
|
sha256 "f7b1fc772c79c20fddf621ccc791090bc1085fcef4da6cca03399424c66e06ca" => :sierra
|
|
end
|
|
|
|
# comment
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "adds `bottle` before the comment" do
|
|
described_class.add_bottle_stanza! formula_contents, bottle_output
|
|
expect(formula_contents).to eq(new_contents)
|
|
end
|
|
end
|
|
end
|
|
end
|