mini-cli 0.4.0 → 0.5.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
- data/lib/mini-cli/run.rb +14 -0
- data/lib/mini-cli/version.rb +1 -1
- data/test/apps/{noop → noop.rb} +0 -2
- data/test/apps/{sequence → sequence.rb} +0 -2
- data/test/mini-cli/exec_test.rb +6 -8
- data/test/mini-cli/main_test.rb +2 -0
- data/test/mini-cli/ruby_run_test.rb +43 -0
- metadata +9 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b366ee44d4b95a00a977cbfdcf3e7cc7aff2cc1d3f72c03e0df2c2858aaf22e8
|
4
|
+
data.tar.gz: 8a622678016ca76e554a6b80d40dbea7dd7d6db5a494b5d7dd83944e68d66921
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 73a9bee03f689d2f1e7334b6b927ba8cd45efb8422729c1abe93bf9062e26de47886ff0e70dc518ed01eeab7330e8777cd25a2c6fa270d6f16d32c0979de8d8d
|
7
|
+
data.tar.gz: cf6679d1245593b36ab18481ea4c83a14da4953cf41e6e849b92951a5dc5301c3603ef42476fe1cab0995d008b5356233f50dc2135f9f3d2530c5a61683560cd
|
data/lib/mini-cli/run.rb
CHANGED
@@ -14,8 +14,22 @@ module MiniCli
|
|
14
14
|
in_write&.close
|
15
15
|
end
|
16
16
|
|
17
|
+
def run_ruby(*cmd, **run_options)
|
18
|
+
require 'shellwords'
|
19
|
+
run(Shellwords.join(RUBY_CMD + cmd), **run_options)
|
20
|
+
end
|
21
|
+
|
22
|
+
def run_script(script, status: false, chdir: nil)
|
23
|
+
run_ruby(stdin_data: script, status: status, chdir: chdir)
|
24
|
+
end
|
25
|
+
|
17
26
|
private
|
18
27
|
|
28
|
+
RUBY_CMD =
|
29
|
+
%w[--disable gems --disable did_you_mean --disable rubyopt].unshift(
|
30
|
+
RbConfig.ruby
|
31
|
+
).freeze
|
32
|
+
|
19
33
|
def __run_proc(stdin_data, in_write)
|
20
34
|
return :read unless stdin_data
|
21
35
|
proc do |out|
|
data/lib/mini-cli/version.rb
CHANGED
data/test/apps/{noop → noop.rb}
RENAMED
data/test/mini-cli/exec_test.rb
CHANGED
@@ -5,14 +5,12 @@ require 'shellwords'
|
|
5
5
|
require_relative '../helper'
|
6
6
|
|
7
7
|
class ExecTest < Minitest::Test
|
8
|
-
parallelize_me!
|
9
|
-
|
10
8
|
def test_noop
|
11
|
-
assert_empty(assert_no_err('noop'))
|
9
|
+
assert_empty(assert_no_err('noop.rb'))
|
12
10
|
end
|
13
11
|
|
14
12
|
def test_noop_help
|
15
|
-
assert_equal("Usage: noop\n", assert_no_err('noop', '--help'))
|
13
|
+
assert_equal("Usage: noop\n", assert_no_err('noop.rb', '--help'))
|
16
14
|
end
|
17
15
|
|
18
16
|
def test_sequence
|
@@ -24,7 +22,7 @@ class ExecTest < Minitest::Test
|
|
24
22
|
'after_2[]',
|
25
23
|
'after_1[]'
|
26
24
|
]
|
27
|
-
assert_equal(expected, assert_no_err('sequence').split("\n"))
|
25
|
+
assert_equal(expected, assert_no_err('sequence.rb').split("\n"))
|
28
26
|
end
|
29
27
|
|
30
28
|
def test_sequence_help
|
@@ -35,7 +33,7 @@ class ExecTest < Minitest::Test
|
|
35
33
|
'-x, --exit early exit',
|
36
34
|
'-e, --error exit with error'
|
37
35
|
]
|
38
|
-
assert_equal(expected, assert_no_err('sequence', '--help').split("\n"))
|
36
|
+
assert_equal(expected, assert_no_err('sequence.rb', '--help').split("\n"))
|
39
37
|
end
|
40
38
|
|
41
39
|
def test_sequence_early_exit
|
@@ -47,7 +45,7 @@ class ExecTest < Minitest::Test
|
|
47
45
|
'after_2[]',
|
48
46
|
'after_1[]'
|
49
47
|
]
|
50
|
-
assert_equal(expected, assert_no_err('sequence', '-x').split("\n"))
|
48
|
+
assert_equal(expected, assert_no_err('sequence.rb', '-x').split("\n"))
|
51
49
|
end
|
52
50
|
|
53
51
|
def test_sequence_error
|
@@ -59,7 +57,7 @@ class ExecTest < Minitest::Test
|
|
59
57
|
'after_2[]',
|
60
58
|
'after_1[]'
|
61
59
|
]
|
62
|
-
std, err, status = invoke('sequence', '-e')
|
60
|
+
std, err, status = invoke('sequence.rb', '-e')
|
63
61
|
assert_same(42, status.exitstatus)
|
64
62
|
assert_equal("sequence: !error!\n", err)
|
65
63
|
assert_equal(expected, std.split("\n"))
|
data/test/mini-cli/main_test.rb
CHANGED
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../helper'
|
4
|
+
|
5
|
+
class RubyRunTest < Test
|
6
|
+
def test_simple
|
7
|
+
result = subject.run_script('puts("Hello World")')
|
8
|
+
assert_equal("Hello World\n", result)
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_error
|
12
|
+
result = subject.run_script('UNDEFINED')
|
13
|
+
assert_match(/NameError/, result)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_chdir
|
17
|
+
home = Dir.home
|
18
|
+
refute(home == Dir.pwd)
|
19
|
+
result = subject.run_script('print Dir.pwd', chdir: home)
|
20
|
+
assert_equal(home, result)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_status
|
24
|
+
status, result = subject.run_script('print :Ok', status: true)
|
25
|
+
assert_instance_of(Process::Status, status)
|
26
|
+
assert(status.success?)
|
27
|
+
assert_equal('Ok', result)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_status_error
|
31
|
+
status, result = subject.run_script('print :Err;exit 42', status: true)
|
32
|
+
assert_instance_of(Process::Status, status)
|
33
|
+
refute(status.success?)
|
34
|
+
assert_same(42, status.exitstatus)
|
35
|
+
assert_equal('Err', result)
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_stream
|
39
|
+
stream = StringIO.new('puts "Hello World"')
|
40
|
+
result = subject.run_script(stream)
|
41
|
+
assert_equal("Hello World\n", result)
|
42
|
+
end
|
43
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mini-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Blumtritt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -74,11 +74,12 @@ files:
|
|
74
74
|
- samples/custom_args.rb
|
75
75
|
- samples/demo.rb
|
76
76
|
- samples/simple.rb
|
77
|
-
- test/apps/noop
|
78
|
-
- test/apps/sequence
|
77
|
+
- test/apps/noop.rb
|
78
|
+
- test/apps/sequence.rb
|
79
79
|
- test/helper.rb
|
80
80
|
- test/mini-cli/exec_test.rb
|
81
81
|
- test/mini-cli/main_test.rb
|
82
|
+
- test/mini-cli/ruby_run_test.rb
|
82
83
|
- test/mini-cli/run_test.rb
|
83
84
|
homepage: https://github.com/mblumtritt/mini-cli
|
84
85
|
licenses: []
|
@@ -100,14 +101,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
101
|
- !ruby/object:Gem::Version
|
101
102
|
version: '0'
|
102
103
|
requirements: []
|
103
|
-
rubygems_version: 3.2.
|
104
|
+
rubygems_version: 3.2.15
|
104
105
|
signing_key:
|
105
106
|
specification_version: 4
|
106
107
|
summary: The lean CLI framework for Ruby
|
107
108
|
test_files:
|
108
|
-
- test/apps/noop
|
109
|
-
- test/apps/sequence
|
109
|
+
- test/apps/noop.rb
|
110
|
+
- test/apps/sequence.rb
|
110
111
|
- test/helper.rb
|
111
112
|
- test/mini-cli/exec_test.rb
|
112
113
|
- test/mini-cli/main_test.rb
|
114
|
+
- test/mini-cli/ruby_run_test.rb
|
113
115
|
- test/mini-cli/run_test.rb
|