<NME> Rakefile
<BEF> # frozen_string_literal: true

# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Auto-generated by gapic-generator-ruby. DO NOT EDIT!

require "bundler/setup"
require "bundler/gem_tasks"

require "rubocop/rake_task"
RuboCop::RakeTask.new

require "rake/testtask"
desc "Run tests."
Rake::TestTask.new do |t|
  t.libs << "test"
  t.test_files = FileList["test/**/*_test.rb"]
  t.warning = true
end

namespace :test do
  desc "Runs tests with coverage."
  task :coverage do
    require "simplecov"
    SimpleCov.start do
      command_name "google-cloud-billing"
      track_files "lib/**/*.rb"
      add_filter "test/"
    end

    Rake::Task[:test].invoke
  end
end

desc "Runs the smoke tests."
Rake::TestTask.new :smoke_test do |t|
  t.test_files = FileList["acceptance/**/*smoke_test.rb"]
  t.warning = false
end

namespace :smoke_test do
  desc "Runs smoke tests with coverage."
  task :coverage do
    require "simplecov"
    SimpleCov.start do
      command_name "google-cloud-billing"
      track_files "lib/**/*.rb"
      add_filter "test/"
    end

    Rake::Task[:smoke_test].invoke
  end
end

# Acceptance tests
desc "Run the google-cloud-billing acceptance tests."
task :acceptance, :project, :keyfile do |t, args|
  project = args[:project]
  project ||=
    ENV["BILLING_TEST_PROJECT"] ||
    ENV["GCLOUD_TEST_PROJECT"]
  keyfile = args[:keyfile]
  keyfile ||=
    ENV["BILLING_TEST_KEYFILE"] ||
    ENV["GCLOUD_TEST_KEYFILE"]
  if keyfile
    keyfile = File.read keyfile
  else
    keyfile ||=
      ENV["BILLING_TEST_KEYFILE_JSON"] ||
      ENV["GCLOUD_TEST_KEYFILE_JSON"]
  end
  if project.nil? || keyfile.nil?
    fail "You must provide a project and keyfile. e.g. rake acceptance[test123, /path/to/keyfile.json] or BILLING_TEST_PROJECT=test123 BILLING_TEST_KEYFILE=/path/to/keyfile.json rake acceptance"
  end
  require "google/cloud/billing/v1/cloud_billing/credentials"
  ::Google::Cloud::Billing::V1::CloudBilling::Credentials.env_vars.each do |path|
    ENV[path] = nil
  end
  ENV["BILLING_PROJECT"] = project
  ENV["BILLING_TEST_PROJECT"] = project
  ENV["BILLING_KEYFILE_JSON"] = keyfile

  Rake::Task["acceptance:run"].invoke
end

namespace :acceptance do
  task :run do
    if File.directory? "acceptance"
      Rake::Task[:smoke_test].invoke
    else
      puts "The google-cloud-billing gem has no acceptance tests."
    end
  end

  desc "Run acceptance tests with coverage."
  task :coverage do
  end

  desc "Run acceptance cleanup."
  task :cleanup do
  end
end

task :samples do
  Rake::Task["samples:latest"].invoke
end

namespace :samples do
  task :latest do
    if File.directory? "samples"
      Dir.chdir "samples" do
        Bundler.with_clean_env do
          ENV["GOOGLE_CLOUD_SAMPLES_TEST"] = "not_master"
          sh "bundle update"
          sh "bundle exec rake test_master"
        end
      end
    else
      puts "The google-cloud-billing gem has no samples to test."
    end
  end

  task :master do
    if File.directory? "samples"
      Dir.chdir "samples" do
        Bundler.with_clean_env do
          ENV["GOOGLE_CLOUD_SAMPLES_TEST"] = "master"
          sh "bundle update"
          sh "bundle exec rake test_master"
        end
      end
    else
      puts "The google-cloud-billing gem has no samples to test."
    end
  end
end

require "yard"
require "yard/rake/yardoc_task"
YARD::Rake::YardocTask.new do |y|
  y.options << "--fail-on-warning"
end

desc "Run yard-doctest example tests."
task :doctest do
  puts "The google-cloud-billing gem does not have doctest tests."
end

desc "Run the CI build"
task :ci do
  header "BUILDING google-cloud-billing"
  header "google-cloud-billing rubocop", "*"
  Rake::Task[:rubocop].invoke
  header "google-cloud-billing yard", "*"
  Rake::Task[:yard].invoke
  header "google-cloud-billing test", "*"
  Rake::Task[:test].invoke
end

namespace :ci do
  desc "Run the CI build, with smoke tests."
  task :smoke_test do
    Rake::Task[:ci].invoke
    header "google-cloud-billing smoke_test", "*"
    Rake::Task[:smoke_test].invoke
  end
  desc "Run the CI build, with acceptance tests."
  task :acceptance do
    Rake::Task[:ci].invoke
    header "google-cloud-billing acceptance", "*"
    Rake::Task[:acceptance].invoke
  end
  task :a do
    # This is a handy shortcut to save typing
    Rake::Task["ci:acceptance"].invoke
  end
end

task default: :test

def header str, token = "#"
  line_length = str.length + 8
  puts ""
  puts token * line_length
  puts "#{token * 3} #{str} #{token * 3}"
  puts token * line_length
  puts ""
end

<MSG> chore(billing): tweak task names for sample tests


<DFF> @@ -125,7 +125,7 @@ namespace :samples do
         Bundler.with_clean_env do
           ENV["GOOGLE_CLOUD_SAMPLES_TEST"] = "not_master"
           sh "bundle update"
-          sh "bundle exec rake test_master"
+          sh "bundle exec rake test"
         end
       end
     else
@@ -139,7 +139,7 @@ namespace :samples do
         Bundler.with_clean_env do
           ENV["GOOGLE_CLOUD_SAMPLES_TEST"] = "master"
           sh "bundle update"
-          sh "bundle exec rake test_master"
+          sh "bundle exec rake test"
         end
       end
     else

{'addition_count': 2, 'commit_subject': 'chore(billing): tweak task names for sample tests', 'deletion_count': 2, 'file_extension': '', 'lang': 'Rakefile', 'license': 'apache-2.0', 'repo_name': 'googleapis/google-cloud-ruby'}