scmd 3.0.3 → 3.0.4
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 +7 -7
- data/Gemfile +5 -2
- data/README.md +1 -1
- data/bench/results.txt +32 -32
- data/bench/runner.rb +12 -10
- data/lib/scmd.rb +13 -13
- data/lib/scmd/command.rb +52 -37
- data/lib/scmd/command_spy.rb +22 -24
- data/lib/scmd/stored_commands.rb +10 -14
- data/lib/scmd/version.rb +3 -1
- data/scmd.gemspec +10 -7
- data/script/bench.rb +6 -7
- data/test/helper.rb +5 -3
- data/test/support/factory.rb +3 -2
- data/test/system/command_tests.rb +22 -27
- data/test/unit/command_spy_tests.rb +15 -17
- data/test/unit/command_tests.rb +8 -9
- data/test/unit/scmd_tests.rb +17 -22
- data/test/unit/stored_commands_tests.rb +6 -8
- data/tmp/.gitkeep +0 -0
- metadata +58 -44
- data/.gitignore +0 -19
data/test/unit/command_tests.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "assert"
|
2
|
-
require
|
4
|
+
require "scmd/command"
|
3
5
|
|
4
6
|
class Scmd::Command
|
5
|
-
|
6
7
|
class UnitTests < Assert::Context
|
7
8
|
desc "Scmd::Command"
|
8
9
|
setup do
|
@@ -27,9 +28,9 @@ class Scmd::Command
|
|
27
28
|
|
28
29
|
should "stringify its env hash" do
|
29
30
|
cmd = Scmd::Command.new("echo $SCMD_TEST_VAR", {
|
30
|
-
:
|
31
|
-
})
|
32
|
-
exp = {
|
31
|
+
env: { SCMD_TEST_VAR: 1 },
|
32
|
+
},)
|
33
|
+
exp = { "SCMD_TEST_VAR" => "1" }
|
33
34
|
assert_equal exp, cmd.env
|
34
35
|
end
|
35
36
|
|
@@ -40,8 +41,8 @@ class Scmd::Command
|
|
40
41
|
should "default its result values" do
|
41
42
|
assert_nil subject.pid
|
42
43
|
assert_nil subject.exitstatus
|
43
|
-
assert_equal
|
44
|
-
assert_equal
|
44
|
+
assert_equal "", subject.stdout
|
45
|
+
assert_equal "", subject.stderr
|
45
46
|
end
|
46
47
|
|
47
48
|
should "default its state" do
|
@@ -72,7 +73,5 @@ class Scmd::Command
|
|
72
73
|
subject.kill
|
73
74
|
assert_nil subject.pid
|
74
75
|
end
|
75
|
-
|
76
76
|
end
|
77
|
-
|
78
77
|
end
|
data/test/unit/scmd_tests.rb
CHANGED
@@ -1,25 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "assert"
|
2
|
-
require
|
4
|
+
require "scmd"
|
3
5
|
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
6
|
+
require "scmd/command"
|
7
|
+
require "scmd/command_spy"
|
8
|
+
require "scmd/stored_commands"
|
7
9
|
|
8
10
|
module Scmd
|
9
|
-
|
10
11
|
class UnitTests < Assert::Context
|
11
12
|
desc "Scmd"
|
12
13
|
subject{ Scmd }
|
13
14
|
|
14
15
|
should have_imeths :new, :commands, :calls, :reset, :add_command
|
15
|
-
|
16
16
|
end
|
17
17
|
|
18
18
|
class NonTestModeTests < UnitTests
|
19
19
|
desc "when NOT in test mode"
|
20
20
|
|
21
21
|
should "build a `Command` with the `new` method" do
|
22
|
-
assert_instance_of Scmd::Command, subject.new(
|
22
|
+
assert_instance_of Scmd::Command, subject.new("echo hi")
|
23
23
|
end
|
24
24
|
|
25
25
|
should "raise no method error on the test mode API methods" do
|
@@ -32,23 +32,23 @@ module Scmd
|
|
32
32
|
subject.add_command(Factory.string)
|
33
33
|
end
|
34
34
|
end
|
35
|
-
|
36
35
|
end
|
37
36
|
|
38
37
|
class TestModeTests < UnitTests
|
39
38
|
desc "when in test mode"
|
40
39
|
setup do
|
41
|
-
@orig_scmd_test_mode = ENV[
|
42
|
-
ENV[
|
40
|
+
@orig_scmd_test_mode = ENV["SCMD_TEST_MODE"]
|
41
|
+
ENV["SCMD_TEST_MODE"] = "1"
|
43
42
|
Scmd.reset
|
44
43
|
end
|
45
44
|
teardown do
|
46
45
|
Scmd.reset
|
47
|
-
ENV[
|
46
|
+
ENV["SCMD_TEST_MODE"] = @orig_scmd_test_mode
|
48
47
|
end
|
49
48
|
|
50
|
-
should "get a command spy from the commands collection with the new`
|
51
|
-
|
49
|
+
should "get a command spy from the commands collection with the `new` "\
|
50
|
+
"method" do
|
51
|
+
assert_equal Scmd::CommandSpy.new("echo hi"), subject.new("echo hi")
|
52
52
|
end
|
53
53
|
|
54
54
|
should "know its test mode API attrs" do
|
@@ -76,7 +76,6 @@ module Scmd
|
|
76
76
|
subject.add_command(cmd_str){ |cmd| cmd.stdout = output }
|
77
77
|
assert_equal output, subject.new(cmd_str).stdout
|
78
78
|
end
|
79
|
-
|
80
79
|
end
|
81
80
|
|
82
81
|
class CallTests < UnitTests
|
@@ -97,26 +96,24 @@ module Scmd
|
|
97
96
|
assert_equal @input, subject.input
|
98
97
|
assert_equal @cmd, subject.cmd
|
99
98
|
end
|
100
|
-
|
101
99
|
end
|
102
100
|
|
103
101
|
class TimeoutErrorTests < UnitTests
|
104
102
|
desc "TimeoutError"
|
105
103
|
setup do
|
106
|
-
@error = Scmd::TimeoutError.new(
|
104
|
+
@error = Scmd::TimeoutError.new("test")
|
107
105
|
end
|
108
106
|
subject{ @error }
|
109
107
|
|
110
108
|
should "be a RuntimeError" do
|
111
109
|
assert_kind_of ::RuntimeError, subject
|
112
110
|
end
|
113
|
-
|
114
111
|
end
|
115
112
|
|
116
113
|
class RunErrorTests < UnitTests
|
117
114
|
desc "RunError"
|
118
115
|
setup do
|
119
|
-
@error = Scmd::RunError.new(
|
116
|
+
@error = Scmd::RunError.new("test")
|
120
117
|
end
|
121
118
|
subject{ @error }
|
122
119
|
|
@@ -125,16 +122,14 @@ module Scmd
|
|
125
122
|
end
|
126
123
|
|
127
124
|
should "set its backtrace to the caller by default" do
|
128
|
-
assert_match
|
125
|
+
assert_match(/scmd_tests.rb:.*$/, subject.backtrace.first)
|
129
126
|
end
|
130
127
|
|
131
128
|
should "allow passing a custom backtrace" do
|
132
129
|
called_from = caller
|
133
|
-
error = Scmd::RunError.new(
|
130
|
+
error = Scmd::RunError.new("test", called_from)
|
134
131
|
|
135
132
|
assert_equal called_from, error.backtrace
|
136
133
|
end
|
137
|
-
|
138
134
|
end
|
139
|
-
|
140
135
|
end
|
@@ -1,10 +1,11 @@
|
|
1
|
-
|
2
|
-
require 'scmd/stored_commands'
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
4
|
-
require
|
3
|
+
require "assert"
|
4
|
+
require "scmd/stored_commands"
|
5
5
|
|
6
|
-
|
6
|
+
require "scmd/command_spy"
|
7
7
|
|
8
|
+
class Scmd::StoredCommands
|
8
9
|
class UnitTests < Assert::Context
|
9
10
|
desc "Scmd::StoredCommands"
|
10
11
|
setup do
|
@@ -98,7 +99,6 @@ class Scmd::StoredCommands
|
|
98
99
|
cmds1.add(@cmd_str)
|
99
100
|
assert_not_equal cmds1, cmds2
|
100
101
|
end
|
101
|
-
|
102
102
|
end
|
103
103
|
|
104
104
|
class StubTests < UnitTests
|
@@ -125,7 +125,7 @@ class Scmd::StoredCommands
|
|
125
125
|
|
126
126
|
should "allow setting commands for specific opts" do
|
127
127
|
cmd = subject.call(@opts)
|
128
|
-
assert_equal
|
128
|
+
assert_equal "", cmd.stdout
|
129
129
|
|
130
130
|
subject.with({}){ |cmd| cmd.stdout = @output }
|
131
131
|
cmd = subject.call({})
|
@@ -140,7 +140,5 @@ class Scmd::StoredCommands
|
|
140
140
|
Assert.stub(stub1, [:cmd_str, :hash].sample){ Factory.string }
|
141
141
|
assert_not_equal stub1, stub2
|
142
142
|
end
|
143
|
-
|
144
143
|
end
|
145
|
-
|
146
144
|
end
|
data/tmp/.gitkeep
ADDED
File without changes
|
metadata
CHANGED
@@ -1,49 +1,66 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: scmd
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 3.0.4
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- Kelly Redding
|
8
8
|
- Collin Redding
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
requirements:
|
18
|
-
- - ~>
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version:
|
12
|
+
date: 2021-01-10 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: much-style-guide
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 0.6.0
|
21
21
|
type: :development
|
22
|
-
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 0.6.0
|
28
|
+
- !ruby/object:Gem::Dependency
|
23
29
|
name: assert
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 2.19.2
|
35
|
+
type: :development
|
24
36
|
prerelease: false
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 2.19.2
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: posix-spawn
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
30
48
|
version: 0.3.11
|
31
49
|
type: :runtime
|
32
|
-
requirement: *id002
|
33
|
-
name: posix-spawn
|
34
50
|
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 0.3.11
|
35
56
|
description: Build and run system commands.
|
36
|
-
email:
|
57
|
+
email:
|
37
58
|
- kelly@kellyredding.com
|
38
59
|
- collin.redding@me.com
|
39
60
|
executables: []
|
40
|
-
|
41
61
|
extensions: []
|
42
|
-
|
43
62
|
extra_rdoc_files: []
|
44
|
-
|
45
|
-
files:
|
46
|
-
- .gitignore
|
63
|
+
files:
|
47
64
|
- Gemfile
|
48
65
|
- LICENSE
|
49
66
|
- README.md
|
@@ -68,32 +85,29 @@ files:
|
|
68
85
|
- test/unit/stored_commands_tests.rb
|
69
86
|
- tmp/.gitkeep
|
70
87
|
homepage: http://github.com/redding/scmd
|
71
|
-
licenses:
|
88
|
+
licenses:
|
72
89
|
- MIT
|
73
90
|
metadata: {}
|
74
|
-
|
75
91
|
post_install_message:
|
76
92
|
rdoc_options: []
|
77
|
-
|
78
|
-
require_paths:
|
93
|
+
require_paths:
|
79
94
|
- lib
|
80
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
81
|
-
requirements:
|
82
|
-
-
|
83
|
-
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
95
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
100
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
89
105
|
requirements: []
|
90
|
-
|
91
|
-
rubyforge_project:
|
92
|
-
rubygems_version: 2.5.1
|
106
|
+
rubygems_version: 3.2.4
|
93
107
|
signing_key:
|
94
108
|
specification_version: 4
|
95
109
|
summary: Build and run system commands.
|
96
|
-
test_files:
|
110
|
+
test_files:
|
97
111
|
- test/helper.rb
|
98
112
|
- test/support/bigger-than-64k.txt
|
99
113
|
- test/support/factory.rb
|