diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 455874ef5f43d0b7239a0a25fbab5e7e93f3fee9..118b15499507b42444074c76e32a2bfd224ad1e8 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -60,6 +60,14 @@ jobs:
     - name: Run brew man
       run: brew man --fail-if-changed
 
+    - name: Install brew tests dependencies
+      if: matrix.os == 'macOS-latest'
+      run: |
+        brew install subversion
+        Library/Homebrew/shims/scm/svn --homebrew=print-path
+        which svn
+        which svnadmin
+
     - name: Run brew tests
       run: |
         # brew tests doesn't like world writable directories
diff --git a/Library/Homebrew/test/spec_helper.rb b/Library/Homebrew/test/spec_helper.rb
index 0408ea72a47f6fc7e5ff58c2c4dc55f054a7b8a9..406ffc7561305a17ceeeef0a93b35c428fd51dd6 100644
--- a/Library/Homebrew/test/spec_helper.rb
+++ b/Library/Homebrew/test/spec_helper.rb
@@ -125,17 +125,23 @@ RSpec.configure do |config|
   end
 
   config.before(:each, :needs_svn) do
-    skip "Subversion is not installed." unless quiet_system "#{HOMEBREW_SHIMS_PATH}/scm/svn", "--version"
+    svn_shim = HOMEBREW_SHIMS_PATH/"scm/svn"
+    skip "Subversion is not installed." unless quiet_system svn_shim, "--version"
 
+    svn_shim_path = Pathname(Utils.popen_read(svn_shim, "--homebrew=print-path").chomp.presence)
     svn_paths = PATH.new(ENV["PATH"])
+    svn_paths.prepend(svn_shim_path.dirname)
+
     if OS.mac?
       xcrun_svn = Utils.popen_read("xcrun", "-f", "svn")
       svn_paths.append(File.dirname(xcrun_svn)) if $CHILD_STATUS.success? && xcrun_svn.present?
     end
 
     svn = which("svn", svn_paths)
+    skip "svn is not installed." unless svn
+
     svnadmin = which("svnadmin", svn_paths)
-    skip "Subversion is not installed." if !svn || !svnadmin
+    skip "svnadmin is not installed." unless svnadmin
 
     ENV["PATH"] = PATH.new(ENV["PATH"])
                       .append(svn.dirname)
@@ -143,7 +149,7 @@ RSpec.configure do |config|
   end
 
   config.before(:each, :needs_unzip) do
-    skip "UnZip is not installed." unless which("unzip")
+    skip "Unzip is not installed." unless which("unzip")
   end
 
   config.around do |example|
diff --git a/Library/Homebrew/test/utils/git_spec.rb b/Library/Homebrew/test/utils/git_spec.rb
index 3212eb8bf5a1a356d1d655ddcb8e9a2bf241d4a8..73074226d34a34f671e2196ddf48a02224fa1e0b 100644
--- a/Library/Homebrew/test/utils/git_spec.rb
+++ b/Library/Homebrew/test/utils/git_spec.rb
@@ -149,14 +149,14 @@ describe Utils::Git do
         expect { described_class.ensure_installed! }.to raise_error("Git is unavailable")
       end
 
-      it "installs git" do
-        skip if ENV["HOMEBREW_TEST_GENERIC_OS"]
+      unless ENV["HOMEBREW_TEST_GENERIC_OS"]
+        it "installs git" do
+          expect(described_class).to receive(:available?).and_return(false)
+          expect(described_class).to receive(:safe_system).with(HOMEBREW_BREW_FILE, "install", "git").and_return(true)
+          expect(described_class).to receive(:available?).and_return(true)
 
-        expect(described_class).to receive(:available?).and_return(false)
-        expect(described_class).to receive(:safe_system).with(HOMEBREW_BREW_FILE, "install", "git").and_return(true)
-        expect(described_class).to receive(:available?).and_return(true)
-
-        described_class.ensure_installed!
+          described_class.ensure_installed!
+        end
       end
     end
   end