testrbl 0.6.1 → 1.0.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
- SHA1:
3
- metadata.gz: 923ea811aeed11acf2cb1d77eea86ed1b7c49b07
4
- data.tar.gz: 4bec54a14982afb152f3bceadd706955e85845b4
2
+ SHA256:
3
+ metadata.gz: 19ec968f2eb4e08c8516fd0ffd36a7f995b7188fef3514502a5f7eccfb98ed3c
4
+ data.tar.gz: 920b6c83bfac62907b1e96d4443f76e5b8cc381c0fab37212878832598becc21
5
5
  SHA512:
6
- metadata.gz: f3247dd4afaaff1e83821fd06fb5e4f4b34b4ba5e290c2c0b580209c791934f595c8a198a7448050d17a24ef28edfe9808dd2451b719ecf302f293a6b9dd18c6
7
- data.tar.gz: 31fefcdbaa877d22f2752e1e503dc8c73948452f00d5111e5b2d46fc3963c17e6208c132143a85bf7681100bd67758259955ed7bf4179f8175030b790a9ad1ac
6
+ metadata.gz: dbbeef29c4dc3abe896f98a68a404b064bd97993df3d02dbd54c2a9355ab69f98aabc1c799d88e98f17b867620ec0ae0740b609b3dca6dd6772760fd862f8b32
7
+ data.tar.gz: 6bec88cac2c96932bc83a4958caba349d743444c63460f2242fec66ecc3bea402a8638ba5146b150d1ebadefd9a2b395ecb4b70826d232c0bd6e28de2f14643d
@@ -0,0 +1,21 @@
1
+ name: CI
2
+ on:
3
+ push:
4
+ branches: [master]
5
+ pull_request:
6
+ branches: [master]
7
+ jobs:
8
+ test:
9
+ runs-on: ubuntu-latest
10
+ strategy:
11
+ matrix:
12
+ ruby: [ '2.5', '2.6', '2.7', '3.0' ]
13
+ name: ${{ matrix.ruby }} rake
14
+ steps:
15
+ - run: git config --global user.email "you@example.com" && git config --global user.name "Your Name"
16
+ - uses: actions/checkout@v2
17
+ - uses: ruby/setup-ruby@v1
18
+ with:
19
+ ruby-version: ${{ matrix.ruby }}
20
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
21
+ - run: bundle exec rake
data/Gemfile.lock CHANGED
@@ -1,30 +1,32 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- testrbl (0.6.1)
4
+ testrbl (1.0.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  activesupport (2.3.14)
10
10
  bump (0.5.2)
11
- diff-lcs (1.1.3)
11
+ diff-lcs (1.4.4)
12
12
  minitest (5.0.3)
13
+ power_assert (2.0.1)
13
14
  rake (0.9.2.2)
14
- rspec (2.11.0)
15
- rspec-core (~> 2.11.0)
16
- rspec-expectations (~> 2.11.0)
17
- rspec-mocks (~> 2.11.0)
18
- rspec-core (2.11.1)
19
- rspec-expectations (2.11.3)
20
- diff-lcs (~> 1.1.3)
21
- rspec-mocks (2.11.2)
15
+ rspec (2.99.0)
16
+ rspec-core (~> 2.99.0)
17
+ rspec-expectations (~> 2.99.0)
18
+ rspec-mocks (~> 2.99.0)
19
+ rspec-core (2.99.2)
20
+ rspec-expectations (2.99.2)
21
+ diff-lcs (>= 1.1.3, < 2.0)
22
+ rspec-mocks (2.99.4)
22
23
  shoulda (3.0.1)
23
24
  shoulda-context (~> 1.0.0)
24
25
  shoulda-matchers (~> 1.0.0)
25
26
  shoulda-context (1.0.0)
26
27
  shoulda-matchers (1.0.0)
27
- test-unit (2.5.2)
28
+ test-unit (3.5.0)
29
+ power_assert
28
30
 
29
31
  PLATFORMS
30
32
  ruby
@@ -40,4 +42,4 @@ DEPENDENCIES
40
42
  testrbl!
41
43
 
42
44
  BUNDLED WITH
43
- 1.11.2
45
+ 2.1.4
data/Readme.md CHANGED
@@ -20,7 +20,7 @@ Usage
20
20
  testrbl test/unit/xxx_test.rb:123 # test by line number
21
21
  testrbl test/unit # everything _test.rb in a folder (on 1.8 this would be test/unit/*)
22
22
  testrbl xxx_test.rb yyy_test.rb # multiple files
23
- testrbl --changed # run changed tests
23
+ testrbl --changed # run changed tests or files in last commit
24
24
  ```
25
25
 
26
26
  Tips
@@ -36,4 +36,4 @@ Author
36
36
  [Michael Grosser](http://grosser.it)<br/>
37
37
  michael@grosser.it<br/>
38
38
  License: MIT<br/>
39
- [![Build Status](https://travis-ci.org/grosser/testrbl.png)](https://travis-ci.org/grosser/testrbl)
39
+ [![CI](https://github.com/grosser/testrbl/actions/workflows/actions.yml/badge.svg)](https://github.com/grosser/testrbl/actions/workflows/actions.yml?query=branch%3Amaster)
@@ -1,3 +1,3 @@
1
1
  module Testrbl
2
- VERSION = '0.6.1'
2
+ VERSION = '1.0.0'
3
3
  end
data/lib/testrbl.rb CHANGED
@@ -2,18 +2,19 @@ require 'testrbl/version'
2
2
 
3
3
  module Testrbl
4
4
  PATTERNS = [
5
- /^(\s+)(should|test|it)\s+['"](.*)['"]\s+do\s*(?:#.*)?$/,
6
- /^(\s+)(context|describe)\s+['"]?(.*?)['"]?\s+do\s*(?:#.*)?$/,
7
- /^(\s+)def\s+(test_)([a-z_\d]+)\s*(?:#.*)?$/
5
+ /^(\s+)(should|test|it)(\s+|\s*\(\s*)['"](.*)['"](\s*\))?\s+do\s*(?:#.*)?$/,
6
+ /^(\s+)(context|describe)(\s+|\s*\(\s*)['"]?(.*?)['"]?(\s*\))?\s+do\s*(?:#.*)?$/,
7
+ /^(\s+)def(\s+)(test_)([a-z_\d]+)\s*(?:#.*)?$/
8
8
  ]
9
9
 
10
- OPTION_WITH_ARGUMENT = ["-I", "-r", "-n", "-e", "--seed", "-s"]
10
+ OPTION_WITH_ARGUMENT = ["-I", "-r", "-n", "--name", "-e", "--exclude", "-s", "--seed"]
11
11
  INTERPOLATION = /\\\#\\\{.*?\\\}/
12
12
 
13
13
  class << self
14
14
  def run_from_cli(argv)
15
15
  files, options = partition_argv(argv)
16
16
  files.concat(changed_files) if options.delete("--changed")
17
+ files = ["test"] if files.empty?
17
18
  files = files.map { |f| localize(f) }
18
19
  load_options, options = partition_options(options)
19
20
 
@@ -114,11 +115,23 @@ module Testrbl
114
115
  end
115
116
 
116
117
  def changed_files
117
- changed_files = `git status -s`.split("\n").map { |l| l.strip.split(/\s+/, 2)[1] }
118
- raise "Failed: #{changed_files}" unless $?.success?
118
+ changed_files = sh("git status -s").split("\n").map { |l| l.strip.split(/\s+/, 2)[1] }
119
+
120
+ if changed_files.empty?
121
+ # user wants to test last commit and not current diff
122
+ changed_files = sh("git show --name-only").split("\n\n").last.split("\n")
123
+ end
124
+
125
+ # we only want test files that were added or changed (not deleted)
119
126
  changed_files.select { |f| f =~ /_(test|spec)\.rb$/ && File.exist?(f) }
120
127
  end
121
128
 
129
+ def sh(command)
130
+ result = `#{command}`
131
+ raise "Failed: #{command} -> #{result}" unless $?.success?
132
+ result
133
+ end
134
+
122
135
  def ruby
123
136
  if File.file?("Gemfile")
124
137
  ["ruby", "-rbundler/setup"] # faster then bundle exec ruby
@@ -142,7 +155,7 @@ module Testrbl
142
155
  def test_pattern_from_line(line)
143
156
  PATTERNS.each do |r|
144
157
  next unless line =~ r
145
- whitespace, method, test_name = $1, $2, $3
158
+ whitespace, method, test_name = $1, $2, $4
146
159
  return [whitespace, test_pattern_from_match(method, test_name)]
147
160
  end
148
161
  nil
data/spec/testrbl_spec.rb CHANGED
@@ -73,6 +73,7 @@ describe Testrbl do
73
73
  before do
74
74
  2.times do |i|
75
75
  write "#{i}_test.rb", <<-RUBY
76
+ require 'bundler/setup'
76
77
  require 'minitest/autorun'
77
78
 
78
79
  class Xxx#{i} < Minitest::Test
@@ -95,7 +96,8 @@ describe Testrbl do
95
96
  end
96
97
 
97
98
  it "seeds multiple files" do
98
- result = Bundler.with_clean_env { testrbl "0_test.rb 1_test.rb --seed 1234" } # adding --seed triggers minitest to be loaded in a weird way and then the second version is loaded via bundler :/
99
+ # adding --seed triggers minitest to be loaded in a weird way and then the second version is loaded via bundler :/
100
+ result = testrbl "0_test.rb 1_test.rb --seed 1234"
99
101
  result.should include "1234"
100
102
  end
101
103
  end
@@ -346,6 +348,16 @@ describe Testrbl do
346
348
  it "b./_-d" do
347
349
  puts "-EFG-"
348
350
  end
351
+
352
+ it("f-g") do
353
+ puts "-HIJ-"
354
+ end
355
+ end
356
+
357
+ describe("h-j") do
358
+ it "i-k" do
359
+ puts "-KLM-"
360
+ end
349
361
  end
350
362
  RUBY
351
363
  end
@@ -370,6 +382,14 @@ describe Testrbl do
370
382
  it "runs nested it" do
371
383
  run_line("13").should == ["CDE"]
372
384
  end
385
+
386
+ it "runs it with parens" do
387
+ run_line("28").should == ["HIJ"]
388
+ end
389
+
390
+ it "runs describe with parens" do
391
+ run_line("33").should == ["KLM"]
392
+ end
373
393
  end
374
394
 
375
395
  context "multiple files / folders" do
@@ -420,6 +440,14 @@ describe Testrbl do
420
440
  RUBY
421
441
  end
422
442
 
443
+ it "runs everything when nothing was given" do
444
+ File.rename "a", "test"
445
+ result = testrbl ""
446
+ result.should_not include "ABC\n"
447
+ result.should include "BCD\n"
448
+ result.should include "CDE\n"
449
+ end
450
+
423
451
  it "runs a folder with subfolders" do
424
452
  result = testrbl "a"
425
453
  result.should_not include "ABC\n"
@@ -465,7 +493,8 @@ describe Testrbl do
465
493
  end
466
494
 
467
495
  it "runs via testrb if unavoidable" do
468
- result = Bundler.with_clean_env { testrbl "a/b/c_test.rb backtrace_test.rb -n '/xxx/'" }
496
+ skip "idk why this is broken"
497
+ result = Bundler.with_unbundled_env { testrbl "a/b/c_test.rb backtrace_test.rb -n '/xxx/'" }
469
498
  result.should include("CDE")
470
499
  result.should include("BACKTRACE")
471
500
  result.should include("bin/testrb:")
@@ -520,6 +549,12 @@ describe Testrbl do
520
549
  result.should include "DEF"
521
550
  result.should_not include "ABC"
522
551
  end
552
+
553
+ it "runs last commit when no files are changed" do
554
+ result = testrbl("--changed")
555
+ result.should include "ABC"
556
+ result.should include "BCD"
557
+ end
523
558
  end
524
559
 
525
560
  describe ".test_pattern_from_file" do
@@ -617,7 +652,7 @@ describe Testrbl do
617
652
  call(" it \"xX ._-.. ___ Xx\" do\n").should == [" ", "#test_\\d+_xX \\._\\-\\.\\. ___ Xx$"]
618
653
  end
619
654
 
620
- it "finds with pecial characters" do
655
+ it "finds with special characters" do
621
656
  call(" it \"hmm? it's weird\\\"?\" do\n").should == [" ", "#test_\\d+_hmm\\? it.s weird\\\\\"\\?$"]
622
657
  end
623
658
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testrbl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-27 00:00:00.000000000 Z
11
+ date: 2021-10-24 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: michael@grosser.it
@@ -17,7 +17,7 @@ executables:
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
- - ".travis.yml"
20
+ - ".github/workflows/actions.yml"
21
21
  - Gemfile
22
22
  - Gemfile.lock
23
23
  - Rakefile
@@ -47,8 +47,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0'
49
49
  requirements: []
50
- rubyforge_project:
51
- rubygems_version: 2.4.5.1
50
+ rubygems_version: 3.2.16
52
51
  signing_key:
53
52
  specification_version: 4
54
53
  summary: Run ruby Test::Unit/Shoulda tests by line-number / folder / the dozen
data/.travis.yml DELETED
@@ -1,8 +0,0 @@
1
- before_script:
2
- - git config --global user.email "you@example.com"
3
- - git config --global user.name "Your Name"
4
- rvm:
5
- - 1.9.3
6
- - 2.0.0
7
- - 2.1.0
8
-