test_launcher 2.21.0 → 2.26.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
- SHA1:
3
- metadata.gz: 06b235fa2c06c8c943187511a5e9d59ffe5ce01f
4
- data.tar.gz: 34105a1658d9d0152ac73bbc64d643aec0b73b6f
2
+ SHA256:
3
+ metadata.gz: 969bdf386bd70aad1f3fe5c3a5fdfe4d84f5563830e76fe89df3e26aa8a17ec8
4
+ data.tar.gz: 6153978e2039b70eff76093d6fd817b90b0c49ff5fdae8b43e686696e756da45
5
5
  SHA512:
6
- metadata.gz: 4e07fa6bb4ccc1933b27ccd24ef1d814b8cbfc7f89eb707d0ef75f5c29bfc794bcc1d3ba0f9d82a09068679c01f0ad027d91c2858a5a635b56cf2c2a55db6470
7
- data.tar.gz: fb39961d66baaba90e75ff23c73c14f35d0716f3c7e642bfdbec65811460301eae9a33b2bda6f78025b13107a26da482f29cb8a351538a02c2d09a4b4b3b916c
6
+ metadata.gz: b7c8a07385383100bd867642861011c51967e8127069baa83a486af9776350b09c9f4344eec3a36f7bf7fcbdb9effaa3cb1b045e58384e6a375a5dfd8d060a54
7
+ data.tar.gz: '0139155f5ac50725ca3ac6cba826c1917d9331f9c059dc8b4736668e408bf6a6a56bac67639bf6b6656abbba5d95c6aa3b037c4edc4ad6541f9b8fcc166cd86b'
@@ -1,5 +1,3 @@
1
- require "pathname"
2
-
3
1
  module TestLauncher
4
2
  module Frameworks
5
3
  module Implementation
@@ -24,7 +22,7 @@ module TestLauncher
24
22
  def mtime
25
23
  @mtime ||= File.mtime(file)
26
24
  end
27
-
25
+
28
26
  def relative_file
29
27
  file.sub(/^#{File.join(app_root, '/')}/, '')
30
28
  end
@@ -56,7 +54,7 @@ module TestLauncher
56
54
  end
57
55
 
58
56
  def exploded_path
59
- Pathname.new(file).each_filename.to_a
57
+ file.split("/")
60
58
  end
61
59
  end
62
60
  end
@@ -45,9 +45,16 @@ module TestLauncher
45
45
  .min_by {|r| line_number - r[:line_number]}
46
46
 
47
47
  if best_result
48
+ example_name =
49
+ if match = best_result[:line].match(/def\s+(?<name>test_[\w\?]+)/)
50
+ match[:name]
51
+ elsif match = best_result[:line].match(/test\s+['"](?<name>.*)['"]\s+do/)
52
+ "test_#{match[:name]}"
53
+ end
54
+
48
55
  [{
49
56
  file: best_result[:file],
50
- example_name: best_result[:line].match(/(def\s+(?<name>test_[\w\?]+)|test\s+['"](?<name>.*)['"]\s+do)/)[:name],
57
+ example_name: example_name,
51
58
  line_number: best_result[:line_number]
52
59
  }]
53
60
  else
@@ -101,17 +108,22 @@ Open an issue on https://github.com/petekinnecom/test_launcher if this is someth
101
108
 
102
109
  def single_example(test_case, name: test_case.example, exact_match: false)
103
110
  name_arg =
104
- if exact_match
111
+ if exact_match && name.match(/[^\w]/)
112
+ Shellwords.escape(name)
113
+ elsif !exact_match
114
+ "'/#{name}/'"
115
+ else
105
116
  name
117
+ end
118
+
119
+ file =
120
+ if test_case.spring_enabled?
121
+ test_case.relative_file
106
122
  else
107
- "/#{name}/"
123
+ test_case.file
108
124
  end
109
125
 
110
- if test_case.spring_enabled?
111
- %{cd #{test_case.app_root} && #{test_case.example_runner} #{test_case.relative_file} --name='#{name_arg}'}
112
- else
113
- %{cd #{test_case.app_root} && #{test_case.example_runner} #{test_case.file} --name='#{name_arg}'}
114
- end
126
+ %{cd #{test_case.app_root} && #{test_case.example_runner} #{file} --name=#{name_arg}}
115
127
  end
116
128
 
117
129
  def multiple_examples_same_file(test_cases)
@@ -135,7 +147,7 @@ Open an issue on https://github.com/petekinnecom/test_launcher if this is someth
135
147
  class TestCase < Base::TestCase
136
148
  def example_runner
137
149
  if spring_enabled?
138
- "bundle exec spring rails test"
150
+ "#{spring_runner} rails test"
139
151
  else
140
152
  "bundle exec ruby -I test"
141
153
  end
@@ -143,7 +155,7 @@ Open an issue on https://github.com/petekinnecom/test_launcher if this is someth
143
155
 
144
156
  def file_runner
145
157
  if spring_enabled?
146
- "bundle exec spring rails test"
158
+ "#{spring_runner} rails test"
147
159
  else
148
160
  "bundle exec ruby -I test -e 'ARGV.each {|f| require(f)}'"
149
161
  end
@@ -157,12 +169,15 @@ Open an issue on https://github.com/petekinnecom/test_launcher if this is someth
157
169
  return false if request.disable_spring?
158
170
  return true if request.force_spring?
159
171
 
160
- [
161
- "bin/spring",
162
- "bin/testunit"
163
- ].any? {|f|
164
- File.exist?(File.join(app_root, f))
165
- }
172
+ File.exist?(File.join(app_root, "bin/spring"))
173
+ end
174
+
175
+ def spring_runner
176
+ if File.exist?(File.join(app_root, "bin/spring"))
177
+ "bin/spring"
178
+ else
179
+ "bundle exec spring"
180
+ end
166
181
  end
167
182
 
168
183
  def example
@@ -1,41 +1,3 @@
1
- require "test_launcher/shell/runner"
2
- require "test_launcher/rubymine/launcher"
3
- require "test_launcher/rubymine/request"
1
+ require "test_launcher/rubymine/parser"
4
2
 
5
- # To allow us to simply specify our run configuration as:
6
- #
7
- # -r test_launcher/rubymine
8
- #
9
- # we need to put the currently executing script in with the args.
10
- #
11
- # Consider the following examples:
12
- #
13
- # ruby -r test_launcher/rubymine /path/to/test.rb
14
- #
15
- # vs
16
- #
17
- # ruby -r test_launcher/rubymine spring testunit /path/to/test.rb
18
- #
19
- # In one case, our test to run is $0 and in another case it's an ARGV.
20
- # So we throw them in the same bucket and let the launcher figure it
21
- # out. It doesn't matter since we will `exec` a new command anyway.
22
-
23
- module TestLauncher
24
- module Rubymine
25
- def self.launch
26
- shell = TestLauncher::Shell::Runner.new(log_path: "/dev/null")
27
-
28
- request = Request.new(
29
- disable_spring: ENV["DISABLE_SPRING"]
30
- )
31
-
32
- Launcher.new(
33
- args: [$0].concat(ARGV),
34
- shell: shell,
35
- request: request
36
- ).launch
37
- end
38
- end
39
- end
40
-
41
- TestLauncher::Rubymine.launch
3
+ TestLauncher::Rubymine::Parser.launch
@@ -3,6 +3,9 @@ require "test_launcher/shell/runner"
3
3
 
4
4
  module TestLauncher
5
5
  module Rubymine
6
+ # Parsing command line args with regex is not ideal ...¯\_(ツ)_/¯
7
+ TEST_NAME_REGEX = %r{['"]*/?\^?([^/'"\$]*)\$?/?['"]*}
8
+
6
9
  class Launcher
7
10
  def initialize(args:, shell:, request:)
8
11
  @args = args
@@ -14,7 +17,14 @@ module TestLauncher
14
17
  if args.any? {|a| a.match("ruby-debug-ide")}
15
18
  shell.puts "test_launcher: hijacking and debugging"
16
19
 
17
- debug_command = "cd #{test_case.app_root} && bundle exec ruby -I test #{args.join(" ")}"
20
+ debug_command = (
21
+ if args.first.match(/bash/)
22
+ "cd #{test_case.app_root} && #{args.join(" ")}"
23
+ else
24
+ "cd #{test_case.app_root} && bundle exec ruby -I test #{args.join(" ")}"
25
+ end
26
+ )
27
+
18
28
  shell.puts debug_command
19
29
  shell.exec debug_command
20
30
  else
@@ -40,7 +50,13 @@ module TestLauncher
40
50
  if args[-1].match("--name=")
41
51
  Frameworks::Minitest::TestCase.new(
42
52
  file: args[-2],
43
- example: args[-1][/--name=(.*)/, 1],
53
+ example: args[-1][%r{--name=#{TEST_NAME_REGEX}}, 1],
54
+ request: request
55
+ )
56
+ elsif args[-2]&.match("--name")
57
+ Frameworks::Minitest::TestCase.new(
58
+ file: args[-3],
59
+ example: args[-1][TEST_NAME_REGEX, 1],
44
60
  request: request
45
61
  )
46
62
  else
@@ -0,0 +1,51 @@
1
+ require "test_launcher/shell/runner"
2
+ require "test_launcher/rubymine/launcher"
3
+ require "test_launcher/rubymine/request"
4
+
5
+ # To allow us to simply specify our run configuration as:
6
+ #
7
+ # -r test_launcher/rubymine
8
+ #
9
+ # we need to put the currently executing script in with the args.
10
+ #
11
+ # Consider the following examples:
12
+ #
13
+ # ruby -r test_launcher/rubymine /path/to/test.rb
14
+ #
15
+ # vs
16
+ #
17
+ # ruby -r test_launcher/rubymine spring testunit /path/to/test.rb
18
+ #
19
+ # In one case, our test to run is $0 and in another case it's an ARGV.
20
+ # So we throw them in the same bucket and let the launcher figure it
21
+ # out. It doesn't matter since we will `exec` a new command anyway.
22
+
23
+ module TestLauncher
24
+ module Rubymine
25
+ module Parser
26
+ def self.launch(
27
+ shell: TestLauncher::Shell::Runner.new(log_path: "/dev/null"),
28
+ argv: ARGV,
29
+ env: ENV
30
+ )
31
+ request = Request.new(
32
+ disable_spring: ENV["DISABLE_SPRING"]
33
+ )
34
+
35
+ args = [$0].concat(argv).map { |arg|
36
+ if arg.match("minitest_runner.rb") && env.key?("INTELLIJ_IDEA_RUN_CONF_TEST_FILE_PATH")
37
+ arg.sub(%r{/.+/minitest_runner.rb['"]?}, env.fetch("INTELLIJ_IDEA_RUN_CONF_TEST_FILE_PATH"))
38
+ else
39
+ arg
40
+ end
41
+ }
42
+
43
+ Launcher.new(
44
+ args: args,
45
+ shell: shell,
46
+ request: request
47
+ ).launch
48
+ end
49
+ end
50
+ end
51
+ end
@@ -1,5 +1,4 @@
1
1
  require "test_launcher/shell/color"
2
- require "bundler"
3
2
  require "shellwords"
4
3
 
5
4
  module TestLauncher
@@ -1,3 +1,3 @@
1
1
  module TestLauncher
2
- VERSION = "2.21.0"
2
+ VERSION = "2.26.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test_launcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.21.0
4
+ version: 2.26.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pete Kinnecom
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-30 00:00:00.000000000 Z
11
+ date: 2020-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -64,6 +64,7 @@ files:
64
64
  - lib/test_launcher/queries.rb
65
65
  - lib/test_launcher/rubymine.rb
66
66
  - lib/test_launcher/rubymine/launcher.rb
67
+ - lib/test_launcher/rubymine/parser.rb
67
68
  - lib/test_launcher/rubymine/request.rb
68
69
  - lib/test_launcher/search.rb
69
70
  - lib/test_launcher/search/ag.rb
@@ -77,7 +78,7 @@ homepage: http://github.com/petekinnecom/test_launcher
77
78
  licenses:
78
79
  - MIT
79
80
  metadata: {}
80
- post_install_message:
81
+ post_install_message:
81
82
  rdoc_options: []
82
83
  require_paths:
83
84
  - lib
@@ -92,9 +93,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
93
  - !ruby/object:Gem::Version
93
94
  version: '0'
94
95
  requirements: []
95
- rubyforge_project:
96
- rubygems_version: 2.5.2
97
- signing_key:
96
+ rubygems_version: 3.0.3
97
+ signing_key:
98
98
  specification_version: 4
99
99
  summary: Easily run tests
100
100
  test_files: []