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 +4 -4
- checksums.yaml.gz.sig +4 -2
- data/bin/sus +2 -10
- data/bin/sus-host +6 -6
- data/bin/sus-parallel +4 -4
- data/bin/sus-tree +3 -3
- data/lib/sus/assertions.rb +3 -3
- data/lib/sus/base.rb +19 -6
- data/lib/sus/config.rb +12 -6
- data/lib/sus/context.rb +11 -12
- data/lib/sus/describe.rb +2 -2
- data/lib/sus/file.rb +2 -2
- data/lib/sus/filter.rb +2 -2
- data/lib/sus/have.rb +2 -2
- data/lib/sus/identity.rb +2 -2
- data/lib/sus/include_context.rb +2 -2
- data/lib/sus/it.rb +1 -1
- data/lib/sus/it_behaves_like.rb +2 -2
- data/lib/sus/let.rb +2 -2
- data/lib/sus/mock.rb +2 -2
- data/lib/sus/output/buffered.rb +3 -3
- data/lib/sus/output/lines.rb +2 -2
- data/lib/sus/output/null.rb +2 -2
- data/lib/sus/output/progress.rb +4 -4
- data/lib/sus/output/status.rb +3 -3
- data/lib/sus/output/structured.rb +2 -2
- data/lib/sus/output/text.rb +2 -2
- data/lib/sus/output/xterm.rb +3 -3
- data/lib/sus/output.rb +6 -6
- data/lib/sus/receive.rb +1 -1
- data/lib/sus/registry.rb +10 -10
- data/lib/sus/shared.rb +2 -2
- data/lib/sus/version.rb +1 -1
- data/lib/sus/with.rb +2 -2
- data/lib/sus.rb +16 -16
- data/readme.md +24 -23
- data/releases.md +5 -0
- data.tar.gz.sig +0 -0
- metadata +7 -6
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30853f93c0da945d2bb067d53fceba5fdc873ddc87c69369c364f2e61a5cce96
|
4
|
+
data.tar.gz: b3564630a2abe168125dedb7d16d9d70ef1116a99f6f9596fa39e0e215a4a437
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 812cc85caf14056ae5536b0847d1ccbe90b3ef74608c15168176aef9360b339e704c64c7c0c6b99f42951c3587c2d193bce82f09e98ccf0815504097b46e9507
|
7
|
+
data.tar.gz: f932395d4a5e082d5e5ee9a2ddb9e0bba304cca73cb3f66c9856838f91ae34e96d096da22490af6b27cad405fbcd11b02a6e6be75a25eef9efb44bb4ce167b7f
|
checksums.yaml.gz.sig
CHANGED
@@ -1,2 +1,4 @@
|
|
1
|
-
|
2
|
-
��
|
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�(�"ӄ��w�n����7�7D���o��$H��S��q�t*,��zk�D�W%��M�V�fr1���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
|
-
|
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
|
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
|
4
|
+
require "json"
|
5
5
|
|
6
|
-
require_relative
|
6
|
+
require_relative "../lib/sus/config"
|
7
7
|
config = Sus::Config.load
|
8
8
|
|
9
|
-
require_relative
|
9
|
+
require_relative "../lib/sus"
|
10
10
|
|
11
11
|
verbose = false
|
12
12
|
guard = Thread::Mutex.new
|
13
13
|
|
14
|
-
require
|
14
|
+
require "etc"
|
15
15
|
count = Etc.nprocessors
|
16
16
|
|
17
17
|
$stdout.sync = true
|
18
18
|
|
19
|
-
require_relative
|
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[
|
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
|
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
|
10
|
-
require_relative
|
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
|
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
|
4
|
+
require "json"
|
5
5
|
|
6
|
-
require_relative
|
6
|
+
require_relative "../lib/sus/config"
|
7
7
|
config = Sus::Config.load
|
8
8
|
|
9
|
-
require_relative
|
9
|
+
require_relative "../lib/sus"
|
10
10
|
|
11
11
|
verbose = false
|
12
12
|
registry = config.registry
|
data/lib/sus/assertions.rb
CHANGED
@@ -3,10 +3,10 @@
|
|
3
3
|
# Released under the MIT License.
|
4
4
|
# Copyright, 2021-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
6
|
+
require_relative "output"
|
7
|
+
require_relative "clock"
|
8
8
|
|
9
|
-
require_relative
|
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-
|
4
|
+
# Copyright, 2021-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
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
|
-
|
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
|
-
|
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
|
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-
|
4
|
+
# Copyright, 2022-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
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(
|
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(
|
57
|
-
add_load_path(
|
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-
|
4
|
+
# Copyright, 2021-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
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
|
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(:
|
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
|
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(:
|
104
|
-
error
|
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
|
-
|
109
|
+
super(error)
|
111
110
|
end
|
112
111
|
|
113
112
|
self.include(wrapper)
|
data/lib/sus/describe.rb
CHANGED
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-
|
4
|
+
# Copyright, 2021-2024, by Samuel Williams.
|
5
5
|
# Copyright, 2022, by Brad Schrag.
|
6
6
|
|
7
|
-
require_relative
|
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-
|
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(
|
51
|
+
path, filter = target.split(":", 2)
|
52
52
|
|
53
53
|
@registry.load(path)
|
54
54
|
|
data/lib/sus/have.rb
CHANGED
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-
|
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
|
data/lib/sus/include_context.rb
CHANGED
data/lib/sus/it.rb
CHANGED
data/lib/sus/it_behaves_like.rb
CHANGED
data/lib/sus/let.rb
CHANGED
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
|
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)
|
data/lib/sus/output/buffered.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2021-
|
4
|
+
# Copyright, 2021-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require
|
7
|
-
require
|
6
|
+
require "io/console"
|
7
|
+
require "stringio"
|
8
8
|
|
9
9
|
module Sus
|
10
10
|
# Styled output output.
|
data/lib/sus/output/lines.rb
CHANGED
data/lib/sus/output/null.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2021-
|
4
|
+
# Copyright, 2021-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
6
|
+
require_relative "messages"
|
7
7
|
|
8
8
|
module Sus
|
9
9
|
# Styled output output.
|
data/lib/sus/output/progress.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2021-
|
4
|
+
# Copyright, 2021-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
8
|
-
require_relative
|
6
|
+
require_relative "bar"
|
7
|
+
require_relative "status"
|
8
|
+
require_relative "lines"
|
9
9
|
|
10
10
|
module Sus
|
11
11
|
module Output
|
data/lib/sus/output/status.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2021-
|
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)
|
data/lib/sus/output/text.rb
CHANGED
data/lib/sus/output/xterm.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# Released under the MIT License.
|
4
|
-
# Copyright, 2021-
|
4
|
+
# Copyright, 2021-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require
|
6
|
+
require "io/console"
|
7
7
|
|
8
|
-
require_relative
|
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-
|
4
|
+
# Copyright, 2021-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
8
|
-
require_relative
|
6
|
+
require_relative "output/bar"
|
7
|
+
require_relative "output/text"
|
8
|
+
require_relative "output/xterm"
|
9
9
|
|
10
|
-
require_relative
|
11
|
-
require_relative
|
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
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-
|
4
|
+
# Copyright, 2021-2024, by Samuel Williams.
|
5
5
|
# Copyright, 2022, by Brad Schrag.
|
6
6
|
|
7
|
-
require_relative
|
7
|
+
require_relative "base"
|
8
8
|
|
9
|
-
require_relative
|
10
|
-
require_relative
|
11
|
-
require_relative
|
9
|
+
require_relative "file"
|
10
|
+
require_relative "describe"
|
11
|
+
require_relative "with"
|
12
12
|
|
13
|
-
require_relative
|
13
|
+
require_relative "it"
|
14
14
|
|
15
|
-
require_relative
|
16
|
-
require_relative
|
17
|
-
require_relative
|
15
|
+
require_relative "shared"
|
16
|
+
require_relative "it_behaves_like"
|
17
|
+
require_relative "include_context"
|
18
18
|
|
19
|
-
require_relative
|
19
|
+
require_relative "let"
|
20
20
|
|
21
21
|
module Sus
|
22
22
|
class Registry
|
data/lib/sus/shared.rb
CHANGED
data/lib/sus/version.rb
CHANGED
data/lib/sus/with.rb
CHANGED
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-
|
4
|
+
# Copyright, 2021-2024, by Samuel Williams.
|
5
5
|
|
6
|
-
require_relative
|
7
|
-
require_relative
|
8
|
-
require_relative
|
9
|
-
require_relative
|
10
|
-
require_relative
|
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
|
13
|
-
require_relative
|
14
|
-
require_relative
|
15
|
-
require_relative
|
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
|
18
|
-
require_relative
|
17
|
+
require_relative "sus/mock"
|
18
|
+
require_relative "sus/receive"
|
19
19
|
|
20
|
-
require_relative
|
21
|
-
require_relative
|
22
|
-
require_relative
|
20
|
+
require_relative "sus/raise_exception"
|
21
|
+
require_relative "sus/have_duration"
|
22
|
+
require_relative "sus/have"
|
23
23
|
|
24
|
-
require_relative
|
24
|
+
require_relative "sus/filter"
|
data/readme.md
CHANGED
@@ -1,40 +1,41 @@
|
|
1
|
-
# Sus
|
1
|
+
# Sus
|
2
2
|
|
3
|
-
|
3
|
+
Sus is a testing framework for Ruby.
|
4
4
|
|
5
|
-
-
|
6
|
-
-
|
7
|
-
-
|
8
|
-
-
|
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
|
-
|
12
|
+
[](https://github.com/socketry/sus/actions?workflow=Test)
|
11
13
|
|
12
|
-
|
13
|
-
- Backwards compatibility.
|
14
|
+
## Lightning Talk: Testing with Sus (2023)
|
14
15
|
|
15
|
-
|
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
|
-
##
|
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
|
-
|
24
|
+
Please see the [project documentation](https://socketry.github.io/sus/) for more details.
|
22
25
|
|
23
|
-
|
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
|
-
|
28
|
+
## Releases
|
26
29
|
|
27
|
-
|
30
|
+
Please see the [project releases](https://socketry.github.io/sus/releases/index) for all releases.
|
28
31
|
|
29
|
-
|
32
|
+
### v0.32.0
|
30
33
|
|
31
|
-
|
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
|
-
##
|
36
|
+
## See Also
|
36
37
|
|
37
|
-
|
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
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.
|
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-
|
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
|
-
|
104
|
+
- releases.md
|
105
|
+
homepage: https://github.com/socketry/sus
|
105
106
|
licenses:
|
106
107
|
- MIT
|
107
108
|
metadata:
|
108
|
-
documentation_uri: https://
|
109
|
+
documentation_uri: https://socketry.github.io/sus/
|
109
110
|
funding_uri: https://github.com/sponsors/ioquatix/
|
110
|
-
source_code_uri: https://github.com/
|
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.
|
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
|