theorem 0.0.3 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e3451c37e94f11e1fed722a6ab987454f8ccaa7d52edcc906ef0635cb92d177b
4
- data.tar.gz: 544bcaef77540b26c750741bffd35ef363c331e155f1ca49c99696959ff21eae
3
+ metadata.gz: 91647688dc2f743ee8d64461f26ee5f2265be617c82623a97e0cfd7cdec58aa8
4
+ data.tar.gz: 410086697fb9d6718c3f05a64cbac277b59fa4ced15cf679484b9eed11bb9edf
5
5
  SHA512:
6
- metadata.gz: 9963c7729eeaedbf7b9ec575931d2918630d04244eecd0c6d9b5178636edc20ec1867f4bf2a33e30527481cb76ee3e56dd140124ffd279e808d977bee25edd6b
7
- data.tar.gz: c2224d035456e70630851b8f1d8acf1e4519b7310c1805ce1ec45c98689138b5ae0cea04cb582e4ec8aad67db376d42a68235394516589813c4264321aed7aa0
6
+ metadata.gz: f66749de7a52cee707d0c149e7e9b273d05b46248a69e7acb4f3669d400e6a833fcac9d268eb0f87acd6f5b3cbc9d8c5bfaa836491d705c8666563ae9dfe6fe8
7
+ data.tar.gz: dc737567dc4303c362f5dcb3bfa6a75474981d6b355367b6d8d711c4ad5170c8f3e0c0cf252197f4007ef16f9e403234f75277559e3d9ff8ce908cc5faff94e9
data/bin/theorize CHANGED
@@ -6,7 +6,7 @@ require_relative '../src/theorem'
6
6
  opts = Slop.parse do |o|
7
7
  o.array '--require', 'files to require', delimiter: ','
8
8
  o.string '-m', '--module', 'module (default: Theorem::Hypothesis)', default: 'Theorem::Hypothesis'
9
- o.string '-h', '--harness', 'harness (default: Theorem::Hypothesis)', default: 'Theorem::Harness'
9
+ o.string '-h', '--harness', 'harness (default: Theorem::Harness)', default: 'Theorem::Harness'
10
10
  o.array '-p', '--publisher', 'publishers (default: Theorem::StdoutReporter)', delimiter: ',', default: ['Theorem::StdoutReporter']
11
11
  o.string '-d', '--directory', 'directory to load tests (default: ".")', default: '.'
12
12
  o.on '--help' do
@@ -15,4 +15,4 @@ opts = Slop.parse do |o|
15
15
  end
16
16
  end
17
17
 
18
- Theorem.run! opts[:directory], opts
18
+ Theorem.run! opts
data/src/experiment.rb CHANGED
@@ -9,9 +9,9 @@ module Theorem
9
9
  @tests << { name: name, block: block }
10
10
  end
11
11
 
12
- def tests(**opts)
12
+ def tests(_experiment_namespace: to_s, **opts)
13
13
  @tests.map do |hash|
14
- Control::Test.new(hash[:name], to_s, **opts, &hash[:block])
14
+ Control::Test.new(hash[:name], _experiment_namespace, **opts, &hash[:block])
15
15
  end
16
16
  end
17
17
  end
data/src/harness.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative './theorem/harness'
4
- require 'parallel'
5
4
 
6
5
  # harness
7
6
  module Theorem
@@ -10,15 +9,6 @@ module Theorem
10
9
  include Control::Harness
11
10
  end
12
11
 
13
- # parallel harness
14
- module ParallelHarness
15
- include Control::Harness
16
-
17
- on_run do |tests|
18
- Parallel.map(tests, in_threads: 6, &:run!).flatten
19
- end
20
- end
21
-
22
12
  # module retry harness
23
13
  module RetryHarness
24
14
  include Control::Harness
@@ -63,7 +63,7 @@ module Theorem
63
63
 
64
64
  def report_failures(tests)
65
65
  tests.each do |failure|
66
- puts "Failure in #{failure.full_name}\nError: #{failure.error.to_s.red}\nBacktrace:\n------\n#{failure.error.backtrace.map(&:red).join("\n")}"
66
+ puts "Failure in #{failure.full_name}\nError: #{failure.error.message.to_s.red}\nBacktrace:\n------\n#{failure.error.backtrace.map(&:red).join("\n")}"
67
67
  end
68
68
  end
69
69
  end
@@ -9,8 +9,8 @@ module Theorem
9
9
  def self.included(mod)
10
10
  mod.extend(ClassMethods)
11
11
  mod.define_singleton_method :included do |inner|
12
- inner.define_singleton_method :run! do |directory, options = {}|
13
- tests = inner.instance_exec directory, options, &mod.test_loader
12
+ inner.define_singleton_method :run! do |options: {}|
13
+ tests = inner.instance_exec options, &mod.test_loader
14
14
  results = inner.instance_exec tests, options, &mod.run_loader
15
15
  inner.completed_suite_subscribers.each do |subscriber|
16
16
  subscriber.call(results)
@@ -22,7 +22,9 @@ module Theorem
22
22
 
23
23
  # harness helpers
24
24
  module ClassMethods
25
- DEFAULT_LOADER = ->(directory, tags) do
25
+ DEFAULT_LOADER = ->(options) do
26
+ directory = options[:directory] || '.'
27
+
26
28
  ExtendedDir.require_all("./#{directory}")
27
29
 
28
30
  registry
data/src/theorem/test.rb CHANGED
@@ -67,8 +67,8 @@ module Theorem
67
67
  obj = Class.new
68
68
  obj.include(control)
69
69
  obj.instance_eval &block if block
70
- obj.instance_exec klass, opts do |experiment_klass, params|
71
- @tests.concat experiment_klass.tests(**params)
70
+ obj.instance_exec self, klass, opts do |consumer, experiment_klass, params|
71
+ @tests.concat experiment_klass.tests(_experiment_namespace: consumer.to_s, **params)
72
72
  end
73
73
  end
74
74
 
data/src/theorem.rb CHANGED
@@ -20,7 +20,7 @@ module Theorem
20
20
  end
21
21
  end
22
22
 
23
- def self.run!(directory, options)
23
+ def self.run!(options)
24
24
  options[:require].each do |file|
25
25
  require file
26
26
  end
@@ -40,7 +40,7 @@ module Theorem
40
40
  end
41
41
  end
42
42
 
43
- mod.run!(directory, options)
43
+ mod.run!(options: options)
44
44
  end
45
45
 
46
46
  module JsonReporter
@@ -50,7 +50,7 @@ module Theorem
50
50
  results = results.map do |result|
51
51
  { name: result.full_name, failed: result.failed? }
52
52
  end
53
- puts results
53
+ puts results.to_json
54
54
  puts "\n\n"
55
55
  end
56
56
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: theorem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Gregory
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: parallel
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
83
  description: simple and extensible test library toolkit
98
84
  email: sean.christopher.gregory@gmail.com
99
85
  executables:
@@ -133,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
119
  - !ruby/object:Gem::Version
134
120
  version: '0'
135
121
  requirements: []
136
- rubygems_version: 3.2.22
122
+ rubygems_version: 3.2.31
137
123
  signing_key:
138
124
  specification_version: 4
139
125
  summary: simple and extensible test library toolkit