From b6552531594923e4068b38ca4be9ca6d6ba3c22c Mon Sep 17 00:00:00 2001 From: Oguz Kocer Date: Tue, 24 Oct 2023 13:56:25 -0400 Subject: [PATCH] Adds FL_GIT_BRANCH_DONT_USE_ENV_VARS to git_branch --- fastlane/lib/fastlane/actions/git_branch.rb | 2 +- fastlane/lib/fastlane/helper/git_helper.rb | 3 +++ fastlane/spec/actions_specs/git_branch_spec.rb | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/fastlane/lib/fastlane/actions/git_branch.rb b/fastlane/lib/fastlane/actions/git_branch.rb index 1bd8b7025b0..6b6a13eeeae 100644 --- a/fastlane/lib/fastlane/actions/git_branch.rb +++ b/fastlane/lib/fastlane/actions/git_branch.rb @@ -16,7 +16,7 @@ def self.description end def self.details - "If no branch could be found, this action will return an empty string. This is a wrapper for the internal action Actions.git_branch" + "If no branch could be found, this action will return an empty string. If `FL_GIT_BRANCH_DONT_USE_ENV_VARS` is `true`, it'll ignore CI ENV vars. This is a wrapper for the internal action Actions.git_branch" end def self.available_options diff --git a/fastlane/lib/fastlane/helper/git_helper.rb b/fastlane/lib/fastlane/helper/git_helper.rb index c8b181dd988..34892dc6fa0 100644 --- a/fastlane/lib/fastlane/helper/git_helper.rb +++ b/fastlane/lib/fastlane/helper/git_helper.rb @@ -121,7 +121,10 @@ def self.last_git_commit_hash(short) # Returns the current git branch, or "HEAD" if it's not checked out to any branch # Can be replaced using the environment variable `GIT_BRANCH` + # unless `FL_GIT_BRANCH_DONT_USE_ENV_VARS` is `true` def self.git_branch + return self.git_branch_name_using_HEAD if FastlaneCore::Env.truthy?('FL_GIT_BRANCH_DONT_USE_ENV_VARS') + env_name = SharedValues::GIT_BRANCH_ENV_VARS.find { |env_var| FastlaneCore::Env.truthy?(env_var) } ENV.fetch(env_name.to_s) do self.git_branch_name_using_HEAD diff --git a/fastlane/spec/actions_specs/git_branch_spec.rb b/fastlane/spec/actions_specs/git_branch_spec.rb index e09395f0007..19135c16a38 100644 --- a/fastlane/spec/actions_specs/git_branch_spec.rb +++ b/fastlane/spec/actions_specs/git_branch_spec.rb @@ -13,6 +13,24 @@ end end + describe "CI set ENV values but FL_GIT_BRANCH_DONT_USE_ENV_VARS is true" do + Fastlane::Actions::SharedValues::GIT_BRANCH_ENV_VARS.each do |env_var| + it "gets the value from Git directly with #{env_var}" do + expect(Fastlane::Actions).to receive(:sh) + .with("git rev-parse --abbrev-ref HEAD", log: false) + .and_return("branch-name-from-git") + + FastlaneSpec::Env.with_env_values(env_var => "#{env_var}-branch-name", 'FL_GIT_BRANCH_DONT_USE_ENV_VARS' => 'true') do + result = Fastlane::FastFile.new.parse("lane :test do + git_branch + end").runner.execute(:test) + + expect(result).to eq("branch-name-from-git") + end + end + end + end + describe "with no CI set ENV values" do it "gets the value from Git directly" do expect(Fastlane::Actions).to receive(:sh)