testmetrics_rspec 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +20 -0
- data/Gemfile.lock +5 -1
- data/lib/testmetrics_rspec/persist.rb +9 -4
- data/lib/testmetrics_rspec/rspec2.rb +58 -59
- data/lib/testmetrics_rspec/rspec3.rb +18 -8
- data/lib/testmetrics_rspec.rb +1 -0
- data/testmetrics_rspec.gemspec +2 -1
- metadata +16 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f442413399ca375da33c09ac075f6089c76eb539e431bb7a71a99e58fb0deef3
|
4
|
+
data.tar.gz: 4ab090299facb131c0e13a0a65bc1290afc28c699799fbf9442167fcdf400dba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85851e3687a1ea8098d71ddf1e530bc3fdee1ffae0a81dee1a6ce4c8d894d3d0f80cc1a3bca1ef63f14c225cfba4fe3568c37be8a0b6caf6fd8297f965f5556d
|
7
|
+
data.tar.gz: ae1a9e350328fd93165a21235fb6d0fee309bc5153275414a2233d0f8678c585622b97f35d6892c33c29b10e225977f48a56c4758467b710697d11cb3c757a22
|
data/.travis.yml
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
rvm:
|
2
|
+
- 2.3
|
3
|
+
- 2.4
|
4
|
+
- 2.5
|
5
|
+
- ruby-head
|
6
|
+
|
7
|
+
before_install:
|
8
|
+
- gem update --system
|
9
|
+
- gem update bundler
|
10
|
+
- gem cleanup bundler
|
11
|
+
|
12
|
+
install: "bundle install --jobs 8"
|
13
|
+
script: "bundle exec rake"
|
14
|
+
matrix:
|
15
|
+
fast_finish: true
|
16
|
+
allow_failures:
|
17
|
+
- rvm: ruby-head
|
18
|
+
|
19
|
+
sudo: false
|
20
|
+
cache: bundler
|
data/Gemfile.lock
CHANGED
@@ -1,12 +1,16 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
testmetrics_rspec (0.
|
4
|
+
testmetrics_rspec (0.2.0)
|
5
|
+
faraday (>= 0.9.0)
|
5
6
|
|
6
7
|
GEM
|
7
8
|
remote: https://rubygems.org/
|
8
9
|
specs:
|
9
10
|
diff-lcs (1.3)
|
11
|
+
faraday (0.15.4)
|
12
|
+
multipart-post (>= 1.2, < 3)
|
13
|
+
multipart-post (2.0.0)
|
10
14
|
rake (10.5.0)
|
11
15
|
rspec (3.8.0)
|
12
16
|
rspec-core (~> 3.8.0)
|
@@ -1,6 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
class TestmetricsRspec
|
2
|
+
# This sends the results to the Testmetrics server
|
3
|
+
module Persist
|
4
|
+
def self.call(results)
|
5
|
+
unless results[:key] == "Unknown"
|
6
|
+
Faraday.post('https://www.testmetrics.app/results', results)
|
7
|
+
end
|
8
|
+
puts results
|
9
|
+
end
|
5
10
|
end
|
6
11
|
end
|
@@ -1,79 +1,78 @@
|
|
1
1
|
class TestmetricsRspec < RSpec::Core::Formatters::BaseFormatter
|
2
|
-
attr_reader :started
|
3
|
-
|
4
2
|
def start(example_count)
|
5
|
-
|
3
|
+
results = {
|
4
|
+
key: ENV['TESTMETRICS_PROJECT_KEY'],
|
5
|
+
branch: git_branch,
|
6
|
+
sha: git_sha,
|
7
|
+
metadata: {
|
8
|
+
ruby_version: RUBY_VERSION,
|
9
|
+
ci_platform: ci_platform
|
10
|
+
},
|
11
|
+
tests: []
|
12
|
+
}
|
13
|
+
TestmetricsRspec::Persist.call(results)
|
6
14
|
super
|
7
15
|
end
|
8
16
|
|
9
|
-
def
|
17
|
+
def stop
|
18
|
+
@results = {
|
19
|
+
key: ENV['TESTMETRICS_PROJECT_KEY'],
|
20
|
+
branch: git_branch,
|
21
|
+
sha: git_sha,
|
22
|
+
metadata: {
|
23
|
+
ruby_version: RUBY_VERSION,
|
24
|
+
ci_platform: ci_platform
|
25
|
+
},
|
26
|
+
tests: tests
|
27
|
+
}
|
10
28
|
super
|
11
29
|
end
|
12
30
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
def example_group_file_path_for(example)
|
20
|
-
meta = example.metadata
|
21
|
-
while meta[:example_group]
|
22
|
-
meta = meta[:example_group]
|
23
|
-
end
|
24
|
-
meta[:file_path]
|
25
|
-
end
|
26
|
-
|
27
|
-
def classname_for(example)
|
28
|
-
fp = example_group_file_path_for(example)
|
29
|
-
fp.sub(%r{\.[^/.]+\Z}, "").gsub("/", ".").gsub(/\A\.+|\.+\Z/, "")
|
30
|
-
end
|
31
|
-
|
32
|
-
def duration_for(example)
|
33
|
-
example.execution_result[:run_time]
|
34
|
-
end
|
35
|
-
|
36
|
-
def description_for(example)
|
37
|
-
example.full_description
|
38
|
-
end
|
39
|
-
|
40
|
-
def exception_for(example)
|
41
|
-
example.execution_result[:exception]
|
42
|
-
end
|
43
|
-
|
44
|
-
def failure_type_for(example)
|
45
|
-
exception_for(example).class.name
|
46
|
-
end
|
47
|
-
|
48
|
-
def failure_message_for(example)
|
49
|
-
strip_diff_colors(exception_for(example).to_s)
|
31
|
+
def dump_summary(duration, example_count, failure_count, pending_count)
|
32
|
+
# Send results in microseconds
|
33
|
+
@results[:total_run_time] = (duration * 1_000_000).round(0)
|
34
|
+
TestmetricsRspec::Persist.call(@results)
|
35
|
+
super
|
50
36
|
end
|
51
37
|
|
52
|
-
|
53
|
-
exception = exception_for(example)
|
54
|
-
message = strip_diff_colors(exception.message)
|
55
|
-
backtrace = format_backtrace(exception.backtrace, example)
|
38
|
+
private
|
56
39
|
|
57
|
-
|
58
|
-
|
40
|
+
def tests
|
41
|
+
examples.map do |example|
|
42
|
+
{
|
43
|
+
name: example.full_description,
|
44
|
+
# Send results in microseconds
|
45
|
+
total_run_time: (example.execution_result[:run_time] * 1_000_000).round(0),
|
46
|
+
state: example.execution_result[:status].to_sym
|
47
|
+
}
|
59
48
|
end
|
60
|
-
|
61
|
-
"#{message}\n#{backtrace.join("\n")}"
|
62
49
|
end
|
63
50
|
|
64
|
-
|
65
|
-
|
51
|
+
BRANCH_VARS = ["TRAVIS_BRANCH", "CIRCLE_BRANCH", "CI_COMMIT_REF_NAME", "BRANCH_NAME"]
|
52
|
+
def git_branch
|
53
|
+
correct_var = BRANCH_VARS.find do |var| ENV[var] != nil end
|
54
|
+
correct_var.nil? ? "Unknown" : ENV[correct_var]
|
66
55
|
end
|
67
56
|
|
68
|
-
|
69
|
-
|
57
|
+
SHA_VARS = ["TRAVIS_COMMIT", "CIRCLE_SHA1", "CI_COMMIT_SHA", "REVISION"]
|
58
|
+
def git_sha
|
59
|
+
correct_var = SHA_VARS.find do |var| ENV[var] != nil end
|
60
|
+
correct_var.nil? ? "Unknown" : ENV[correct_var]
|
70
61
|
end
|
71
62
|
|
72
|
-
def
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
63
|
+
def ci_platform
|
64
|
+
correct_var = SHA_VARS.find do |var| ENV[var] != nil end
|
65
|
+
case correct_var
|
66
|
+
when "TRAVIS_COMMIT"
|
67
|
+
"Travis CI"
|
68
|
+
when "CIRCLE_SHA1"
|
69
|
+
"Circle CI"
|
70
|
+
when "CI_COMMIT_SHA"
|
71
|
+
"Gitlab CI"
|
72
|
+
when "REVISION"
|
73
|
+
"Semaphore CI"
|
74
|
+
else
|
75
|
+
"Unknown"
|
76
|
+
end
|
78
77
|
end
|
79
78
|
end
|
@@ -1,10 +1,19 @@
|
|
1
|
-
# Doc
|
2
1
|
class TestmetricsRspec < RSpec::Core::Formatters::BaseFormatter
|
3
2
|
RSpec::Core::Formatters.register self, :start, :stop, :dump_summary
|
4
3
|
|
5
4
|
# This sends the "start" message to testmetrics
|
6
5
|
def start(notification)
|
7
|
-
|
6
|
+
results = {
|
7
|
+
key: ENV['TESTMETRICS_PROJECT_KEY'] || "Unknown",
|
8
|
+
branch: git_branch,
|
9
|
+
sha: git_sha,
|
10
|
+
metadata: {
|
11
|
+
ruby_version: RUBY_VERSION,
|
12
|
+
ci_platform: ci_platform
|
13
|
+
},
|
14
|
+
tests: []
|
15
|
+
}
|
16
|
+
TestmetricsRspec::Persist.call(results)
|
8
17
|
super
|
9
18
|
end
|
10
19
|
|
@@ -12,14 +21,14 @@ class TestmetricsRspec < RSpec::Core::Formatters::BaseFormatter
|
|
12
21
|
tests = notification.notifications.map do |test|
|
13
22
|
{
|
14
23
|
name: test.example.full_description,
|
15
|
-
|
24
|
+
# Send results in microseconds
|
25
|
+
total_run_time: (test.example.execution_result.run_time * 1_000_000).round(0),
|
16
26
|
state: test.example.execution_result.status
|
17
27
|
}
|
18
28
|
end
|
19
29
|
|
20
30
|
@results = {
|
21
|
-
|
22
|
-
key: ENV['TESTMETRICS_PROJECT_KEY'],
|
31
|
+
key: ENV['TESTMETRICS_PROJECT_KEY'] || "Unknown",
|
23
32
|
branch: git_branch,
|
24
33
|
sha: git_sha,
|
25
34
|
metadata: {
|
@@ -32,20 +41,21 @@ class TestmetricsRspec < RSpec::Core::Formatters::BaseFormatter
|
|
32
41
|
|
33
42
|
# This sends the "end" message to testmetrics
|
34
43
|
def dump_summary(notification)
|
35
|
-
|
44
|
+
# Send results in microseconds
|
45
|
+
@results[:total_run_time] = (notification.duration * 1_000_000).round(0)
|
36
46
|
TestmetricsRspec::Persist.call(@results)
|
37
47
|
end
|
38
48
|
|
39
49
|
BRANCH_VARS = ["TRAVIS_BRANCH", "CIRCLE_BRANCH", "CI_COMMIT_REF_NAME", "BRANCH_NAME"]
|
40
50
|
def git_branch
|
41
51
|
correct_var = BRANCH_VARS.find do |var| ENV[var] != nil end
|
42
|
-
correct_var.nil? ?
|
52
|
+
correct_var.nil? ? "Unknown" : ENV[correct_var]
|
43
53
|
end
|
44
54
|
|
45
55
|
SHA_VARS = ["TRAVIS_COMMIT", "CIRCLE_SHA1", "CI_COMMIT_SHA", "REVISION"]
|
46
56
|
def git_sha
|
47
57
|
correct_var = SHA_VARS.find do |var| ENV[var] != nil end
|
48
|
-
correct_var.nil? ?
|
58
|
+
correct_var.nil? ? "Unknown" : ENV[correct_var]
|
49
59
|
end
|
50
60
|
|
51
61
|
def ci_platform
|
data/lib/testmetrics_rspec.rb
CHANGED
data/testmetrics_rspec.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "testmetrics_rspec"
|
7
|
-
spec.version = "0.
|
7
|
+
spec.version = "0.2.0"
|
8
8
|
spec.authors = ["Devon Estes"]
|
9
9
|
spec.email = ["devon.c.estes@gmail.com"]
|
10
10
|
|
@@ -23,4 +23,5 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_development_dependency "bundler", "~> 1.16"
|
24
24
|
spec.add_development_dependency "rake", "~> 10.0"
|
25
25
|
spec.add_development_dependency "rspec", "~> 3.0"
|
26
|
+
spec.add_runtime_dependency "faraday", ">= 0.9.0"
|
26
27
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testmetrics_rspec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Devon Estes
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: faraday
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.9.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.9.0
|
55
69
|
description:
|
56
70
|
email:
|
57
71
|
- devon.c.estes@gmail.com
|
@@ -60,6 +74,7 @@ extensions: []
|
|
60
74
|
extra_rdoc_files: []
|
61
75
|
files:
|
62
76
|
- ".gitignore"
|
77
|
+
- ".travis.yml"
|
63
78
|
- Gemfile
|
64
79
|
- Gemfile.lock
|
65
80
|
- LICENSE
|