theorem 1.0.0 → 1.1.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: 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