sus 0.30.0 → 0.32.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: c1b91ed35726c8afcbc97fd2c73ea28d433874f7976958b26beebd9f4ed1dfe4
4
- data.tar.gz: 2295e4817295a52265e94c4eadf708f15b4502ecd40e42b76a44570c3f7c5f2b
3
+ metadata.gz: 30853f93c0da945d2bb067d53fceba5fdc873ddc87c69369c364f2e61a5cce96
4
+ data.tar.gz: b3564630a2abe168125dedb7d16d9d70ef1116a99f6f9596fa39e0e215a4a437
5
5
  SHA512:
6
- metadata.gz: 821e42e75cb7628974b6e10b036eb222aa35adfbafb25dc7b773b7b2ba8714c1a292c9ab539763567e1a1010f814aeada965b406eb77969a2f78c6dbf59c82e1
7
- data.tar.gz: 44a648f339a1a947037bdfde3a5e84f875dc9fb5b018133b8e269c572f33ff90dd05c9bfe86f233df60b6ae7357b08ec62523841dddc1cd137327c445d13258e
6
+ metadata.gz: 812cc85caf14056ae5536b0847d1ccbe90b3ef74608c15168176aef9360b339e704c64c7c0c6b99f42951c3587c2d193bce82f09e98ccf0815504097b46e9507
7
+ data.tar.gz: f932395d4a5e082d5e5ee9a2ddb9e0bba304cca73cb3f66c9856838f91ae34e96d096da22490af6b27cad405fbcd11b02a6e6be75a25eef9efb44bb4ce167b7f
checksums.yaml.gz.sig CHANGED
@@ -1,2 +1,4 @@
1
- 2.�g��R���V9Cǹ��D�^���<�
2
- ��)ͫ�P�;3K?���Rt2ϛ$�ǜ�GJ҂=�|��g�,����<@������zKt\5hGA,l)�d��$ժ֟��{oU���qF�{Jz�H�щ"a��3YB
1
+ nm���|�X;��ѝ��1���ېg2����0.g]?�:>�*�6��,�wm��0�,9kl��>���4� ��$�?���q�f����rn�O�F=w��^����.�NI>٭����&?�vh]�����^�iw�\
2
+ |S���o(.���{�>��:�"���\���.O�����C��7�#H("ӄ��wn����77D���o��$H��S��qt*,��zkDW%��MVfr1���GA;x�Y�+�����{a�:�6�P����u(���B�?P |�О��:#:�Z��^���
3
+ 3���ͣ��/J�E�B�WJ�U֛�Ur
4
+ ������#F�n�8�[�J�
data/bin/sus CHANGED
@@ -1,13 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- # require 'stackprof'
5
- # StackProf.start(mode: :wall, interval: 10)
6
-
7
- require_relative '../lib/sus/config'
4
+ require_relative "../lib/sus/config"
8
5
  config = Sus::Config.load
9
6
 
10
- require_relative '../lib/sus'
7
+ require_relative "../lib/sus"
11
8
  registry = config.registry
12
9
 
13
10
  if config.verbose?
@@ -24,11 +21,6 @@ config.before_tests(assertions)
24
21
  registry.call(assertions)
25
22
  config.after_tests(assertions)
26
23
 
27
- # StackProf.stop
28
- # StackProf.results('sus.stackprof')
29
- #
30
- # $ stackprof sus.stackprof --text --limit 10
31
-
32
24
  unless assertions.passed?
33
25
  exit(1)
34
26
  end
data/bin/sus-host CHANGED
@@ -1,22 +1,22 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'json'
4
+ require "json"
5
5
 
6
- require_relative '../lib/sus/config'
6
+ require_relative "../lib/sus/config"
7
7
  config = Sus::Config.load
8
8
 
9
- require_relative '../lib/sus'
9
+ require_relative "../lib/sus"
10
10
 
11
11
  verbose = false
12
12
  guard = Thread::Mutex.new
13
13
 
14
- require 'etc'
14
+ require "etc"
15
15
  count = Etc.nprocessors
16
16
 
17
17
  $stdout.sync = true
18
18
 
19
- require_relative '../lib/sus/output/structured'
19
+ require_relative "../lib/sus/output/structured"
20
20
 
21
21
  input = $stdin.dup
22
22
  $stdin.reopen(File::NULL)
@@ -36,7 +36,7 @@ end
36
36
  while line = input.gets
37
37
  message = JSON.parse(line)
38
38
 
39
- if tests = message['run']
39
+ if tests = message["run"]
40
40
  jobs = Thread::Queue.new
41
41
  results = Thread::Queue.new
42
42
 
data/bin/sus-parallel CHANGED
@@ -1,19 +1,19 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require_relative '../lib/sus/config'
4
+ require_relative "../lib/sus/config"
5
5
  config = Sus::Config.load
6
6
 
7
7
  Result = Struct.new(:job, :assertions)
8
8
 
9
- require_relative '../lib/sus'
10
- require_relative '../lib/sus/output'
9
+ require_relative "../lib/sus"
10
+ require_relative "../lib/sus/output"
11
11
  jobs = Thread::Queue.new
12
12
  results = Thread::Queue.new
13
13
  guard = Thread::Mutex.new
14
14
  progress = Sus::Output::Progress.new(config.output)
15
15
 
16
- require 'etc'
16
+ require "etc"
17
17
  count = Etc.nprocessors
18
18
 
19
19
  loader = Thread.new do
data/bin/sus-tree CHANGED
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'json'
4
+ require "json"
5
5
 
6
- require_relative '../lib/sus/config'
6
+ require_relative "../lib/sus/config"
7
7
  config = Sus::Config.load
8
8
 
9
- require_relative '../lib/sus'
9
+ require_relative "../lib/sus"
10
10
 
11
11
  verbose = false
12
12
  registry = config.registry
@@ -3,10 +3,10 @@
3
3
  # Released under the MIT License.
4
4
  # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require_relative 'output'
7
- require_relative 'clock'
6
+ require_relative "output"
7
+ require_relative "clock"
8
8
 
9
- require_relative 'output/backtrace'
9
+ require_relative "output/backtrace"
10
10
 
11
11
  module Sus
12
12
  class Assertions
data/lib/sus/base.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2023, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require_relative 'context'
6
+ require_relative "context"
7
7
 
8
8
  module Sus
9
9
  # The base test case class. We need to be careful about what local state is stored.
@@ -16,18 +16,31 @@ module Sus
16
16
  "\#<Sus::Base for #{self.class.description.inspect}>"
17
17
  end
18
18
 
19
+ # A hook which is called before the test is executed.
20
+ #
21
+ # If you override this method, you must call super.
19
22
  def before
20
23
  end
21
24
 
22
- def after
25
+ # A hook which is called after the test is executed.
26
+ #
27
+ # If you override this method, you must call super.
28
+ def after(error = nil)
23
29
  end
24
30
 
25
- def around
31
+ # Wrap logic around the test being executed.
32
+ #
33
+ # Invokes the before hook, then the block, then the after hook.
34
+ #
35
+ # @yields {...} the block which should execute a test.
36
+ def around(&block)
26
37
  self.before
27
38
 
28
- return yield
39
+ return block.call
40
+ rescue => error
41
+ raise
29
42
  ensure
30
- self.after
43
+ self.after(error)
31
44
  end
32
45
 
33
46
  def assert(...)
data/lib/sus/config.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2022-2023, by Samuel Williams.
4
+ # Copyright, 2022-2024, by Samuel Williams.
5
5
 
6
- require_relative 'clock'
7
- require_relative 'registry'
6
+ require_relative "clock"
7
+ require_relative "registry"
8
8
 
9
9
  module Sus
10
10
  class Config
@@ -28,7 +28,7 @@ module Sus
28
28
  end
29
29
 
30
30
  options = {
31
- verbose: !!arguments.delete('--verbose')
31
+ verbose: !!arguments.delete("--verbose")
32
32
  }
33
33
 
34
34
  return derived.new(root, arguments, **options)
@@ -53,8 +53,8 @@ module Sus
53
53
  end
54
54
 
55
55
  def add_default_load_paths
56
- add_load_path('lib')
57
- add_load_path('fixtures')
56
+ add_load_path("lib")
57
+ add_load_path("fixtures")
58
58
  end
59
59
 
60
60
  attr :root
@@ -103,9 +103,15 @@ module Sus
103
103
  @registry ||= self.load_registry
104
104
  end
105
105
 
106
+ def prepare_warnings!
107
+ Warning[:deprecated] = true
108
+ end
109
+
106
110
  def before_tests(assertions, output: self.output)
107
111
  @clock.reset!
108
112
  @clock.start!
113
+
114
+ prepare_warnings!
109
115
  end
110
116
 
111
117
  def after_tests(assertions, output: self.output)
data/lib/sus/context.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2023, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require_relative 'assertions'
7
- require_relative 'identity'
6
+ require_relative "assertions"
7
+ require_relative "identity"
8
8
 
9
9
  module Sus
10
10
  module Context
@@ -78,15 +78,16 @@ module Sus
78
78
 
79
79
  # Include an around method to the context class, that invokes the given block before running the test.
80
80
  #
81
- # Before hooks are called in the reverse order they are defined, in other words the last defined before hook is called first.
81
+ # Before hooks are usually invoked in the order they are defined, i.e. the first defined hook is invoked first.
82
82
  #
83
83
  # @parameter hook [Proc] The block to execute before each test.
84
84
  def before(&hook)
85
85
  wrapper = Module.new
86
86
 
87
- wrapper.define_method(:around) do |&block|
87
+ wrapper.define_method(:before) do
88
+ super()
89
+
88
90
  instance_exec(&hook)
89
- super(&block)
90
91
  end
91
92
 
92
93
  self.include(wrapper)
@@ -94,20 +95,18 @@ module Sus
94
95
 
95
96
  # Include an around method to the context class, that invokes the given block after running the test.
96
97
  #
97
- # After hooks are called in the order they are defined, in other words the last defined after hook is called last.
98
+ # After hooks are usually invoked in the reverse order they are defined, i.e. the last defined hook is invoked first.
98
99
  #
99
100
  # @parameter hook [Proc] The block to execute after each test. An `error` argument is passed if the test failed with an exception.
100
101
  def after(&hook)
101
102
  wrapper = Module.new
102
103
 
103
- wrapper.define_method(:around) do |&block|
104
- error = nil
105
-
106
- super(&block)
104
+ wrapper.define_method(:after) do |error|
105
+ instance_exec(error, &hook)
107
106
  rescue => error
108
107
  raise
109
108
  ensure
110
- instance_exec(error, &hook)
109
+ super(error)
111
110
  end
112
111
 
113
112
  self.include(wrapper)
data/lib/sus/describe.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2023, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require_relative 'context'
6
+ require_relative "context"
7
7
 
8
8
  module Sus
9
9
  module Describe
data/lib/sus/file.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2023, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
  # Copyright, 2022, by Brad Schrag.
6
6
 
7
- require_relative 'context'
7
+ require_relative "context"
8
8
 
9
9
  # This has to be done at the top level. It allows us to define constants within the given class while still retaining top-level constant resolution.
10
10
  Sus::TOPLEVEL_CLASS_EVAL = ->(__klass__, __path__){__klass__.class_eval(::File.read(__path__), __path__)}
data/lib/sus/filter.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2023, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
6
  module Sus
7
7
  # Provides a way to filter the registry according to the suffix on loaded paths.
@@ -48,7 +48,7 @@ module Sus
48
48
  end
49
49
 
50
50
  def load(target)
51
- path, filter = target.split(':', 2)
51
+ path, filter = target.split(":", 2)
52
52
 
53
53
  @registry.load(path)
54
54
 
data/lib/sus/have.rb CHANGED
@@ -3,8 +3,8 @@
3
3
  # Released under the MIT License.
4
4
  # Copyright, 2022-2024, by Samuel Williams.
5
5
 
6
- require_relative 'have/all'
7
- require_relative 'have/any'
6
+ require_relative "have/all"
7
+ require_relative "have/any"
8
8
 
9
9
  module Sus
10
10
  module Have
data/lib/sus/identity.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2023, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
6
  module Sus
7
7
  class Identity
@@ -82,7 +82,7 @@ module Sus
82
82
  # For a specific leaf node, the last part is not unique, i.e. it must be identified explicitly.
83
83
  append_unique_key(key, @unique == true ? false : @unique)
84
84
 
85
- @key = key.join(':')
85
+ @key = key.join(":")
86
86
  end
87
87
 
88
88
  return @key
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2023, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require_relative 'context'
6
+ require_relative "context"
7
7
 
8
8
  module Sus
9
9
  module Context
data/lib/sus/it.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  # Released under the MIT License.
4
4
  # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require_relative 'context'
6
+ require_relative "context"
7
7
 
8
8
  module Sus
9
9
  module It
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2023, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require_relative 'context'
6
+ require_relative "context"
7
7
 
8
8
  module Sus
9
9
  module ItBehavesLike
data/lib/sus/let.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2022, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require_relative 'context'
6
+ require_relative "context"
7
7
 
8
8
  module Sus
9
9
  module Context
data/lib/sus/mock.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  # Released under the MIT License.
4
4
  # Copyright, 2022-2024, by Samuel Williams.
5
5
 
6
- require_relative 'expect'
6
+ require_relative "expect"
7
7
 
8
8
  module Sus
9
9
  class Mock
@@ -82,7 +82,7 @@ module Sus
82
82
  end
83
83
 
84
84
  module Mocks
85
- def after
85
+ def after(error = nil)
86
86
  super
87
87
 
88
88
  @mocks&.each_value(&:clear)
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2023, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require 'io/console'
7
- require 'stringio'
6
+ require "io/console"
7
+ require "stringio"
8
8
 
9
9
  module Sus
10
10
  # Styled output output.
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2022, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require 'io/console'
6
+ require "io/console"
7
7
 
8
8
  module Sus
9
9
  module Output
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2023, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require_relative 'messages'
6
+ require_relative "messages"
7
7
 
8
8
  module Sus
9
9
  # Styled output output.
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2022, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require_relative 'bar'
7
- require_relative 'status'
8
- require_relative 'lines'
6
+ require_relative "bar"
7
+ require_relative "status"
8
+ require_relative "lines"
9
9
 
10
10
  module Sus
11
11
  module Output
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2022, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
6
  module Sus
7
7
  module Output
@@ -17,8 +17,8 @@ module Sus
17
17
  end
18
18
 
19
19
  INDICATORS = {
20
- busy: ['', '', '', ''],
21
- free: ['']
20
+ busy: ["", "", "", ""],
21
+ free: [""]
22
22
  }
23
23
 
24
24
  def update(state, context = nil)
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2023, by Samuel Williams.
4
+ # Copyright, 2023-2024, by Samuel Williams.
5
5
 
6
- require_relative 'null'
6
+ require_relative "null"
7
7
 
8
8
  module Sus
9
9
  # Styled output output.
@@ -3,8 +3,8 @@
3
3
  # Released under the MIT License.
4
4
  # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require_relative 'messages'
7
- require_relative 'buffered'
6
+ require_relative "messages"
7
+ require_relative "buffered"
8
8
 
9
9
  module Sus
10
10
  module Output
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2022, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require 'io/console'
6
+ require "io/console"
7
7
 
8
- require_relative 'text'
8
+ require_relative "text"
9
9
 
10
10
  module Sus
11
11
  # Styled output output.
data/lib/sus/output.rb CHANGED
@@ -1,14 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2022, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require_relative 'output/bar'
7
- require_relative 'output/text'
8
- require_relative 'output/xterm'
6
+ require_relative "output/bar"
7
+ require_relative "output/text"
8
+ require_relative "output/xterm"
9
9
 
10
- require_relative 'output/null'
11
- require_relative 'output/progress'
10
+ require_relative "output/null"
11
+ require_relative "output/progress"
12
12
 
13
13
  module Sus
14
14
  module Output
data/lib/sus/receive.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  # Released under the MIT License.
4
4
  # Copyright, 2022-2024, by Samuel Williams.
5
5
 
6
- require_relative 'respond_to'
6
+ require_relative "respond_to"
7
7
 
8
8
  module Sus
9
9
  class Receive
data/lib/sus/registry.rb CHANGED
@@ -1,22 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2023, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
  # Copyright, 2022, by Brad Schrag.
6
6
 
7
- require_relative 'base'
7
+ require_relative "base"
8
8
 
9
- require_relative 'file'
10
- require_relative 'describe'
11
- require_relative 'with'
9
+ require_relative "file"
10
+ require_relative "describe"
11
+ require_relative "with"
12
12
 
13
- require_relative 'it'
13
+ require_relative "it"
14
14
 
15
- require_relative 'shared'
16
- require_relative 'it_behaves_like'
17
- require_relative 'include_context'
15
+ require_relative "shared"
16
+ require_relative "it_behaves_like"
17
+ require_relative "include_context"
18
18
 
19
- require_relative 'let'
19
+ require_relative "let"
20
20
 
21
21
  module Sus
22
22
  class Registry
data/lib/sus/shared.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2022, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require_relative 'context'
6
+ require_relative "context"
7
7
 
8
8
  module Sus
9
9
  module Shared
data/lib/sus/version.rb CHANGED
@@ -4,5 +4,5 @@
4
4
  # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
6
  module Sus
7
- VERSION = "0.30.0"
7
+ VERSION = "0.32.0"
8
8
  end
data/lib/sus/with.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2023, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require_relative 'context'
6
+ require_relative "context"
7
7
 
8
8
  module Sus
9
9
  module With
data/lib/sus.rb CHANGED
@@ -1,24 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2021-2023, by Samuel Williams.
4
+ # Copyright, 2021-2024, by Samuel Williams.
5
5
 
6
- require_relative 'sus/version'
7
- require_relative 'sus/config'
8
- require_relative 'sus/registry'
9
- require_relative 'sus/assertions'
10
- require_relative 'sus/tree'
6
+ require_relative "sus/version"
7
+ require_relative "sus/config"
8
+ require_relative "sus/registry"
9
+ require_relative "sus/assertions"
10
+ require_relative "sus/tree"
11
11
 
12
- require_relative 'sus/expect'
13
- require_relative 'sus/be'
14
- require_relative 'sus/be_truthy'
15
- require_relative 'sus/be_within'
12
+ require_relative "sus/expect"
13
+ require_relative "sus/be"
14
+ require_relative "sus/be_truthy"
15
+ require_relative "sus/be_within"
16
16
 
17
- require_relative 'sus/mock'
18
- require_relative 'sus/receive'
17
+ require_relative "sus/mock"
18
+ require_relative "sus/receive"
19
19
 
20
- require_relative 'sus/raise_exception'
21
- require_relative 'sus/have_duration'
22
- require_relative 'sus/have'
20
+ require_relative "sus/raise_exception"
21
+ require_relative "sus/have_duration"
22
+ require_relative "sus/have"
23
23
 
24
- require_relative 'sus/filter'
24
+ require_relative "sus/filter"
data/readme.md CHANGED
@@ -1,40 +1,41 @@
1
- # Sus(picious)
1
+ # Sus
2
2
 
3
- An opinionated test framework designed with several goals:
3
+ Sus is a testing framework for Ruby.
4
4
 
5
- - As fast as possible, aiming for \~10,000 assertions per second per core.
6
- - Isolated tests which parallelise easily (including `class` definitions).
7
- - Native support for balanced (work-stealing) multi-core execution.
8
- - Incredible test output with detailed failure logging (including nested assertions and predicates).
5
+ - It's similar to RSpec but with less baggage and more parallelism.
6
+ - It uses `expect` style syntax with first-class predicates.
7
+ - It has direct [support for code coverage](https://github.com/socketry/covered).
8
+ - It supports the [VSCode Test Runner interface](https://github.com/socketry/sus-vscode).
9
+ - It's based on my experience writing thousands of tests.
10
+ - It's easy to extend (see the `sus-fixtures-` gems for examples).
9
11
 
10
- Non-features:
12
+ [![Development Status](https://github.com/socketry/sus/workflows/Test/badge.svg)](https://github.com/socketry/sus/actions?workflow=Test)
11
13
 
12
- - Flexibility at the expense of performance.
13
- - Backwards compatibility.
14
+ ## Lightning Talk: Testing with Sus (2023)
14
15
 
15
- [![Development Status](https://github.com/sus-rb/sus/workflows/Test/badge.svg)](https://github.com/sus-rb/sus/actions?workflow=Test)
16
+ <div align="center">
17
+ <a href="https://www.youtube.com/watch?v=BDQHgb2rrwU">
18
+ <img src="https://img.youtube.com/vi/BDQHgb2rrwU/0.jpg" alt="Testing with Sus"/>
19
+ </a>
20
+ </div>
16
21
 
17
- ## Ideas
18
-
19
- I've been thinking about how this should grow long term. I see a separation between "defining tests" and "running tests". I think this gem should be split across those responsibilities. By doing so, defining tests remains relatively static, but can be extended independently of execution model. And execution models which include parallelism, code coverage, multi-server, etc can be implemented effectively.
22
+ ## Usage
20
23
 
21
- The key point is that we need a well defined interface between defining tests and running tests. This interface is provided by the test registry, which can load test files. The test registry provides a way to enumerate all tests where each test has an identity that uniquely identifies it.
24
+ Please see the [project documentation](https://socketry.github.io/sus/) for more details.
22
25
 
23
- ### Sequential vs Parallel
26
+ - [Getting Started](https://socketry.github.io/sus/guides/getting-started/index) - This guide explains how to use the `sus` gem to write tests for your Ruby projects.
24
27
 
25
- `sus` has both sequential and multi-threaded (`sus-parallel`) execution models for tests. Parallel execution is potentially much faster. This is an experimental feature.
28
+ ## Releases
26
29
 
27
- ![Sequential vs Parallel](https://user-images.githubusercontent.com/30030/144770080-092cf07b-b121-4754-96e0-8ff1d8ea0695.mov)
30
+ Please see the [project releases](https://socketry.github.io/sus/releases/index) for all releases.
28
31
 
29
- ## Installation
32
+ ### v0.32.0
30
33
 
31
- ``` shell
32
- bundle add sus
33
- ```
34
+ - `Sus::Config` now has a `prepare_warnings!` hook which enables deprecated warnings by default. This is generally considered good behaviour for a test framework.
34
35
 
35
- ## Usage
36
+ ## See Also
36
37
 
37
- Check `test` directory for examples.
38
+ - [sus-vscode](https://github.com/socketry/sus-vscode) - Visual Studio Code extension for Sus.
38
39
 
39
40
  ## Contributing
40
41
 
data/releases.md ADDED
@@ -0,0 +1,5 @@
1
+ # Releases
2
+
3
+ ## v0.32.0
4
+
5
+ - `Sus::Config` now has a `prepare_warnings!` hook which enables deprecated warnings by default. This is generally considered good behaviour for a test framework.
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.30.0
4
+ version: 0.32.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -38,7 +38,7 @@ cert_chain:
38
38
  Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
39
39
  voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
40
40
  -----END CERTIFICATE-----
41
- date: 2024-07-22 00:00:00.000000000 Z
41
+ date: 2024-11-08 00:00:00.000000000 Z
42
42
  dependencies: []
43
43
  description:
44
44
  email:
@@ -101,13 +101,14 @@ files:
101
101
  - lib/sus/with.rb
102
102
  - license.md
103
103
  - readme.md
104
- homepage: https://github.com/sus-rb/sus
104
+ - releases.md
105
+ homepage: https://github.com/socketry/sus
105
106
  licenses:
106
107
  - MIT
107
108
  metadata:
108
- documentation_uri: https://sus-rb.github.io/sus/
109
+ documentation_uri: https://socketry.github.io/sus/
109
110
  funding_uri: https://github.com/sponsors/ioquatix/
110
- source_code_uri: https://github.com/sus-rb/sus.git
111
+ source_code_uri: https://github.com/socketry/sus.git
111
112
  post_install_message:
112
113
  rdoc_options: []
113
114
  require_paths:
@@ -123,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
124
  - !ruby/object:Gem::Version
124
125
  version: '0'
125
126
  requirements: []
126
- rubygems_version: 3.5.11
127
+ rubygems_version: 3.5.22
127
128
  signing_key:
128
129
  specification_version: 4
129
130
  summary: A fast and scalable test runner.
metadata.gz.sig CHANGED
Binary file