theorem 1.0.0 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 91647688dc2f743ee8d64461f26ee5f2265be617c82623a97e0cfd7cdec58aa8
4
- data.tar.gz: 410086697fb9d6718c3f05a64cbac277b59fa4ced15cf679484b9eed11bb9edf
3
+ metadata.gz: 561cfd58d73936664ce10aad722bab0fc21d97a28b421a5cc0e154bbf8f14bfa
4
+ data.tar.gz: 9e392733f121689bb139d908730ad2e7008f263e713d5193ede30d31f2309612
5
5
  SHA512:
6
- metadata.gz: f66749de7a52cee707d0c149e7e9b273d05b46248a69e7acb4f3669d400e6a833fcac9d268eb0f87acd6f5b3cbc9d8c5bfaa836491d705c8666563ae9dfe6fe8
7
- data.tar.gz: dc737567dc4303c362f5dcb3bfa6a75474981d6b355367b6d8d711c4ad5170c8f3e0c0cf252197f4007ef16f9e403234f75277559e3d9ff8ce908cc5faff94e9
6
+ metadata.gz: 7980418d3772ed5c314893f44cec5cd3cc166d3cf4e193580a0f1c65484e7020119c32db80ebba07e2a53e880e9f3ad5d83e45d6910dd3b3a08561642071abba
7
+ data.tar.gz: 25e8132963cab65e4d5822e15c1aa3dc5a8f28f225330a06f9a08bcff8d64a273bcdc86ed42035429e0bd1ac8e79676e0677061d898ba7ad460c781c6e16d7a4
data/bin/theorize CHANGED
@@ -9,10 +9,13 @@ opts = Slop.parse do |o|
9
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
+ o.array '-i', '--include', 'tags to specify what tests should be included (default: wont filter)', default: []
13
+ o.array '-e', '--exclude', 'tags the specify what tests should be excluded (default: wont filter)', default: []
14
+ o.string '--meta', 'string of metadata to pass to the harness', default: ''
12
15
  o.on '--help' do
13
16
  puts o
14
17
  exit
15
18
  end
16
19
  end
17
20
 
18
- Theorem.run! opts
21
+ Theorem.run! opts.to_h
data/src/harness.rb CHANGED
@@ -7,6 +7,14 @@ module Theorem
7
7
  # default test harness
8
8
  module Harness
9
9
  include Control::Harness
10
+
11
+ load_tests do |options|
12
+ directory = options[:directory] || '.'
13
+
14
+ ExtendedDir.require_all("./#{directory}")
15
+
16
+ filtered_registry(options)
17
+ end
10
18
  end
11
19
 
12
20
  # module retry harness
@@ -8,6 +8,22 @@ module Theorem
8
8
  @registry ||= []
9
9
  end
10
10
 
11
+ def filtered_registry(options)
12
+ registry.each do |test_class|
13
+ if options[:include]&.any?
14
+ test_class.tests.select! do |test|
15
+ test.metadata[:tags]&.intersection(options[:include])&.any?
16
+ end
17
+ end
18
+
19
+ next unless options[:exclude]&.any?
20
+
21
+ test_class.tests.reject! do |test|
22
+ test.metadata[:tags]&.intersection(options[:include])&.any?
23
+ end
24
+ end
25
+ end
26
+
11
27
  def add_to_registry(klass)
12
28
  registry << klass
13
29
  end
data/src/theorem/test.rb CHANGED
@@ -5,14 +5,15 @@ module Theorem
5
5
  module Control
6
6
  # test new
7
7
  class Test
8
- def initialize(name, namespace, **opts, &block)
8
+ def initialize(name, namespace, arguments: {}, **metadata, &block)
9
9
  @name = name
10
10
  @namespace = namespace
11
11
  @block = block
12
- @arguments = opts
12
+ @arguments = arguments
13
+ @metadata = metadata
13
14
  end
14
15
 
15
- attr_reader :block, :name, :arguments, :namespace
16
+ attr_reader :block, :name, :arguments, :namespace, :metadata
16
17
 
17
18
  def full_name
18
19
  "#{namespace} #{name}"
@@ -68,7 +69,7 @@ module Theorem
68
69
  obj.include(control)
69
70
  obj.instance_eval &block if block
70
71
  obj.instance_exec self, klass, opts do |consumer, experiment_klass, params|
71
- @tests.concat experiment_klass.tests(_experiment_namespace: consumer.to_s, **params)
72
+ @tests.concat experiment_klass.tests(_experiment_namespace: consumer.to_s, arguments: params)
72
73
  end
73
74
  end
74
75
 
@@ -92,8 +93,8 @@ module Theorem
92
93
  @after_all
93
94
  end
94
95
 
95
- def test(name, &block)
96
- @tests << Test.new(name, to_s, &block)
96
+ def test(name, **hargs, &block)
97
+ @tests << Test.new(name, to_s, **hargs, &block)
97
98
  end
98
99
 
99
100
  def run!
data/src/theorem.rb CHANGED
@@ -2,6 +2,8 @@ require_relative 'theorem/hypothesis'
2
2
  require_relative 'harness'
3
3
  require_relative 'experiment'
4
4
  require_relative 'stdout_reporter'
5
+
6
+ require_relative 'theorem/harness'
5
7
  require 'json'
6
8
 
7
9
  module Theorem
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: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Gregory