From ae8ebf9464b5c980e6ec28f17d5ce4236ab408b1 Mon Sep 17 00:00:00 2001
From: Markus Reiter <me@reitermark.us>
Date: Tue, 17 Nov 2020 04:49:54 +0100
Subject: [PATCH] Add `rspec-sorbet`.

---
 .gitignore                                    |  1 +
 Library/Homebrew/Gemfile                      |  1 +
 Library/Homebrew/Gemfile.lock                 |  4 +
 ...90691c90f7267b9d7dc28e8f5b7150840f9e48.rbi |  8 ++
 .../sorbet/rbi/hidden-definitions/hidden.rbi  | 75 +++++++++++++++++--
 Library/Homebrew/test/spec_helper.rb          |  5 ++
 6 files changed, 88 insertions(+), 6 deletions(-)
 create mode 100644 Library/Homebrew/sorbet/rbi/gems/rspec-sorbet@1.6.0-7390691c90f7267b9d7dc28e8f5b7150840f9e48.rbi

diff --git a/.gitignore b/.gitignore
index 0a7ed12aff..ca8d5f18ab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -128,6 +128,7 @@
 **/vendor/bundle/ruby/*/gems/rspec-mocks-*/
 **/vendor/bundle/ruby/*/gems/rspec-retry-*/
 **/vendor/bundle/ruby/*/gems/rspec-support-*/
+**/vendor/bundle/ruby/*/gems/rspec-sorbet-*/
 **/vendor/bundle/ruby/*/gems/rspec-wait-*/
 **/vendor/bundle/ruby/*/gems/rubocop-1*/
 **/vendor/bundle/ruby/*/gems/rubocop-ast-*/
diff --git a/Library/Homebrew/Gemfile b/Library/Homebrew/Gemfile
index 57014db73f..00681d456d 100644
--- a/Library/Homebrew/Gemfile
+++ b/Library/Homebrew/Gemfile
@@ -10,6 +10,7 @@ gem "ronn", require: false
 gem "rspec", require: false
 gem "rspec-its", require: false
 gem "rspec-retry", require: false
+gem "rspec-sorbet", require: false
 gem "rspec-wait", require: false
 gem "rubocop", require: false
 gem "simplecov", require: false
diff --git a/Library/Homebrew/Gemfile.lock b/Library/Homebrew/Gemfile.lock
index 97e811bbfb..8163765500 100644
--- a/Library/Homebrew/Gemfile.lock
+++ b/Library/Homebrew/Gemfile.lock
@@ -95,6 +95,9 @@ GEM
       rspec-support (~> 3.10.0)
     rspec-retry (0.6.2)
       rspec-core (> 3.3)
+    rspec-sorbet (1.7.0)
+      sorbet
+      sorbet-runtime
     rspec-support (3.10.0)
     rspec-wait (0.0.9)
       rspec (>= 3, < 4)
@@ -167,6 +170,7 @@ DEPENDENCIES
   rspec
   rspec-its
   rspec-retry
+  rspec-sorbet
   rspec-wait
   rubocop
   rubocop-performance
diff --git a/Library/Homebrew/sorbet/rbi/gems/rspec-sorbet@1.6.0-7390691c90f7267b9d7dc28e8f5b7150840f9e48.rbi b/Library/Homebrew/sorbet/rbi/gems/rspec-sorbet@1.6.0-7390691c90f7267b9d7dc28e8f5b7150840f9e48.rbi
new file mode 100644
index 0000000000..bbc503d5d5
--- /dev/null
+++ b/Library/Homebrew/sorbet/rbi/gems/rspec-sorbet@1.6.0-7390691c90f7267b9d7dc28e8f5b7150840f9e48.rbi
@@ -0,0 +1,8 @@
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for types exported from the `rspec-sorbet` gem.
+# Please instead update this file by running `tapioca sync`.
+
+# typed: true
+
+# THIS IS AN EMPTY RBI FILE.
+# see https://github.com/Shopify/tapioca/blob/master/README.md#manual-gem-requires
diff --git a/Library/Homebrew/sorbet/rbi/hidden-definitions/hidden.rbi b/Library/Homebrew/sorbet/rbi/hidden-definitions/hidden.rbi
index 1c8c484e4f..f3328d7d4b 100644
--- a/Library/Homebrew/sorbet/rbi/hidden-definitions/hidden.rbi
+++ b/Library/Homebrew/sorbet/rbi/hidden-definitions/hidden.rbi
@@ -3030,6 +3030,16 @@ class BottleSpecification
   extend ::T::Private::Methods::SingletonMethodHooks
 end
 
+module BuildEnvironment::DSL
+  extend ::T::Private::Methods::MethodHooks
+  extend ::T::Private::Methods::SingletonMethodHooks
+end
+
+class BuildEnvironment
+  extend ::T::Private::Methods::MethodHooks
+  extend ::T::Private::Methods::SingletonMethodHooks
+end
+
 Bundler::Deprecate = Gem::Deprecate
 
 class Bundler::Env
@@ -5479,6 +5489,11 @@ class Cask::Audit
   extend ::T::Private::Methods::SingletonMethodHooks
 end
 
+module Cask::Cache
+  extend ::T::Private::Methods::MethodHooks
+  extend ::T::Private::Methods::SingletonMethodHooks
+end
+
 class Cask::Cask
   def app(&block); end
 
@@ -5806,11 +5821,21 @@ class Cask::MultipleCaskErrors
   extend ::T::Private::Methods::SingletonMethodHooks
 end
 
+class Cask::Pkg
+  extend ::T::Private::Methods::MethodHooks
+  extend ::T::Private::Methods::SingletonMethodHooks
+end
+
 module Cask::Quarantine
   extend ::T::Private::Methods::MethodHooks
   extend ::T::Private::Methods::SingletonMethodHooks
 end
 
+module Cask::Staged
+  extend ::T::Private::Methods::MethodHooks
+  extend ::T::Private::Methods::SingletonMethodHooks
+end
+
 module Cask::Utils
   extend ::T::Private::Methods::MethodHooks
   extend ::T::Private::Methods::SingletonMethodHooks
@@ -8046,6 +8071,11 @@ class GitHub::Actions::Annotation
   extend ::T::Private::Methods::SingletonMethodHooks
 end
 
+module GitHub::Actions
+  extend ::T::Private::Methods::MethodHooks
+  extend ::T::Private::Methods::SingletonMethodHooks
+end
+
 module GitHub
   extend ::T::Private::Methods::MethodHooks
   extend ::T::Private::Methods::SingletonMethodHooks
@@ -8132,6 +8162,11 @@ class Homebrew::CLI::Args
   extend ::T::Private::Methods::SingletonMethodHooks
 end
 
+class Homebrew::CLI::NamedArgs
+  extend ::T::Private::Methods::MethodHooks
+  extend ::T::Private::Methods::SingletonMethodHooks
+end
+
 class Homebrew::CLI::Parser
   include ::Homebrew::CLI::Parser::Compat
 end
@@ -8287,6 +8322,11 @@ class Homebrew::Style::LineLocation
   extend ::T::Private::Methods::SingletonMethodHooks
 end
 
+class Homebrew::TapAuditor
+  extend ::T::Private::Methods::MethodHooks
+  extend ::T::Private::Methods::SingletonMethodHooks
+end
+
 module Homebrew
   extend ::FileUtils::StreamUtils_
   extend ::T::Private::Methods::MethodHooks
@@ -13289,8 +13329,6 @@ end
 class Net::HTTPAlreadyReported
 end
 
-Net::HTTPClientError::EXCEPTION_TYPE = Net::HTTPServerException
-
 Net::HTTPClientErrorCode = Net::HTTPClientError
 
 class Net::HTTPEarlyHints
@@ -13352,8 +13390,6 @@ end
 class Net::HTTPRangeNotSatisfiable
 end
 
-Net::HTTPRedirection::EXCEPTION_TYPE = Net::HTTPRetriableError
-
 Net::HTTPRedirectionCode = Net::HTTPRedirection
 
 Net::HTTPRequestURITooLarge = Net::HTTPURITooLong
@@ -13362,8 +13398,6 @@ Net::HTTPResponceReceiver = Net::HTTPResponse
 
 Net::HTTPRetriableCode = Net::HTTPRedirection
 
-Net::HTTPServerError::EXCEPTION_TYPE = Net::HTTPFatalError
-
 Net::HTTPServerErrorCode = Net::HTTPServerError
 
 Net::HTTPSession = Net::HTTP
@@ -25362,6 +25396,25 @@ end
 
 RSpec::SharedContext = RSpec::Core::SharedContext
 
+module RSpec::Sorbet
+end
+
+module RSpec::Sorbet::Doubles
+  def allow_doubles!(); end
+
+  def allow_instance_doubles!(); end
+  INLINE_DOUBLE_REGEX = ::T.let(nil, ::T.untyped)
+  TYPED_ARRAY_MESSAGE = ::T.let(nil, ::T.untyped)
+  VERIFYING_DOUBLE_OR_DOUBLE = ::T.let(nil, ::T.untyped)
+end
+
+module RSpec::Sorbet::Doubles
+end
+
+module RSpec::Sorbet
+  extend ::RSpec::Sorbet::Doubles
+end
+
 module RSpec::Support
   DEFAULT_FAILURE_NOTIFIER = ::T.let(nil, ::T.untyped)
   DEFAULT_WARNING_NOTIFIER = ::T.let(nil, ::T.untyped)
@@ -30740,6 +30793,16 @@ module Utils::Inreplace
   extend ::T::Private::Methods::SingletonMethodHooks
 end
 
+class Utils::Shebang::RewriteInfo
+  extend ::T::Private::Methods::MethodHooks
+  extend ::T::Private::Methods::SingletonMethodHooks
+end
+
+module Utils::Shebang
+  extend ::T::Private::Methods::MethodHooks
+  extend ::T::Private::Methods::SingletonMethodHooks
+end
+
 module Utils::Shell
   extend ::T::Private::Methods::MethodHooks
   extend ::T::Private::Methods::SingletonMethodHooks
diff --git a/Library/Homebrew/test/spec_helper.rb b/Library/Homebrew/test/spec_helper.rb
index f52ca51233..4a9c2a0b0c 100644
--- a/Library/Homebrew/test/spec_helper.rb
+++ b/Library/Homebrew/test/spec_helper.rb
@@ -26,6 +26,7 @@ end
 require "rspec/its"
 require "rspec/wait"
 require "rspec/retry"
+require "rspec/sorbet"
 require "rubocop"
 require "rubocop/rspec/support"
 require "find"
@@ -58,6 +59,10 @@ TEST_DIRECTORIES = [
   HOMEBREW_TEMP,
 ].freeze
 
+# Make `instance_double` and `class_double`
+# work when type-checking is active.
+RSpec::Sorbet.allow_doubles!
+
 RSpec.configure do |config|
   config.order = :random
 
-- 
GitLab