Class: Danger::DangerfileMessagingPlugin

Inherits:
Plugin
  • Object
show all
Defined in:
lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb

Overview

Provides the feedback mechanism for Danger. Danger can keep track of messages, warnings, failure and post arbitrary markdown into a comment.

The message within which Danger communicates back is amended on each run in a session.

Each of ‘message`, `warn` and `fail` have a `sticky` flag, `true` by default, which means that the message will be crossed out instead of being removed. If it’s not use on subsequent runs.

By default, using ‘fail` would fail the corresponding build. Either via an API call, or via the return value for the danger command.

It is possible to have Danger ignore specific warnings or errors by writing ‘Danger: Ignore “[warning/error text]`.

Sidenote: Messaging is the only plugin which adds functions to the root of the Dangerfile.

Examples:

Failing a build


fail "This build didn't pass tests"

Failing a build, but not keeping it’s value around on subsequent runs


fail("This build didn't pass tests", sticky: false)

Passing a warning


warn "This build didn't pass linting"

Displaying a markdown table


message = "### Proselint found issues\n\n"
message << "Line | Message | Severity |\n"
message << "| --- | ----- | ----- |\n"
message << "20 | No documentation | Error \n"
markdown message

See Also:

  • danger/danger

Core collapse

Reporting collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Plugin

all_plugins, clear_external_plugins, inherited, #method_missing

Constructor Details

#initialize(dangerfile) ⇒ DangerfileMessagingPlugin

Returns a new instance of DangerfileMessagingPlugin.



47
48
49
50
51
52
53
54
# File 'lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb', line 47

def initialize(dangerfile)
  super(dangerfile)

  @warnings = []
  @errors = []
  @messages = []
  @markdowns = []
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Danger::Plugin

Class Method Details

.instance_nameObject



56
57
58
# File 'lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb', line 56

def self.instance_name
  "messaging"
end

Instance Method Details

#fail(message, sticky: true) ⇒ Object

Declares a CI blocking error

Parameters:

  • message (String)

    The message to present to the user

  • sticky (Boolean) (defaults to: true)

    Whether the message should be kept after it was fixed, defaults to ‘true`.



100
101
102
103
# File 'lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb', line 100

def fail(message, sticky: true)
  return if should_ignore_violation(message)
  @errors << Violation.new(message, sticky)
end

#markdown(message) ⇒ Object

Print markdown to below the table

Parameters:

  • message (String)

    The markdown based message to be printed below the table



65
66
67
# File 'lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb', line 65

def markdown(message)
  @markdowns << message
end

#message(message, sticky: true) ⇒ Object

Print out a generate message on the PR

Parameters:

  • message (String)

    The message to present to the user

  • sticky (Boolean) (defaults to: true)

    Whether the message should be kept after it was fixed, defaults to ‘true`.



76
77
78
# File 'lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb', line 76

def message(message, sticky: true)
  @messages << Violation.new(message, sticky)
end

#status_reportObject

A list of all messages passed to Danger, including the markdowns.

Returns:

  • Hash



110
111
112
113
114
115
116
117
# File 'lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb', line 110

def status_report
  {
    errors: @errors.map(&:message).clone.freeze,
    warnings: @warnings.map(&:message).clone.freeze,
    messages: @messages.map(&:message).clone.freeze,
    markdowns: @markdowns.clone.freeze
  }
end

#violation_reportObject

A list of all violations passed to Danger, we don’t anticipate users of Danger needing to use this.

Returns:

  • Hash



125
126
127
128
129
130
131
# File 'lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb', line 125

def violation_report
  {
    errors: @errors.clone.freeze,
    warnings: @warnings.clone.freeze,
    messages: @messages.clone.freeze
  }
end

#warn(message, sticky: true) ⇒ Object

Specifies a problem, but not critical

Parameters:

  • message (String)

    The message to present to the user

  • sticky (Boolean) (defaults to: true)

    Whether the message should be kept after it was fixed, defaults to ‘true`.



87
88
89
90
# File 'lib/danger/danger_core/plugins/dangerfile_messaging_plugin.rb', line 87

def warn(message, sticky: true)
  return if should_ignore_violation(message)
  @warnings << Violation.new(message, sticky)
end