chat_notifier 0.1.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -2
- data/README.md +43 -6
- data/lib/chat_notifier/chatter/slack.rb +3 -3
- data/lib/chat_notifier/repository/github.rb +1 -1
- data/lib/chat_notifier/test_environment/github.rb +1 -1
- data/lib/chat_notifier/test_environment.rb +1 -1
- data/lib/chat_notifier/version.rb +1 -1
- data/lib/chat_notifier.rb +21 -5
- data/lib/minitest/chat_notifier_plugin.rb +14 -0
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 622357edb937d16bc4374115ad8d67e022fca33fee0544106af820797848fe17
|
4
|
+
data.tar.gz: 15d105331090d2dc981d56dd4a598040dab9ba392fb66c496469c851df06bac8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74bb8fd9d9fded6a20097d8bdc04bd1f6178f61ec28ffb191579f73833f8eeaadbd6012034abea92f23db803db23d963d3a0e96b007f14883d7304eaa76d98fa
|
7
|
+
data.tar.gz: c87f9c544e476ba0f5afe182cb1f729a7687fea615fff51398ec288b1b85a7779cfa3d2b7e988298af28ba3c09b3de7506ea1374add5e665d8afe90d39522500
|
data/CHANGELOG.md
CHANGED
@@ -5,8 +5,24 @@ All notable changes to this project will be documented in this file.
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
7
7
|
|
8
|
-
## 0.1
|
8
|
+
## [0.2.1] - 2024-07-01
|
9
9
|
|
10
10
|
### Added
|
11
11
|
|
12
|
-
-
|
12
|
+
- Version and release management with reissue gem.
|
13
|
+
|
14
|
+
### Changed
|
15
|
+
|
16
|
+
- Slack chatter looks for NOTIFY_SLACK ENV variables instead of just SLACK
|
17
|
+
|
18
|
+
## [0.2.0] - 2023-04-24
|
19
|
+
|
20
|
+
### Changed
|
21
|
+
|
22
|
+
- Renamed ENV variables to prefix `NOTIFY_`
|
23
|
+
|
24
|
+
## [0.1.0] - 2023-04-19
|
25
|
+
|
26
|
+
### Added
|
27
|
+
|
28
|
+
- Initial code
|
data/README.md
CHANGED
@@ -4,16 +4,51 @@ Notify a chat room with data from your test run.
|
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
|
-
```
|
7
|
+
```ruby
|
8
8
|
gem "chat_notifier", git: "https://github.com/SOFware/chat_notifier.git"
|
9
9
|
```
|
10
10
|
|
11
11
|
## Usage
|
12
12
|
|
13
|
+
### Minitest
|
14
|
+
|
15
|
+
Your minitest suite should pick up the formatter automatically.
|
16
|
+
|
17
|
+
### RSpec
|
18
|
+
|
13
19
|
Add to your `spec_helper.rb` or `rails_helper.rb`:
|
14
20
|
|
15
|
-
```
|
21
|
+
```ruby
|
16
22
|
require "chat_notifier/rspec_formatter"
|
23
|
+
|
24
|
+
config.add_formatter "ChatNotifier::RspecFormatter" if ENV["CI"]
|
25
|
+
```
|
26
|
+
|
27
|
+
Add to your config/application.rb within your namespaced module
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
def self.sha
|
31
|
+
`git rev-parse --short HEAD`.chomp
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.branch
|
35
|
+
`git branch --show-current`.chomp
|
36
|
+
end
|
37
|
+
```
|
38
|
+
|
39
|
+
Add these variables to your env files
|
40
|
+
|
41
|
+
```
|
42
|
+
NOTIFY_SLACK_WEBHOOK_URL
|
43
|
+
NOTIFY_SLACK_NOTIFY_CHANNEL
|
44
|
+
NOTIFY_CURRENT_REPOSITORY_URL
|
45
|
+
NOTIFY_TEST_RUN_ID
|
46
|
+
```
|
47
|
+
|
48
|
+
If you are _not_ using Rails, you will need to add this ENV variable:
|
49
|
+
|
50
|
+
```
|
51
|
+
NOTIFY_APP_NAME
|
17
52
|
```
|
18
53
|
|
19
54
|
### Debug your Slack setup
|
@@ -22,14 +57,16 @@ Create rake task to test the connection to your Slack channel
|
|
22
57
|
|
23
58
|
```ruby
|
24
59
|
namespace :chat_notifier do
|
60
|
+
desc "Tests chat notifier"
|
25
61
|
task debug: :environment do
|
26
|
-
unless ENV["
|
27
|
-
puts "You MUST set the environment variables for:\
|
62
|
+
unless ENV["NOTIFY_SLACK_WEBHOOK_URL"]
|
63
|
+
puts "You MUST set the environment variables for:\nNOTIFY_SLACK_WEBHOOK_URL"
|
28
64
|
return
|
29
65
|
end
|
30
66
|
ENV["DEBUG"] = "1"
|
31
|
-
ENV["
|
32
|
-
ENV["
|
67
|
+
ENV["NOTIFY_CURRENT_REPOSITORY_URL"] = "https://example.com"
|
68
|
+
ENV["NOTIFY_TEST_RUN_ID"] = "9999"
|
69
|
+
ENV["NOTIFY_APP_NAME"] = "Example App" # Defaults to your Rails app name
|
33
70
|
require "chat_notifier"
|
34
71
|
|
35
72
|
failure = ChatNotifier::DebugExceptionLocation.new(location: "fake/path.rb")
|
@@ -7,16 +7,16 @@ module ChatNotifier
|
|
7
7
|
|
8
8
|
class << self
|
9
9
|
def handles?(settings)
|
10
|
-
!settings.keys.grep(/
|
10
|
+
!settings.keys.grep(/NOTIFY_SLACK/).empty?
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
def webhook_url
|
15
|
-
settings.fetch("
|
15
|
+
settings.fetch("NOTIFY_SLACK_WEBHOOK_URL", nil)
|
16
16
|
end
|
17
17
|
|
18
18
|
def channel
|
19
|
-
settings.fetch("
|
19
|
+
settings.fetch("NOTIFY_SLACK_NOTIFY_CHANNEL", nil)
|
20
20
|
end
|
21
21
|
|
22
22
|
def payload(data)
|
data/lib/chat_notifier.rb
CHANGED
@@ -12,6 +12,18 @@ module ChatNotifier
|
|
12
12
|
DebugSummary = Data.define(:failed_examples)
|
13
13
|
|
14
14
|
class << self
|
15
|
+
require "logger"
|
16
|
+
@logger = Logger.new($stdout)
|
17
|
+
attr_accessor :logger
|
18
|
+
|
19
|
+
def app
|
20
|
+
if defined?(::Rails)
|
21
|
+
Rails.application.class.module_parent
|
22
|
+
else
|
23
|
+
ENV.fetch("NOTIFY_APP_NAME")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
15
27
|
# In order to test this locally see `rake chat_notifier:debug`
|
16
28
|
def debug!(env, summary:, notifier: :Debug)
|
17
29
|
repository = Repository.for(env)
|
@@ -24,9 +36,9 @@ module ChatNotifier
|
|
24
36
|
)
|
25
37
|
messenger = Messenger.for(
|
26
38
|
summary,
|
27
|
-
app
|
28
|
-
repository
|
29
|
-
environment:
|
39
|
+
app:,
|
40
|
+
repository:,
|
41
|
+
environment:
|
30
42
|
)
|
31
43
|
|
32
44
|
chatter.post(messenger)
|
@@ -43,13 +55,17 @@ module ChatNotifier
|
|
43
55
|
|
44
56
|
messenger = Messenger.for(
|
45
57
|
summary,
|
46
|
-
app
|
58
|
+
app:,
|
47
59
|
repository:,
|
48
60
|
environment:
|
49
61
|
)
|
50
62
|
|
51
63
|
chatter.each do |box|
|
52
|
-
|
64
|
+
begin
|
65
|
+
box.conditional_post(messenger)
|
66
|
+
rescue => exception
|
67
|
+
logger.error("ChatNotifier: #{box.webhook_url} #{exception.class}: #{exception.message}")
|
68
|
+
end
|
53
69
|
end
|
54
70
|
end
|
55
71
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Minitest
|
2
|
+
def self.plugin_chat_notifier_init(options)
|
3
|
+
Minitest.reporter << ChatNotifierPlugin.new(options[:io], options)
|
4
|
+
end
|
5
|
+
|
6
|
+
class ChatNotifierPlugin < SummaryReporter
|
7
|
+
ExceptionLocation = Data.define(:location)
|
8
|
+
Summary = Data.define(:failed_examples)
|
9
|
+
def report
|
10
|
+
summary = Summary[(results.map{ |result| ExceptionLocation[result.source_location] })]
|
11
|
+
ChatNotifier.call(summary:)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
metadata
CHANGED
@@ -1,18 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chat_notifier
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jim Gay
|
8
|
+
- Savannah Albanez
|
8
9
|
autorequire:
|
9
10
|
bindir: exe
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2024-07-01 00:00:00.000000000 Z
|
12
13
|
dependencies: []
|
13
14
|
description: Send test results to chat
|
14
15
|
email:
|
15
16
|
- jim@saturnflyer.com
|
17
|
+
- sealbanez@gmail.com
|
16
18
|
executables: []
|
17
19
|
extensions: []
|
18
20
|
extra_rdoc_files: []
|
@@ -33,6 +35,7 @@ files:
|
|
33
35
|
- lib/chat_notifier/test_environment/debug.rb
|
34
36
|
- lib/chat_notifier/test_environment/github.rb
|
35
37
|
- lib/chat_notifier/version.rb
|
38
|
+
- lib/minitest/chat_notifier_plugin.rb
|
36
39
|
homepage:
|
37
40
|
licenses: []
|
38
41
|
metadata:
|
@@ -53,7 +56,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
53
56
|
- !ruby/object:Gem::Version
|
54
57
|
version: '0'
|
55
58
|
requirements: []
|
56
|
-
rubygems_version: 3.
|
59
|
+
rubygems_version: 3.5.9
|
57
60
|
signing_key:
|
58
61
|
specification_version: 4
|
59
62
|
summary: Notify chat of test results
|