class Publisher::Providers::UrlSectionBuilder

Urls section builder

Constants

DESCRIPTION_PATTERN
JOBS_PATTERN

Attributes

build_name[R]
report_url[R]
sha_url[R]

Public Class Methods

match?(urls_block) click to toggle source

Matches url section pattern

@param [String] urls_block @return [Boolean]

# File lib/allure_report_publisher/lib/providers/url_section_builder.rb, line 19
def self.match?(urls_block)
  urls_block.match?(DESCRIPTION_PATTERN)
end
new(report_url:, build_name:, sha_url:) click to toggle source
# File lib/allure_report_publisher/lib/providers/url_section_builder.rb, line 9
def initialize(report_url:, build_name:, sha_url:)
  @report_url = report_url
  @build_name = build_name
  @sha_url = sha_url
end

Public Instance Methods

comment_body(pr_comment = nil) click to toggle source

Allure report url comment

@return [String]

# File lib/allure_report_publisher/lib/providers/url_section_builder.rb, line 37
def comment_body(pr_comment = nil)
  return body.gsub("---\n", "") unless pr_comment

  job_entries = jobs_section(pr_comment)
  body(job_entries).gsub("---\n", "")
end
updated_pr_description(pr_description) click to toggle source

Get urls for PR update

@param [String] pr @return [String]

# File lib/allure_report_publisher/lib/providers/url_section_builder.rb, line 27
def updated_pr_description(pr_description)
  return "#{pr_description}\n\n#{body}" unless pr_description.match?(DESCRIPTION_PATTERN)

  job_entries = jobs_section(pr_description)
  pr_description.gsub(DESCRIPTION_PATTERN, body(job_entries))
end

Private Instance Methods

body(job_entries = job_entry) click to toggle source

Allure report url pr description

@return [String]

# File lib/allure_report_publisher/lib/providers/url_section_builder.rb, line 51
      def body(job_entries = job_entry)
        @body ||= <<~BODY.strip
          <!-- allure -->
          ---
          #{heading}

          <!-- jobs -->
          #{job_entries}
          <!-- jobs -->
          <!-- allurestop -->
        BODY
      end
heading() click to toggle source

Url section heading

@return [String]

# File lib/allure_report_publisher/lib/providers/url_section_builder.rb, line 67
def heading
  @heading ||= "# Allure report\n`allure-report-publisher` generated test report for #{sha_url}!"
end
job_entry() click to toggle source

Single job report URL entry

@return [String]

# File lib/allure_report_publisher/lib/providers/url_section_builder.rb, line 85
def job_entry
  @job_entry ||= "**#{build_name}**: 📝 [test report](#{report_url})<br />"
end
job_entry_pattern() click to toggle source

Job entry pattern

@return [RegExp]

# File lib/allure_report_publisher/lib/providers/url_section_builder.rb, line 92
def job_entry_pattern
  @job_entry_pattern ||= %r{^\*\*#{build_name}\*\*:.*\[test report\]\(.*\)<br />$}
end
jobs_section(urls_block) click to toggle source

Return updated jobs section

@param [String] urls @return [String]

# File lib/allure_report_publisher/lib/providers/url_section_builder.rb, line 75
def jobs_section(urls_block)
  jobs = urls_block.match(JOBS_PATTERN)[1]
  return jobs.gsub(job_entry_pattern, job_entry) if jobs.match?(job_entry_pattern)

  "#{jobs}\n#{job_entry}"
end