mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
Remove and refactor rspec-its use
This commit is contained in:
parent
bb753a6c48
commit
820d320835
2
.gitignore
vendored
2
.gitignore
vendored
@ -111,12 +111,10 @@
|
|||||||
**/vendor/bundle/ruby/*/gems/rspec-core-*/
|
**/vendor/bundle/ruby/*/gems/rspec-core-*/
|
||||||
**/vendor/bundle/ruby/*/gems/rspec-expectations-*/
|
**/vendor/bundle/ruby/*/gems/rspec-expectations-*/
|
||||||
**/vendor/bundle/ruby/*/gems/rspec_junit_formatter-*/
|
**/vendor/bundle/ruby/*/gems/rspec_junit_formatter-*/
|
||||||
**/vendor/bundle/ruby/*/gems/rspec-its-*/
|
|
||||||
**/vendor/bundle/ruby/*/gems/rspec-mocks-*/
|
**/vendor/bundle/ruby/*/gems/rspec-mocks-*/
|
||||||
**/vendor/bundle/ruby/*/gems/rspec-retry-*/
|
**/vendor/bundle/ruby/*/gems/rspec-retry-*/
|
||||||
**/vendor/bundle/ruby/*/gems/rspec-support-*/
|
**/vendor/bundle/ruby/*/gems/rspec-support-*/
|
||||||
**/vendor/bundle/ruby/*/gems/rspec-sorbet-*/
|
**/vendor/bundle/ruby/*/gems/rspec-sorbet-*/
|
||||||
**/vendor/bundle/ruby/*/gems/rspec-wait-*/
|
|
||||||
**/vendor/bundle/ruby/*/gems/rubocop-*/
|
**/vendor/bundle/ruby/*/gems/rubocop-*/
|
||||||
**/vendor/bundle/ruby/*/gems/ruby-prof-*/
|
**/vendor/bundle/ruby/*/gems/ruby-prof-*/
|
||||||
**/vendor/bundle/ruby/*/gems/ruby-progressbar-*/
|
**/vendor/bundle/ruby/*/gems/ruby-progressbar-*/
|
||||||
|
@ -52,7 +52,6 @@ group :tests, optional: true do
|
|||||||
gem "parallel_tests", require: false
|
gem "parallel_tests", require: false
|
||||||
gem "rspec", require: false
|
gem "rspec", require: false
|
||||||
gem "rspec-github", require: false
|
gem "rspec-github", require: false
|
||||||
gem "rspec-its", require: false
|
|
||||||
gem "rspec_junit_formatter", require: false
|
gem "rspec_junit_formatter", require: false
|
||||||
gem "rspec-retry", require: false
|
gem "rspec-retry", require: false
|
||||||
gem "rspec-sorbet", require: false
|
gem "rspec-sorbet", require: false
|
||||||
|
@ -68,9 +68,6 @@ GEM
|
|||||||
rspec-support (~> 3.13.0)
|
rspec-support (~> 3.13.0)
|
||||||
rspec-github (2.4.0)
|
rspec-github (2.4.0)
|
||||||
rspec-core (~> 3.0)
|
rspec-core (~> 3.0)
|
||||||
rspec-its (1.3.0)
|
|
||||||
rspec-core (>= 3.0.0)
|
|
||||||
rspec-expectations (>= 3.0.0)
|
|
||||||
rspec-mocks (3.13.0)
|
rspec-mocks (3.13.0)
|
||||||
diff-lcs (>= 1.2.0, < 2.0)
|
diff-lcs (>= 1.2.0, < 2.0)
|
||||||
rspec-support (~> 3.13.0)
|
rspec-support (~> 3.13.0)
|
||||||
@ -183,7 +180,6 @@ DEPENDENCIES
|
|||||||
rexml
|
rexml
|
||||||
rspec
|
rspec
|
||||||
rspec-github
|
rspec-github
|
||||||
rspec-its
|
|
||||||
rspec-retry
|
rspec-retry
|
||||||
rspec-sorbet
|
rspec-sorbet
|
||||||
rspec_junit_formatter
|
rspec_junit_formatter
|
||||||
|
@ -6510,6 +6510,9 @@ module RSpec::Core::HashImitatable
|
|||||||
# source://rspec-core//lib/rspec/core/metadata.rb#367
|
# source://rspec-core//lib/rspec/core/metadata.rb#367
|
||||||
def reverse_each(*args, &block); end
|
def reverse_each(*args, &block); end
|
||||||
|
|
||||||
|
# source://rspec-core//lib/rspec/core/metadata.rb#367
|
||||||
|
def save_plist(*args, &block); end
|
||||||
|
|
||||||
# source://rspec-core//lib/rspec/core/metadata.rb#367
|
# source://rspec-core//lib/rspec/core/metadata.rb#367
|
||||||
def select(*args, &block); end
|
def select(*args, &block); end
|
||||||
|
|
||||||
@ -6567,6 +6570,9 @@ module RSpec::Core::HashImitatable
|
|||||||
# source://rspec-core//lib/rspec/core/metadata.rb#367
|
# source://rspec-core//lib/rspec/core/metadata.rb#367
|
||||||
def to_msgpack(*args, &block); end
|
def to_msgpack(*args, &block); end
|
||||||
|
|
||||||
|
# source://rspec-core//lib/rspec/core/metadata.rb#367
|
||||||
|
def to_plist(*args, &block); end
|
||||||
|
|
||||||
# source://rspec-core//lib/rspec/core/metadata.rb#367
|
# source://rspec-core//lib/rspec/core/metadata.rb#367
|
||||||
def to_proc(*args, &block); end
|
def to_proc(*args, &block); end
|
||||||
|
|
||||||
|
@ -1,197 +0,0 @@
|
|||||||
# typed: true
|
|
||||||
|
|
||||||
# DO NOT EDIT MANUALLY
|
|
||||||
# This is an autogenerated file for types exported from the `rspec-its` gem.
|
|
||||||
# Please instead update this file by running `bin/tapioca gem rspec-its`.
|
|
||||||
|
|
||||||
# source://rspec-its//lib/rspec/its/version.rb#1
|
|
||||||
module RSpec
|
|
||||||
class << self
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core.rb#70
|
|
||||||
def clear_examples; end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core.rb#85
|
|
||||||
def configuration; end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core.rb#49
|
|
||||||
def configuration=(_arg0); end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core.rb#97
|
|
||||||
def configure; end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core.rb#194
|
|
||||||
def const_missing(name); end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core/dsl.rb#42
|
|
||||||
def context(*args, &example_group_block); end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core.rb#122
|
|
||||||
def current_example; end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core.rb#128
|
|
||||||
def current_example=(example); end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core.rb#154
|
|
||||||
def current_scope; end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core.rb#134
|
|
||||||
def current_scope=(scope); end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core/dsl.rb#42
|
|
||||||
def describe(*args, &example_group_block); end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core/dsl.rb#42
|
|
||||||
def example_group(*args, &example_group_block); end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core/dsl.rb#42
|
|
||||||
def fcontext(*args, &example_group_block); end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core/dsl.rb#42
|
|
||||||
def fdescribe(*args, &example_group_block); end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core.rb#58
|
|
||||||
def reset; end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core/shared_example_group.rb#110
|
|
||||||
def shared_context(name, *args, &block); end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core/shared_example_group.rb#110
|
|
||||||
def shared_examples(name, *args, &block); end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core/shared_example_group.rb#110
|
|
||||||
def shared_examples_for(name, *args, &block); end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core.rb#160
|
|
||||||
def world; end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core.rb#49
|
|
||||||
def world=(_arg0); end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core/dsl.rb#42
|
|
||||||
def xcontext(*args, &example_group_block); end
|
|
||||||
|
|
||||||
# source://rspec-core/3.13.0/lib/rspec/core/dsl.rb#42
|
|
||||||
def xdescribe(*args, &example_group_block); end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
module RSpec::Core::SharedContext
|
|
||||||
include ::RSpec::Its
|
|
||||||
end
|
|
||||||
|
|
||||||
# source://rspec-its//lib/rspec/its/version.rb#2
|
|
||||||
module RSpec::Its
|
|
||||||
# Creates a nested example group named by the submitted `attribute`,
|
|
||||||
# and then generates an example using the submitted block.
|
|
||||||
#
|
|
||||||
# The attribute can be a `Symbol` or a `String`. Given a `String`
|
|
||||||
# with dots, the result is as though you concatenated that `String`
|
|
||||||
# onto the subject in an expression.
|
|
||||||
#
|
|
||||||
# When the subject is a `Hash`, you can refer to the Hash keys by
|
|
||||||
# specifying a `Symbol` or `String` in an array.
|
|
||||||
#
|
|
||||||
# With an implicit subject, `is_expected` can be used as an alternative
|
|
||||||
# to `should` (e.g. for one-liner use). An `are_expected` alias is also
|
|
||||||
# supplied.
|
|
||||||
#
|
|
||||||
# With an implicit subject, `will` can be used as an alternative
|
|
||||||
# to `expect { subject.attribute }.to matcher` (e.g. for one-liner use).
|
|
||||||
#
|
|
||||||
# With an implicit subject, `will_not` can be used as an alternative
|
|
||||||
# to `expect { subject.attribute }.to_not matcher` (e.g. for one-liner use).
|
|
||||||
#
|
|
||||||
# You can pass more than one argument on the `its` block to add
|
|
||||||
# some metadata to the generated example
|
|
||||||
#
|
|
||||||
# Note that this method does not modify `subject` in any way, so if you
|
|
||||||
# refer to `subject` in `let` or `before` blocks, you're still
|
|
||||||
# referring to the outer subject.
|
|
||||||
#
|
|
||||||
# @example
|
|
||||||
#
|
|
||||||
# describe Person do
|
|
||||||
# subject { Person.new }
|
|
||||||
# before { subject.age = 25 }
|
|
||||||
# its(:age) { should eq(25) }
|
|
||||||
# end
|
|
||||||
# @example
|
|
||||||
#
|
|
||||||
# describe Person do
|
|
||||||
# subject do
|
|
||||||
# Person.new.tap do |person|
|
|
||||||
# person.phone_numbers << "555-1212"
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
#
|
|
||||||
# its("phone_numbers.first") { should eq("555-1212") }
|
|
||||||
# end
|
|
||||||
# @example
|
|
||||||
#
|
|
||||||
# describe "a configuration Hash" do
|
|
||||||
# subject do
|
|
||||||
# { :max_users => 3,
|
|
||||||
# 'admin' => :all_permissions.
|
|
||||||
# 'john_doe' => {:permissions => [:read, :write]}}
|
|
||||||
# end
|
|
||||||
#
|
|
||||||
# its([:max_users]) { should eq(3) }
|
|
||||||
# its(['admin']) { should eq(:all_permissions) }
|
|
||||||
# its(['john_doe', :permissions]) { should eq([:read, :write]) }
|
|
||||||
#
|
|
||||||
# # You can still access its regular methods this way:
|
|
||||||
# its(:keys) { should include(:max_users) }
|
|
||||||
# its(:count) { should eq(2) }
|
|
||||||
# end
|
|
||||||
# @example
|
|
||||||
#
|
|
||||||
# describe Array do
|
|
||||||
# its(:size) { is_expected.to eq(0) }
|
|
||||||
# end
|
|
||||||
# @example
|
|
||||||
#
|
|
||||||
# describe Array do
|
|
||||||
# its(:foo) { will raise_error(NoMethodError) }
|
|
||||||
# end
|
|
||||||
# @example
|
|
||||||
#
|
|
||||||
# describe Array do
|
|
||||||
# its(:size) { will_not raise_error }
|
|
||||||
# end
|
|
||||||
# @example
|
|
||||||
#
|
|
||||||
# # This ...
|
|
||||||
# describe Array do
|
|
||||||
# its(:size, :focus) { should eq(0) }
|
|
||||||
# end
|
|
||||||
#
|
|
||||||
# # ... generates the same runtime structure as this:
|
|
||||||
# describe Array do
|
|
||||||
# describe "size" do
|
|
||||||
# it "should eq(0)", :focus do
|
|
||||||
# subject.size.should eq(0)
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
# @example
|
|
||||||
#
|
|
||||||
# # This ...
|
|
||||||
# describe Array do
|
|
||||||
# its(:size) { should eq(0) }
|
|
||||||
# end
|
|
||||||
#
|
|
||||||
# # ... generates the same runtime structure as this:
|
|
||||||
# describe Array do
|
|
||||||
# describe "size" do
|
|
||||||
# it "should eq(0)" do
|
|
||||||
# subject.size.should eq(0)
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
#
|
|
||||||
# source://rspec-its//lib/rspec/its.rb#121
|
|
||||||
def its(attribute, *options, &block); end
|
|
||||||
end
|
|
||||||
|
|
||||||
# source://rspec-its//lib/rspec/its/version.rb#3
|
|
||||||
RSpec::Its::VERSION = T.let(T.unsafe(nil), String)
|
|
@ -4,46 +4,6 @@
|
|||||||
# This is an autogenerated file for types exported from the `rubocop` gem.
|
# This is an autogenerated file for types exported from the `rubocop` gem.
|
||||||
# Please instead update this file by running `bin/tapioca gem rubocop`.
|
# Please instead update this file by running `bin/tapioca gem rubocop`.
|
||||||
|
|
||||||
# This module provides methods that make it easier to test Cops.
|
|
||||||
#
|
|
||||||
# source://rubocop//lib/rubocop/rspec/cop_helper.rb#6
|
|
||||||
module CopHelper
|
|
||||||
extend ::RSpec::Its
|
|
||||||
extend ::RSpec::Core::SharedContext
|
|
||||||
|
|
||||||
# source://rubocop//lib/rubocop/rspec/cop_helper.rb#77
|
|
||||||
def _investigate(cop, processed_source); end
|
|
||||||
|
|
||||||
# source://rubocop//lib/rubocop/rspec/cop_helper.rb#67
|
|
||||||
def autocorrect_source(source, file = T.unsafe(nil)); end
|
|
||||||
|
|
||||||
# source://rubocop//lib/rubocop/rspec/cop_helper.rb#63
|
|
||||||
def autocorrect_source_file(source); end
|
|
||||||
|
|
||||||
# source://rubocop//lib/rubocop/rspec/cop_helper.rb#43
|
|
||||||
def configuration; end
|
|
||||||
|
|
||||||
# source://rubocop//lib/rubocop/rspec/cop_helper.rb#16
|
|
||||||
def inspect_source(source, file = T.unsafe(nil)); end
|
|
||||||
|
|
||||||
# source://rubocop//lib/rubocop/rspec/cop_helper.rb#28
|
|
||||||
def parse_source(source, file = T.unsafe(nil)); end
|
|
||||||
|
|
||||||
# source://rubocop//lib/rubocop/rspec/cop_helper.rb#51
|
|
||||||
def registry; end
|
|
||||||
end
|
|
||||||
|
|
||||||
# RuboCop can be run in contexts where unexpected other libraries are included,
|
|
||||||
# which may interfere with its normal behavior. In order to test those
|
|
||||||
# situations, it may be necessary to require another library for the duration
|
|
||||||
# of one spec
|
|
||||||
#
|
|
||||||
# source://rubocop//lib/rubocop/rspec/host_environment_simulation_helper.rb#7
|
|
||||||
module HostEnvironmentSimulatorHelper
|
|
||||||
# source://rubocop//lib/rubocop/rspec/host_environment_simulation_helper.rb#8
|
|
||||||
def in_its_own_process_with(*files); end
|
|
||||||
end
|
|
||||||
|
|
||||||
class Parser::Source::Comment
|
class Parser::Source::Comment
|
||||||
include ::RuboCop::Ext::Comment
|
include ::RuboCop::Ext::Comment
|
||||||
end
|
end
|
||||||
@ -4906,12 +4866,6 @@ class RuboCop::Cop::Cop < ::RuboCop::Cop::Base
|
|||||||
# source://rubocop//lib/rubocop/cop/cop.rb#70
|
# source://rubocop//lib/rubocop/cop/cop.rb#70
|
||||||
def find_location(node, loc); end
|
def find_location(node, loc); end
|
||||||
|
|
||||||
# source://rubocop//lib/rubocop/rspec/cop_helper.rb#94
|
|
||||||
def highlights; end
|
|
||||||
|
|
||||||
# source://rubocop//lib/rubocop/rspec/cop_helper.rb#90
|
|
||||||
def messages; end
|
|
||||||
|
|
||||||
# Returns the value of attribute offenses.
|
# Returns the value of attribute offenses.
|
||||||
#
|
#
|
||||||
# source://rubocop//lib/rubocop/cop/cop.rb#12
|
# source://rubocop//lib/rubocop/cop/cop.rb#12
|
||||||
@ -55230,10 +55184,10 @@ RuboCop::Formatter::PacmanFormatter::FALLBACK_TERMINAL_WIDTH = T.let(T.unsafe(ni
|
|||||||
RuboCop::Formatter::PacmanFormatter::GHOST = T.let(T.unsafe(nil), String)
|
RuboCop::Formatter::PacmanFormatter::GHOST = T.let(T.unsafe(nil), String)
|
||||||
|
|
||||||
# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#17
|
# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#17
|
||||||
RuboCop::Formatter::PacmanFormatter::PACDOT = T.let(T.unsafe(nil), Rainbow::NullPresenter)
|
RuboCop::Formatter::PacmanFormatter::PACDOT = T.let(T.unsafe(nil), Rainbow::Presenter)
|
||||||
|
|
||||||
# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#16
|
# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#16
|
||||||
RuboCop::Formatter::PacmanFormatter::PACMAN = T.let(T.unsafe(nil), Rainbow::NullPresenter)
|
RuboCop::Formatter::PacmanFormatter::PACMAN = T.let(T.unsafe(nil), Rainbow::Presenter)
|
||||||
|
|
||||||
# This formatter display dots for files with no offenses and
|
# This formatter display dots for files with no offenses and
|
||||||
# letters for files with problems in the them. In the end it
|
# letters for files with problems in the them. In the end it
|
||||||
@ -56735,58 +56689,6 @@ RuboCop::RSpec::ExpectOffense::AnnotatedSource::ABBREV = T.let(T.unsafe(nil), St
|
|||||||
# source://rubocop//lib/rubocop/rspec/expect_offense.rb#215
|
# source://rubocop//lib/rubocop/rspec/expect_offense.rb#215
|
||||||
RuboCop::RSpec::ExpectOffense::AnnotatedSource::ANNOTATION_PATTERN = T.let(T.unsafe(nil), Regexp)
|
RuboCop::RSpec::ExpectOffense::AnnotatedSource::ANNOTATION_PATTERN = T.let(T.unsafe(nil), Regexp)
|
||||||
|
|
||||||
# RSpec formatter for use with running `rake spec` in parallel. This formatter
|
|
||||||
# removes much of the noise from RSpec so that only the important information
|
|
||||||
# will be surfaced by test-queue.
|
|
||||||
# It also adds metadata to the output in order to more easily find the text
|
|
||||||
# needed for outputting after the parallel run completes.
|
|
||||||
#
|
|
||||||
# source://rubocop//lib/rubocop/rspec/parallel_formatter.rb#13
|
|
||||||
class RuboCop::RSpec::ParallelFormatter < ::RSpec::Core::Formatters::BaseTextFormatter
|
|
||||||
# The BEGIN/END comments are used by `spec_runner.rake` to determine what
|
|
||||||
# output goes where in the final parallelized output, and should not be
|
|
||||||
# removed!
|
|
||||||
#
|
|
||||||
# source://rubocop//lib/rubocop/rspec/parallel_formatter.rb#22
|
|
||||||
def dump_failures(notification); end
|
|
||||||
|
|
||||||
# Don't show pending tests
|
|
||||||
#
|
|
||||||
# source://rubocop//lib/rubocop/rspec/parallel_formatter.rb#17
|
|
||||||
def dump_pending(*_arg0); end
|
|
||||||
|
|
||||||
# source://rubocop//lib/rubocop/rspec/parallel_formatter.rb#33
|
|
||||||
def dump_summary(summary); end
|
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
# source://rubocop//lib/rubocop/rspec/parallel_formatter.rb#53
|
|
||||||
def colorize_summary(summary); end
|
|
||||||
|
|
||||||
# source://rubocop//lib/rubocop/rspec/parallel_formatter.rb#40
|
|
||||||
def colorizer; end
|
|
||||||
|
|
||||||
# The BEGIN/END comments are used by `spec_runner.rake` to determine what
|
|
||||||
# output goes where in the final parallelized output, and should not be
|
|
||||||
# removed!
|
|
||||||
#
|
|
||||||
# source://rubocop//lib/rubocop/rspec/parallel_formatter.rb#66
|
|
||||||
def output_rerun_commands(summary); end
|
|
||||||
|
|
||||||
# The BEGIN/END comments are used by `spec_runner.rake` to determine what
|
|
||||||
# output goes where in the final parallelized output, and should not be
|
|
||||||
# removed!
|
|
||||||
#
|
|
||||||
# source://rubocop//lib/rubocop/rspec/parallel_formatter.rb#47
|
|
||||||
def output_summary(summary); end
|
|
||||||
|
|
||||||
# source://rubocop//lib/rubocop/rspec/parallel_formatter.rb#85
|
|
||||||
def pluralize(*args); end
|
|
||||||
|
|
||||||
# source://rubocop//lib/rubocop/rspec/parallel_formatter.rb#72
|
|
||||||
def totals(summary); end
|
|
||||||
end
|
|
||||||
|
|
||||||
# Common methods and behaviors for dealing with remote config files.
|
# Common methods and behaviors for dealing with remote config files.
|
||||||
#
|
#
|
||||||
# @api private
|
# @api private
|
||||||
|
@ -7,7 +7,7 @@ dependency_require_map = {
|
|||||||
}.freeze
|
}.freeze
|
||||||
|
|
||||||
additional_requires_map = {
|
additional_requires_map = {
|
||||||
"rubocop" => ["rubocop/rspec/support"],
|
"rubocop-rspec" => ["rubocop/rspec/expect_offense"],
|
||||||
}.freeze
|
}.freeze
|
||||||
|
|
||||||
# Freeze lockfile
|
# Freeze lockfile
|
||||||
|
@ -4,7 +4,7 @@ require "formula"
|
|||||||
require "software_spec"
|
require "software_spec"
|
||||||
|
|
||||||
RSpec.describe Bottle::Filename do
|
RSpec.describe Bottle::Filename do
|
||||||
subject { described_class.new(name, version, tag, rebuild) }
|
subject(:filename) { described_class.new(name, version, tag, rebuild) }
|
||||||
|
|
||||||
let(:name) { "user/repo/foo" }
|
let(:name) { "user/repo/foo" }
|
||||||
let(:version) { PkgVersion.new(Version.new("1.0"), 0) }
|
let(:version) { PkgVersion.new(Version.new("1.0"), 0) }
|
||||||
@ -12,42 +12,42 @@ RSpec.describe Bottle::Filename do
|
|||||||
let(:rebuild) { 0 }
|
let(:rebuild) { 0 }
|
||||||
|
|
||||||
describe "#extname" do
|
describe "#extname" do
|
||||||
its(:extname) { is_expected.to eq ".x86_64_linux.bottle.tar.gz" }
|
it(:extname) { expect(filename.extname).to eq ".x86_64_linux.bottle.tar.gz" }
|
||||||
|
|
||||||
context "when rebuild is 0" do
|
context "when rebuild is 0" do
|
||||||
its(:extname) { is_expected.to eq ".x86_64_linux.bottle.tar.gz" }
|
it(:extname) { expect(filename.extname).to eq ".x86_64_linux.bottle.tar.gz" }
|
||||||
end
|
end
|
||||||
|
|
||||||
context "when rebuild is 1" do
|
context "when rebuild is 1" do
|
||||||
let(:rebuild) { 1 }
|
let(:rebuild) { 1 }
|
||||||
|
|
||||||
its(:extname) { is_expected.to eq ".x86_64_linux.bottle.1.tar.gz" }
|
it(:extname) { expect(filename.extname).to eq ".x86_64_linux.bottle.1.tar.gz" }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#to_s and #to_str" do
|
describe "#to_s and #to_str" do
|
||||||
its(:to_s) { is_expected.to eq "foo--1.0.x86_64_linux.bottle.tar.gz" }
|
it(:to_s) { expect(filename.to_s).to eq "foo--1.0.x86_64_linux.bottle.tar.gz" }
|
||||||
its(:to_str) { is_expected.to eq "foo--1.0.x86_64_linux.bottle.tar.gz" }
|
it(:to_str) { expect(filename.to_str).to eq "foo--1.0.x86_64_linux.bottle.tar.gz" }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#url_encode" do
|
describe "#url_encode" do
|
||||||
its(:url_encode) { is_expected.to eq "foo-1.0.x86_64_linux.bottle.tar.gz" }
|
it(:url_encode) { expect(filename.url_encode).to eq "foo-1.0.x86_64_linux.bottle.tar.gz" }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#github_packages" do
|
describe "#github_packages" do
|
||||||
its(:github_packages) { is_expected.to eq "foo--1.0.x86_64_linux.bottle.tar.gz" }
|
it(:github_packages) { expect(filename.github_packages).to eq "foo--1.0.x86_64_linux.bottle.tar.gz" }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#json" do
|
describe "#json" do
|
||||||
its(:json) { is_expected.to eq "foo--1.0.x86_64_linux.bottle.json" }
|
it(:json) { expect(filename.json).to eq "foo--1.0.x86_64_linux.bottle.json" }
|
||||||
|
|
||||||
context "when rebuild is 1" do
|
context "when rebuild is 1" do
|
||||||
its(:json) { is_expected.to eq "foo--1.0.x86_64_linux.bottle.json" }
|
it(:json) { expect(filename.json).to eq "foo--1.0.x86_64_linux.bottle.json" }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "::create" do
|
describe "::create" do
|
||||||
subject { described_class.create(f, tag, rebuild) }
|
subject(:filename) { described_class.create(f, tag, rebuild) }
|
||||||
|
|
||||||
let(:f) do
|
let(:f) do
|
||||||
formula do
|
formula do
|
||||||
@ -56,6 +56,6 @@ RSpec.describe Bottle::Filename do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
its(:to_s) { is_expected.to eq "formula_name--1.0.x86_64_linux.bottle.tar.gz" }
|
it(:to_s) { expect(filename.to_s).to eq "formula_name--1.0.x86_64_linux.bottle.tar.gz" }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -37,13 +37,13 @@ RSpec.describe BuildEnvironment do
|
|||||||
end
|
end
|
||||||
|
|
||||||
context "with a single argument" do
|
context "with a single argument" do
|
||||||
subject do
|
subject(:build_env) do
|
||||||
Class.new(build_environment_dsl) do
|
Class.new(build_environment_dsl) do
|
||||||
env :std
|
env :std
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
its(:env) { is_expected.to be_std }
|
it(:env) { expect(build_env.env).to be_std }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -835,7 +835,7 @@ module Homebrew
|
|||||||
describe "#audit_deps" do
|
describe "#audit_deps" do
|
||||||
describe "a dependency on a macOS-provided keg-only formula" do
|
describe "a dependency on a macOS-provided keg-only formula" do
|
||||||
describe "which is allowlisted" do
|
describe "which is allowlisted" do
|
||||||
subject { fa }
|
subject(:f_a) { fa }
|
||||||
|
|
||||||
let(:fa) do
|
let(:fa) do
|
||||||
formula_auditor "foo", <<~RUBY, new_formula: true
|
formula_auditor "foo", <<~RUBY, new_formula: true
|
||||||
@ -863,11 +863,11 @@ module Homebrew
|
|||||||
fa.audit_deps
|
fa.audit_deps
|
||||||
end
|
end
|
||||||
|
|
||||||
its(:problems) { are_expected.to be_empty }
|
it(:problems) { expect(f_a.problems).to be_empty }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "which is not allowlisted", :needs_macos do
|
describe "which is not allowlisted", :needs_macos do
|
||||||
subject { fa }
|
subject(:f_a) { fa }
|
||||||
|
|
||||||
let(:fa) do
|
let(:fa) do
|
||||||
formula_auditor "foo", <<~RUBY, new_formula: true, core_tap: true
|
formula_auditor "foo", <<~RUBY, new_formula: true, core_tap: true
|
||||||
@ -895,8 +895,9 @@ module Homebrew
|
|||||||
fa.audit_deps
|
fa.audit_deps
|
||||||
end
|
end
|
||||||
|
|
||||||
its(:new_formula_problems) do
|
it(:new_formula_problems) do
|
||||||
are_expected.to include(a_hash_including(message: a_string_matching(/is provided by macOS/)))
|
expect(f_a.new_formula_problems)
|
||||||
|
.to include(a_hash_including(message: a_string_matching(/is provided by macOS/)))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -30,7 +30,7 @@ RSpec.describe ErrorDuringExecution do
|
|||||||
|
|
||||||
describe "#to_s" do
|
describe "#to_s" do
|
||||||
context "when only given a command and a status" do
|
context "when only given a command and a status" do
|
||||||
its(:to_s) { is_expected.to eq "Failure while executing; `false` exited with 1." }
|
it(:to_s) { expect(error.to_s).to eq "Failure while executing; `false` exited with 1." }
|
||||||
end
|
end
|
||||||
|
|
||||||
context "when additionally given the output" do
|
context "when additionally given the output" do
|
||||||
@ -45,7 +45,7 @@ RSpec.describe ErrorDuringExecution do
|
|||||||
allow($stdout).to receive(:tty?).and_return(true)
|
allow($stdout).to receive(:tty?).and_return(true)
|
||||||
end
|
end
|
||||||
|
|
||||||
its(:to_s) do
|
it(:to_s) do
|
||||||
expect(error.to_s).to eq <<~EOS
|
expect(error.to_s).to eq <<~EOS
|
||||||
Failure while executing; `false` exited with 1. Here's the output:
|
Failure while executing; `false` exited with 1. Here's the output:
|
||||||
This still worked.
|
This still worked.
|
||||||
@ -57,7 +57,7 @@ RSpec.describe ErrorDuringExecution do
|
|||||||
context "when command arguments contain special characters" do
|
context "when command arguments contain special characters" do
|
||||||
let(:command) { ["env", "PATH=/bin", "cat", "with spaces"] }
|
let(:command) { ["env", "PATH=/bin", "cat", "with spaces"] }
|
||||||
|
|
||||||
its(:to_s) do
|
it(:to_s) do
|
||||||
expect(error.to_s)
|
expect(error.to_s)
|
||||||
.to eq 'Failure while executing; `env PATH=/bin cat with\ spaces` exited with 1.'
|
.to eq 'Failure while executing; `env PATH=/bin cat with\ spaces` exited with 1.'
|
||||||
end
|
end
|
||||||
|
@ -4,15 +4,15 @@ require "exceptions"
|
|||||||
|
|
||||||
RSpec.describe "Exception" do
|
RSpec.describe "Exception" do
|
||||||
describe MultipleVersionsInstalledError do
|
describe MultipleVersionsInstalledError do
|
||||||
subject do
|
subject(:error) do
|
||||||
described_class.new <<~EOS
|
described_class.new <<~EOS
|
||||||
foo has multiple installed versions
|
foo has multiple installed versions
|
||||||
Run `brew uninstall --force foo` to remove all versions.
|
Run `brew uninstall --force foo` to remove all versions.
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
its(:to_s) do
|
it(:to_s) do
|
||||||
is_expected.to eq <<~EOS
|
expect(error.to_s).to eq <<~EOS
|
||||||
foo has multiple installed versions
|
foo has multiple installed versions
|
||||||
Run `brew uninstall --force foo` to remove all versions.
|
Run `brew uninstall --force foo` to remove all versions.
|
||||||
EOS
|
EOS
|
||||||
@ -20,15 +20,15 @@ RSpec.describe "Exception" do
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe NoSuchKegError do
|
describe NoSuchKegError do
|
||||||
subject { described_class.new("foo") }
|
subject(:error) { described_class.new("foo") }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to eq("No such keg: #{HOMEBREW_CELLAR}/foo") }
|
it(:to_s) { expect(error.to_s).to eq("No such keg: #{HOMEBREW_CELLAR}/foo") }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe FormulaValidationError do
|
describe FormulaValidationError do
|
||||||
subject(:error) { described_class.new("foo", "sha257", "magic") }
|
subject(:error) { described_class.new("foo", "sha257", "magic") }
|
||||||
|
|
||||||
its(:to_s) do
|
it(:to_s) do
|
||||||
expect(error.to_s).to eq(%q(invalid attribute for formula 'foo': sha257 ("magic")))
|
expect(error.to_s).to eq(%q(invalid attribute for formula 'foo': sha257 ("magic")))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -38,7 +38,7 @@ RSpec.describe "Exception" do
|
|||||||
|
|
||||||
let(:tap) { instance_double(Tap, user: "u", repo: "r", to_s: "u/r", installed?: false) }
|
let(:tap) { instance_double(Tap, user: "u", repo: "r", to_s: "u/r", installed?: false) }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to match(%r{Please tap it and then try again: brew tap u/r}) }
|
it(:to_s) { expect(error.to_s).to match(%r{Please tap it and then try again: brew tap u/r}) }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe FormulaUnavailableError do
|
describe FormulaUnavailableError do
|
||||||
@ -61,7 +61,7 @@ RSpec.describe "Exception" do
|
|||||||
end
|
end
|
||||||
|
|
||||||
context "without a dependent" do
|
context "without a dependent" do
|
||||||
its(:to_s) { is_expected.to eq('No available formula with the name "foo".') }
|
it(:to_s) { expect(error.to_s).to eq('No available formula with the name "foo".') }
|
||||||
end
|
end
|
||||||
|
|
||||||
context "with a dependent" do
|
context "with a dependent" do
|
||||||
@ -69,18 +69,18 @@ RSpec.describe "Exception" do
|
|||||||
error.dependent = "foobar"
|
error.dependent = "foobar"
|
||||||
end
|
end
|
||||||
|
|
||||||
its(:to_s) do
|
it(:to_s) do
|
||||||
expect(error.to_s).to eq('No available formula with the name "foo" (dependency of foobar).')
|
expect(error.to_s).to eq('No available formula with the name "foo" (dependency of foobar).')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe TapFormulaUnavailableError do
|
describe TapFormulaUnavailableError do
|
||||||
subject { described_class.new(tap, "foo") }
|
subject(:error) { described_class.new(tap, "foo") }
|
||||||
|
|
||||||
let(:tap) { instance_double(Tap, user: "u", repo: "r", to_s: "u/r", installed?: false) }
|
let(:tap) { instance_double(Tap, user: "u", repo: "r", to_s: "u/r", installed?: false) }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to match(%r{Please tap it and then try again: brew tap u/r}) }
|
it(:to_s) { expect(error.to_s).to match(%r{Please tap it and then try again: brew tap u/r}) }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe FormulaClassUnavailableError do
|
describe FormulaClassUnavailableError do
|
||||||
@ -100,7 +100,7 @@ RSpec.describe "Exception" do
|
|||||||
context "when there are no classes" do
|
context "when there are no classes" do
|
||||||
let(:list) { [] }
|
let(:list) { [] }
|
||||||
|
|
||||||
its(:to_s) do
|
it(:to_s) do
|
||||||
expect(error.to_s).to match(/Expected to find class Foo, but found no classes\./)
|
expect(error.to_s).to match(/Expected to find class Foo, but found no classes\./)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -108,7 +108,7 @@ RSpec.describe "Exception" do
|
|||||||
context "when the class is not derived from Formula" do
|
context "when the class is not derived from Formula" do
|
||||||
let(:list) { [mod.const_get(:Bar)] }
|
let(:list) { [mod.const_get(:Bar)] }
|
||||||
|
|
||||||
its(:to_s) do
|
it(:to_s) do
|
||||||
expect(error.to_s).to match(/Expected to find class Foo, but only found: Bar \(not derived from Formula!\)\./)
|
expect(error.to_s).to match(/Expected to find class Foo, but only found: Bar \(not derived from Formula!\)\./)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -116,128 +116,128 @@ RSpec.describe "Exception" do
|
|||||||
context "when the class is derived from Formula" do
|
context "when the class is derived from Formula" do
|
||||||
let(:list) { [mod.const_get(:Baz)] }
|
let(:list) { [mod.const_get(:Baz)] }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to match(/Expected to find class Foo, but only found: Baz\./) }
|
it(:to_s) { expect(error.to_s).to match(/Expected to find class Foo, but only found: Baz\./) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe FormulaUnreadableError do
|
describe FormulaUnreadableError do
|
||||||
subject { described_class.new("foo", formula_error) }
|
subject(:error) { described_class.new("foo", formula_error) }
|
||||||
|
|
||||||
let(:formula_error) { LoadError.new("bar") }
|
let(:formula_error) { LoadError.new("bar") }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to eq("foo: bar") }
|
it(:to_s) { expect(error.to_s).to eq("foo: bar") }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe TapUnavailableError do
|
describe TapUnavailableError do
|
||||||
subject { described_class.new("foo") }
|
subject(:error) { described_class.new("foo") }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to eq("No available tap foo.\nRun brew tap-new foo to create a new foo tap!\n") }
|
it(:to_s) { expect(error.to_s).to eq("No available tap foo.\nRun brew tap-new foo to create a new foo tap!\n") }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe TapAlreadyTappedError do
|
describe TapAlreadyTappedError do
|
||||||
subject { described_class.new("foo") }
|
subject(:error) { described_class.new("foo") }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to eq("Tap foo already tapped.\n") }
|
it(:to_s) { expect(error.to_s).to eq("Tap foo already tapped.\n") }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe BuildError do
|
describe BuildError do
|
||||||
subject { described_class.new(formula, "badprg", ["arg1", 2, Pathname.new("arg3"), :arg4], {}) }
|
subject(:error) { described_class.new(formula, "badprg", ["arg1", 2, Pathname.new("arg3"), :arg4], {}) }
|
||||||
|
|
||||||
let(:formula) { instance_double(Formula, name: "foo") }
|
let(:formula) { instance_double(Formula, name: "foo") }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to eq("Failed executing: badprg arg1 2 arg3 arg4") }
|
it(:to_s) { expect(error.to_s).to eq("Failed executing: badprg arg1 2 arg3 arg4") }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe OperationInProgressError do
|
describe OperationInProgressError do
|
||||||
subject { described_class.new("foo") }
|
subject(:error) { described_class.new("foo") }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to match(/Operation already in progress for foo/) }
|
it(:to_s) { expect(error.to_s).to match(/Operation already in progress for foo/) }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe FormulaInstallationAlreadyAttemptedError do
|
describe FormulaInstallationAlreadyAttemptedError do
|
||||||
subject { described_class.new(formula) }
|
subject(:error) { described_class.new(formula) }
|
||||||
|
|
||||||
let(:formula) { instance_double(Formula, full_name: "foo/bar") }
|
let(:formula) { instance_double(Formula, full_name: "foo/bar") }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to eq("Formula installation already attempted: foo/bar") }
|
it(:to_s) { expect(error.to_s).to eq("Formula installation already attempted: foo/bar") }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe FormulaConflictError do
|
describe FormulaConflictError do
|
||||||
subject { described_class.new(formula, [conflict]) }
|
subject(:error) { described_class.new(formula, [conflict]) }
|
||||||
|
|
||||||
let(:formula) { instance_double(Formula, full_name: "foo/qux") }
|
let(:formula) { instance_double(Formula, full_name: "foo/qux") }
|
||||||
let(:conflict) { instance_double(FormulaConflict, name: "bar", reason: "I decided to") }
|
let(:conflict) { instance_double(FormulaConflict, name: "bar", reason: "I decided to") }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to match(/Please `brew unlink bar` before continuing\./) }
|
it(:to_s) { expect(error.to_s).to match(/Please `brew unlink bar` before continuing\./) }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe CompilerSelectionError do
|
describe CompilerSelectionError do
|
||||||
subject { described_class.new(formula) }
|
subject(:error) { described_class.new(formula) }
|
||||||
|
|
||||||
let(:formula) { instance_double(Formula, full_name: "foo") }
|
let(:formula) { instance_double(Formula, full_name: "foo") }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to match(/foo cannot be built with any available compilers\./) }
|
it(:to_s) { expect(error.to_s).to match(/foo cannot be built with any available compilers\./) }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe CurlDownloadStrategyError do
|
describe CurlDownloadStrategyError do
|
||||||
context "when the file does not exist" do
|
context "when the file does not exist" do
|
||||||
subject { described_class.new("file:///tmp/foo") }
|
subject(:error) { described_class.new("file:///tmp/foo") }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to eq("File does not exist: /tmp/foo") }
|
it(:to_s) { expect(error.to_s).to eq("File does not exist: /tmp/foo") }
|
||||||
end
|
end
|
||||||
|
|
||||||
context "when the download failed" do
|
context "when the download failed" do
|
||||||
subject { described_class.new("https://brew.sh") }
|
subject(:error) { described_class.new("https://brew.sh") }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to eq("Download failed: https://brew.sh") }
|
it(:to_s) { expect(error.to_s).to eq("Download failed: https://brew.sh") }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe ErrorDuringExecution do
|
describe ErrorDuringExecution do
|
||||||
subject { described_class.new(["badprg", "arg1", "arg2"], status:) }
|
subject(:error) { described_class.new(["badprg", "arg1", "arg2"], status:) }
|
||||||
|
|
||||||
let(:status) { instance_double(Process::Status, exitstatus: 17, termsig: nil) }
|
let(:status) { instance_double(Process::Status, exitstatus: 17, termsig: nil) }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to eq("Failure while executing; `badprg arg1 arg2` exited with 17.") }
|
it(:to_s) { expect(error.to_s).to eq("Failure while executing; `badprg arg1 arg2` exited with 17.") }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe ChecksumMismatchError do
|
describe ChecksumMismatchError do
|
||||||
subject { described_class.new("/file.tar.gz", expected_checksum, actual_checksum) }
|
subject(:error) { described_class.new("/file.tar.gz", expected_checksum, actual_checksum) }
|
||||||
|
|
||||||
let(:expected_checksum) { instance_double(Checksum, to_s: "deadbeef") }
|
let(:expected_checksum) { instance_double(Checksum, to_s: "deadbeef") }
|
||||||
let(:actual_checksum) { instance_double(Checksum, to_s: "deadcafe") }
|
let(:actual_checksum) { instance_double(Checksum, to_s: "deadcafe") }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to match(/SHA256 mismatch/) }
|
it(:to_s) { expect(error.to_s).to match(/SHA256 mismatch/) }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe ResourceMissingError do
|
describe ResourceMissingError do
|
||||||
subject { described_class.new(formula, resource) }
|
subject(:error) { described_class.new(formula, resource) }
|
||||||
|
|
||||||
let(:formula) { instance_double(Formula, full_name: "bar") }
|
let(:formula) { instance_double(Formula, full_name: "bar") }
|
||||||
let(:resource) { instance_double(Resource, inspect: "<resource foo>") }
|
let(:resource) { instance_double(Resource, inspect: "<resource foo>") }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to eq("bar does not define resource <resource foo>") }
|
it(:to_s) { expect(error.to_s).to eq("bar does not define resource <resource foo>") }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe DuplicateResourceError do
|
describe DuplicateResourceError do
|
||||||
subject { described_class.new(resource) }
|
subject(:error) { described_class.new(resource) }
|
||||||
|
|
||||||
let(:resource) { instance_double(Resource, inspect: "<resource foo>") }
|
let(:resource) { instance_double(Resource, inspect: "<resource foo>") }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to eq("Resource <resource foo> is defined more than once") }
|
it(:to_s) { expect(error.to_s).to eq("Resource <resource foo> is defined more than once") }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe BottleFormulaUnavailableError do
|
describe BottleFormulaUnavailableError do
|
||||||
subject { described_class.new("/foo.bottle.tar.gz", "foo/1.0/.brew/foo.rb") }
|
subject(:error) { described_class.new("/foo.bottle.tar.gz", "foo/1.0/.brew/foo.rb") }
|
||||||
|
|
||||||
let(:formula) { instance_double(Formula, full_name: "foo") }
|
let(:formula) { instance_double(Formula, full_name: "foo") }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to match(/This bottle does not contain the formula file/) }
|
it(:to_s) { expect(error.to_s).to match(/This bottle does not contain the formula file/) }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe BuildFlagsError do
|
describe BuildFlagsError do
|
||||||
subject { described_class.new(["-s"]) }
|
subject(:error) { described_class.new(["-s"]) }
|
||||||
|
|
||||||
its(:to_s) { is_expected.to match(/flag:\s+-s\nrequires building tools/) }
|
it(:to_s) { expect(error.to_s).to match(/flag:\s+-s\nrequires building tools/) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -5,39 +5,39 @@ require "patch"
|
|||||||
RSpec.describe Patch do
|
RSpec.describe Patch do
|
||||||
describe "#create" do
|
describe "#create" do
|
||||||
context "with a simple patch" do
|
context "with a simple patch" do
|
||||||
subject { described_class.create(:p2, nil) }
|
subject(:patch) { described_class.create(:p2, nil) }
|
||||||
|
|
||||||
it { is_expected.to be_a ExternalPatch }
|
it { is_expected.to be_a ExternalPatch }
|
||||||
it { is_expected.to be_external }
|
it { is_expected.to be_external }
|
||||||
its(:strip) { is_expected.to eq(:p2) }
|
it(:strip) { expect(patch.strip).to eq(:p2) }
|
||||||
end
|
end
|
||||||
|
|
||||||
context "with a string patch" do
|
context "with a string patch" do
|
||||||
subject { described_class.create(:p0, "foo") }
|
subject(:patch) { described_class.create(:p0, "foo") }
|
||||||
|
|
||||||
it { is_expected.to be_a StringPatch }
|
it { is_expected.to be_a StringPatch }
|
||||||
its(:strip) { is_expected.to eq(:p0) }
|
it(:strip) { expect(patch.strip).to eq(:p0) }
|
||||||
end
|
end
|
||||||
|
|
||||||
context "with a string patch without strip" do
|
context "with a string patch without strip" do
|
||||||
subject { described_class.create("foo", nil) }
|
subject(:patch) { described_class.create("foo", nil) }
|
||||||
|
|
||||||
it { is_expected.to be_a StringPatch }
|
it { is_expected.to be_a StringPatch }
|
||||||
its(:strip) { is_expected.to eq(:p1) }
|
it(:strip) { expect(patch.strip).to eq(:p1) }
|
||||||
end
|
end
|
||||||
|
|
||||||
context "with a data patch" do
|
context "with a data patch" do
|
||||||
subject { described_class.create(:p0, :DATA) }
|
subject(:patch) { described_class.create(:p0, :DATA) }
|
||||||
|
|
||||||
it { is_expected.to be_a DATAPatch }
|
it { is_expected.to be_a DATAPatch }
|
||||||
its(:strip) { is_expected.to eq(:p0) }
|
it(:strip) { expect(patch.strip).to eq(:p0) }
|
||||||
end
|
end
|
||||||
|
|
||||||
context "with a data patch without strip" do
|
context "with a data patch without strip" do
|
||||||
subject { described_class.create(:DATA, nil) }
|
subject(:patch) { described_class.create(:DATA, nil) }
|
||||||
|
|
||||||
it { is_expected.to be_a DATAPatch }
|
it { is_expected.to be_a DATAPatch }
|
||||||
its(:strip) { is_expected.to eq(:p1) }
|
it(:strip) { expect(patch.strip).to eq(:p1) }
|
||||||
end
|
end
|
||||||
|
|
||||||
it "raises an error for unknown values" do
|
it "raises an error for unknown values" do
|
||||||
@ -55,9 +55,9 @@ RSpec.describe Patch do
|
|||||||
subject(:patch) { described_class.create(:p2, nil) }
|
subject(:patch) { described_class.create(:p2, nil) }
|
||||||
|
|
||||||
context "when the patch is empty" do
|
context "when the patch is empty" do
|
||||||
its(:resource) { is_expected.to be_a Resource::PatchResource }
|
it(:resource) { expect(patch.resource).to be_a Resource::PatchResource }
|
||||||
its(:patch_files) { is_expected.to eq(patch.resource.patch_files) }
|
it { expect(patch.patch_files).to eq(patch.resource.patch_files) }
|
||||||
its(:patch_files) { is_expected.to eq([]) }
|
it { expect(patch.patch_files).to eq([]) }
|
||||||
end
|
end
|
||||||
|
|
||||||
it "returns applied patch files" do
|
it "returns applied patch files" do
|
||||||
@ -77,9 +77,9 @@ RSpec.describe Patch do
|
|||||||
|
|
||||||
describe EmbeddedPatch do
|
describe EmbeddedPatch do
|
||||||
describe "#new" do
|
describe "#new" do
|
||||||
subject { described_class.new(:p1) }
|
subject(:patch) { described_class.new(:p1) }
|
||||||
|
|
||||||
its(:inspect) { is_expected.to eq("#<EmbeddedPatch: :p1>") }
|
it(:inspect) { expect(patch.inspect).to eq("#<EmbeddedPatch: :p1>") }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -87,11 +87,11 @@ RSpec.describe Patch do
|
|||||||
subject(:patch) { described_class.new(:p1) { url "file:///my.patch" } }
|
subject(:patch) { described_class.new(:p1) { url "file:///my.patch" } }
|
||||||
|
|
||||||
describe "#url" do
|
describe "#url" do
|
||||||
its(:url) { is_expected.to eq("file:///my.patch") }
|
it(:url) { expect(patch.url).to eq("file:///my.patch") }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#inspect" do
|
describe "#inspect" do
|
||||||
its(:inspect) { is_expected.to eq('#<ExternalPatch: :p1 "file:///my.patch">') }
|
it(:inspect) { expect(patch.inspect).to eq('#<ExternalPatch: :p1 "file:///my.patch">') }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#cached_download" do
|
describe "#cached_download" do
|
||||||
@ -99,7 +99,7 @@ RSpec.describe Patch do
|
|||||||
allow(patch.resource).to receive(:cached_download).and_return("/tmp/foo.tar.gz")
|
allow(patch.resource).to receive(:cached_download).and_return("/tmp/foo.tar.gz")
|
||||||
end
|
end
|
||||||
|
|
||||||
its(:cached_download) { is_expected.to eq("/tmp/foo.tar.gz") }
|
it(:cached_download) { expect(patch.cached_download).to eq("/tmp/foo.tar.gz") }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -11,30 +11,30 @@ RSpec.describe Requirement do
|
|||||||
let(:klass) { Class.new(described_class) }
|
let(:klass) { Class.new(described_class) }
|
||||||
|
|
||||||
describe "#tags" do
|
describe "#tags" do
|
||||||
subject { klass.new(tags) }
|
subject(:req) { klass.new(tags) }
|
||||||
|
|
||||||
context "with a single tag" do
|
context "with a single tag" do
|
||||||
let(:tags) { ["bar"] }
|
let(:tags) { ["bar"] }
|
||||||
|
|
||||||
its(:tags) { are_expected.to eq(tags) }
|
it(:tags) { expect(req.tags).to eq(tags) }
|
||||||
end
|
end
|
||||||
|
|
||||||
context "with multiple tags" do
|
context "with multiple tags" do
|
||||||
let(:tags) { ["bar", "baz"] }
|
let(:tags) { ["bar", "baz"] }
|
||||||
|
|
||||||
its(:tags) { are_expected.to eq(tags) }
|
it(:tags) { expect(req.tags).to eq(tags) }
|
||||||
end
|
end
|
||||||
|
|
||||||
context "with symbol tags" do
|
context "with symbol tags" do
|
||||||
let(:tags) { [:build] }
|
let(:tags) { [:build] }
|
||||||
|
|
||||||
its(:tags) { are_expected.to eq(tags) }
|
it(:tags) { expect(req.tags).to eq(tags) }
|
||||||
end
|
end
|
||||||
|
|
||||||
context "with symbol and string tags" do
|
context "with symbol and string tags" do
|
||||||
let(:tags) { [:build, "bar"] }
|
let(:tags) { [:build, "bar"] }
|
||||||
|
|
||||||
its(:tags) { are_expected.to eq(tags) }
|
it(:tags) { expect(req.tags).to eq(tags) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -168,8 +168,8 @@ RSpec.describe Requirement do
|
|||||||
stub_const const.to_s, Class.new(described_class)
|
stub_const const.to_s, Class.new(described_class)
|
||||||
end
|
end
|
||||||
|
|
||||||
its(:name) { is_expected.to eq("foo") }
|
it(:name) { expect(requirement.name).to eq("foo") }
|
||||||
its(:option_names) { are_expected.to eq(["foo"]) }
|
it(:option_names) { expect(requirement.option_names).to eq(["foo"]) }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#modify_build_environment" do
|
describe "#modify_build_environment" do
|
||||||
|
@ -24,7 +24,6 @@ Warnings.ignore :parser_syntax do
|
|||||||
require "rubocop"
|
require "rubocop"
|
||||||
end
|
end
|
||||||
|
|
||||||
require "rspec/its"
|
|
||||||
require "rspec/github"
|
require "rspec/github"
|
||||||
require "rspec/retry"
|
require "rspec/retry"
|
||||||
require "rspec/sorbet"
|
require "rspec/sorbet"
|
||||||
|
@ -21,7 +21,7 @@ RSpec.describe SystemCommand do
|
|||||||
let(:sudo_as_root) { false }
|
let(:sudo_as_root) { false }
|
||||||
|
|
||||||
context "when given some environment variables" do
|
context "when given some environment variables" do
|
||||||
its("run!.stdout") { is_expected.to eq("123") }
|
it("run!.stdout") { expect(command.run!.stdout).to eq("123") }
|
||||||
|
|
||||||
describe "the resulting command line" do
|
describe "the resulting command line" do
|
||||||
it "includes the given variables explicitly" do
|
it "includes the given variables explicitly" do
|
||||||
@ -94,10 +94,10 @@ RSpec.describe SystemCommand do
|
|||||||
|
|
||||||
context "when the exit code is 0" do
|
context "when the exit code is 0" do
|
||||||
describe "its result" do
|
describe "its result" do
|
||||||
subject { described_class.run("true") }
|
subject(:result) { described_class.run("true") }
|
||||||
|
|
||||||
it { is_expected.to be_a_success }
|
it { is_expected.to be_a_success }
|
||||||
its(:exit_status) { is_expected.to eq(0) }
|
it(:exit_status) { expect(result.exit_status).to eq(0) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -114,10 +114,10 @@ RSpec.describe SystemCommand do
|
|||||||
|
|
||||||
context "with a command that does not have to succeed" do
|
context "with a command that does not have to succeed" do
|
||||||
describe "its result" do
|
describe "its result" do
|
||||||
subject { described_class.run(command) }
|
subject(:result) { described_class.run(command) }
|
||||||
|
|
||||||
it { is_expected.not_to be_a_success }
|
it { is_expected.not_to be_a_success }
|
||||||
its(:exit_status) { is_expected.to eq(1) }
|
it(:exit_status) { expect(result.exit_status).to eq(1) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -131,10 +131,10 @@ RSpec.describe SystemCommand do
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe "its result" do
|
describe "its result" do
|
||||||
subject { described_class.run(command, args: [path]) }
|
subject(:result) { described_class.run(command, args: [path]) }
|
||||||
|
|
||||||
it { is_expected.to be_a_success }
|
it { is_expected.to be_a_success }
|
||||||
its(:stdout) { is_expected.to eq("somefile\n") }
|
it(:stdout) { expect(result.stdout).to eq("somefile\n") }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -149,11 +149,11 @@ RSpec.describe SystemCommand do
|
|||||||
|
|
||||||
shared_examples "it returns '1 2 3 4 5 6'" do
|
shared_examples "it returns '1 2 3 4 5 6'" do
|
||||||
describe "its result" do
|
describe "its result" do
|
||||||
subject { described_class.run(command, **options) }
|
subject(:result) { described_class.run(command, **options) }
|
||||||
|
|
||||||
it { is_expected.to be_a_success }
|
it { is_expected.to be_a_success }
|
||||||
its(:stdout) { is_expected.to eq([1, 3, 5, nil].join("\n")) }
|
it(:stdout) { expect(result.stdout).to eq([1, 3, 5, nil].join("\n")) }
|
||||||
its(:stderr) { is_expected.to eq([2, 4, 6, nil].join("\n")) }
|
it(:stderr) { expect(result.stderr).to eq([2, 4, 6, nil].join("\n")) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -279,13 +279,13 @@ RSpec.describe Tap do
|
|||||||
context "when using the default remote" do
|
context "when using the default remote" do
|
||||||
let(:remote) { "https://github.com/Homebrew/homebrew-services" }
|
let(:remote) { "https://github.com/Homebrew/homebrew-services" }
|
||||||
|
|
||||||
its(:custom_remote?) { is_expected.to be false }
|
it(:custom_remote?) { expect(tap.custom_remote?).to be false }
|
||||||
end
|
end
|
||||||
|
|
||||||
context "when using a non-default remote" do
|
context "when using a non-default remote" do
|
||||||
let(:remote) { "git@github.com:Homebrew/homebrew-services" }
|
let(:remote) { "git@github.com:Homebrew/homebrew-services" }
|
||||||
|
|
||||||
its(:custom_remote?) { is_expected.to be true }
|
it(:custom_remote?) { expect(tap.custom_remote?).to be true }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
require "utils/user"
|
require "utils/user"
|
||||||
|
|
||||||
RSpec.describe User do
|
RSpec.describe User do
|
||||||
subject { described_class.current }
|
subject(:user) { described_class.current }
|
||||||
|
|
||||||
it { is_expected.to eq ENV.fetch("USER") }
|
it { is_expected.to eq ENV.fetch("USER") }
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ RSpec.describe User do
|
|||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
its(:gui?) { is_expected.to be true }
|
it(:gui?) { expect(user.gui?).to be true }
|
||||||
end
|
end
|
||||||
|
|
||||||
context "when the current user is not in a console session" do
|
context "when the current user is not in a console session" do
|
||||||
@ -33,7 +33,7 @@ RSpec.describe User do
|
|||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|
||||||
its(:gui?) { is_expected.to be false }
|
it(:gui?) { expect(user.gui?).to be false }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -80,7 +80,6 @@ $:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version
|
|||||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rspec-mocks-3.13.0/lib")
|
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rspec-mocks-3.13.0/lib")
|
||||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rspec-3.13.0/lib")
|
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rspec-3.13.0/lib")
|
||||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rspec-github-2.4.0/lib")
|
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rspec-github-2.4.0/lib")
|
||||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rspec-its-1.3.0/lib")
|
|
||||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rspec-retry-0.6.2/lib")
|
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rspec-retry-0.6.2/lib")
|
||||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rspec-sorbet-1.9.2/lib")
|
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rspec-sorbet-1.9.2/lib")
|
||||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rspec_junit_formatter-0.6.0/lib")
|
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rspec_junit_formatter-0.6.0/lib")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user