guard-busted 0.1.2 → 1.0.1
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/.github/workflows/rspec.yml +29 -0
- data/.github/workflows/rubocop.yml +22 -0
- data/.github/workflows/rubygems.yml +31 -0
- data/.gitignore +2 -0
- data/.overcommit.yml +86 -0
- data/.overcommit_gems.rb +7 -0
- data/.overcommit_gems.rb.lock +42 -0
- data/.rubocop.yml +5 -1
- data/Gemfile +11 -0
- data/Gemfile.lock +57 -45
- data/Guardfile +4 -2
- data/README.md +10 -4
- data/bin/dev +69 -0
- data/bin/setup +19 -0
- data/guard-busted.gemspec +2 -10
- data/lib/guard/busted/notifier.rb +67 -0
- data/lib/guard/busted/options.rb +2 -2
- data/lib/guard/busted/runner.rb +49 -19
- data/lib/guard/busted/templates/Guardfile +1 -1
- data/lib/guard/busted/version.rb +3 -1
- data/lib/guard/busted.rb +10 -6
- metadata +16 -91
- data/.travis.yml +0 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 663da150a36747b5610a573555b51940b380bf2c4867e709ed6dcc2ff27ca46e
|
|
4
|
+
data.tar.gz: 41297046ef2bf6b2987978106db86bb2ebba199cadf940013c7a3988c40b71b6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a062066c49f8a82f5071ebbd4d27ceb58defba8c7628640cee20850190ed9ccd67067227fc82f712ebe9fb7904d8176683e0a7653ae121621a3a8bd14abcc420
|
|
7
|
+
data.tar.gz: 24bc5e26aabeda3bfdf74825034467c30be6aeb458bbeb2c1df4c772899a689c46e3d0c80e114d158992574eadd67bdffbf173fff7a84d9ce168fa9ce36b24b8
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
name: RSpec
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ master, develop ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ master, develop ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
strategy:
|
|
14
|
+
matrix:
|
|
15
|
+
ruby-version: ['2.7', '3.0']
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v2
|
|
19
|
+
- name: Set up Ruby
|
|
20
|
+
uses: ruby/setup-ruby@v1
|
|
21
|
+
with:
|
|
22
|
+
ruby-version: ${{ matrix.ruby-version }}
|
|
23
|
+
bundler-cache: true
|
|
24
|
+
- name: Run tests
|
|
25
|
+
run: bundle exec rake
|
|
26
|
+
- name: Send test coverage report
|
|
27
|
+
uses: codecov/codecov-action@v2
|
|
28
|
+
with:
|
|
29
|
+
file: ./coverage/coverage.xml
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name: Rubocop
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ master, develop ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ master, develop ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
rubocop:
|
|
11
|
+
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v2
|
|
16
|
+
- name: Set up Ruby
|
|
17
|
+
uses: ruby/setup-ruby@v1
|
|
18
|
+
with:
|
|
19
|
+
ruby-version: '3.0'
|
|
20
|
+
bundler-cache: true
|
|
21
|
+
- name: Run rubocop
|
|
22
|
+
run: bundle exec rubocop
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name: Rubygems
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
build:
|
|
9
|
+
name: Build + Publish
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
packages: write
|
|
14
|
+
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
- uses: ruby/setup-ruby@v1
|
|
18
|
+
with:
|
|
19
|
+
ruby-version: '3.0'
|
|
20
|
+
|
|
21
|
+
- name: Publish to RubyGems
|
|
22
|
+
run: |
|
|
23
|
+
mkdir -p $HOME/.gem
|
|
24
|
+
touch $HOME/.gem/credentials
|
|
25
|
+
chmod 0600 $HOME/.gem/credentials
|
|
26
|
+
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
|
27
|
+
gem build *.gemspec
|
|
28
|
+
gem push *.gem
|
|
29
|
+
env:
|
|
30
|
+
GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
|
|
31
|
+
|
data/.gitignore
CHANGED
data/.overcommit.yml
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
gemfile: '.overcommit_gems.rb'
|
|
2
|
+
|
|
3
|
+
plugin_directory: '.git-hooks'
|
|
4
|
+
|
|
5
|
+
quiet: false
|
|
6
|
+
|
|
7
|
+
concurrency: '%{processors}'
|
|
8
|
+
|
|
9
|
+
verify_signatures: true
|
|
10
|
+
|
|
11
|
+
CommitMsg:
|
|
12
|
+
ALL:
|
|
13
|
+
requires_files: false
|
|
14
|
+
quiet: false
|
|
15
|
+
|
|
16
|
+
CapitalizedSubject:
|
|
17
|
+
enabled: false
|
|
18
|
+
|
|
19
|
+
EmptyMessage:
|
|
20
|
+
enabled: true
|
|
21
|
+
description: 'Check for empty commit message'
|
|
22
|
+
|
|
23
|
+
MessageFormat:
|
|
24
|
+
enabled: true
|
|
25
|
+
description: 'Check commit message matches expected pattern'
|
|
26
|
+
pattern: '\[(((#[0-9]+)(, (#[0-9]+))*)|(v[0-9]+(\.[0-9]+)*))\][ ](.+)(\n\n.+)?'
|
|
27
|
+
expected_pattern_message: '[#<Issue Id>|v<version>] <Commit Message Description>'
|
|
28
|
+
sample_message: '[#403] Fix a bug that crashes the system'
|
|
29
|
+
|
|
30
|
+
SingleLineSubject:
|
|
31
|
+
enabled: true
|
|
32
|
+
description: 'Check subject line'
|
|
33
|
+
|
|
34
|
+
TextWidth:
|
|
35
|
+
enabled: true
|
|
36
|
+
description: 'Check text width'
|
|
37
|
+
max_subject_width: 60
|
|
38
|
+
min_subject_width: 0
|
|
39
|
+
max_body_width: 72
|
|
40
|
+
|
|
41
|
+
TrailingPeriod:
|
|
42
|
+
enabled: true
|
|
43
|
+
description: 'Check for trailing periods in subject'
|
|
44
|
+
|
|
45
|
+
PreCommit:
|
|
46
|
+
ALL:
|
|
47
|
+
problem_on_unmodified_line: report
|
|
48
|
+
requires_files: true
|
|
49
|
+
required: false
|
|
50
|
+
quiet: false
|
|
51
|
+
|
|
52
|
+
RuboCop:
|
|
53
|
+
enabled: true
|
|
54
|
+
on_warn: fail
|
|
55
|
+
|
|
56
|
+
AuthorEmail:
|
|
57
|
+
enabled: true
|
|
58
|
+
description: 'Check author email'
|
|
59
|
+
requires_files: false
|
|
60
|
+
required: true
|
|
61
|
+
pattern: '^[^@]+@.*$'
|
|
62
|
+
|
|
63
|
+
AuthorName:
|
|
64
|
+
enabled: true
|
|
65
|
+
description: 'Check for author name'
|
|
66
|
+
requires_files: false
|
|
67
|
+
required: true
|
|
68
|
+
|
|
69
|
+
BrokenSymlinks:
|
|
70
|
+
enabled: true
|
|
71
|
+
description: 'Check for broken symlinks'
|
|
72
|
+
|
|
73
|
+
CaseConflicts:
|
|
74
|
+
enabled: true
|
|
75
|
+
description: 'Check for case-insensitivity conflicts'
|
|
76
|
+
|
|
77
|
+
FileSize:
|
|
78
|
+
enabled: true
|
|
79
|
+
description: 'Check for oversized files'
|
|
80
|
+
size_limit_bytes: 1_000_000
|
|
81
|
+
|
|
82
|
+
ForbiddenBranches:
|
|
83
|
+
enabled: true
|
|
84
|
+
description: 'Check for commit to forbidden branch'
|
|
85
|
+
quiet: true
|
|
86
|
+
branch_patterns: ['master', 'develop', 'v*']
|
data/.overcommit_gems.rb
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
GEM
|
|
2
|
+
remote: https://rubygems.org/
|
|
3
|
+
specs:
|
|
4
|
+
ast (2.4.2)
|
|
5
|
+
childprocess (4.1.0)
|
|
6
|
+
iniparse (1.5.0)
|
|
7
|
+
overcommit (0.58.0)
|
|
8
|
+
childprocess (>= 0.6.3, < 5)
|
|
9
|
+
iniparse (~> 1.4)
|
|
10
|
+
rexml (~> 3.2)
|
|
11
|
+
parallel (1.21.0)
|
|
12
|
+
parser (3.1.0.0)
|
|
13
|
+
ast (~> 2.4.1)
|
|
14
|
+
rainbow (3.1.1)
|
|
15
|
+
regexp_parser (2.2.1)
|
|
16
|
+
rexml (3.2.5)
|
|
17
|
+
rubocop (1.25.1)
|
|
18
|
+
parallel (~> 1.10)
|
|
19
|
+
parser (>= 3.1.0.0)
|
|
20
|
+
rainbow (>= 2.2.2, < 4.0)
|
|
21
|
+
regexp_parser (>= 1.8, < 3.0)
|
|
22
|
+
rexml
|
|
23
|
+
rubocop-ast (>= 1.15.1, < 2.0)
|
|
24
|
+
ruby-progressbar (~> 1.7)
|
|
25
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
|
26
|
+
rubocop-ast (1.15.2)
|
|
27
|
+
parser (>= 3.0.1.1)
|
|
28
|
+
rubocop-rspec (2.8.0)
|
|
29
|
+
rubocop (~> 1.19)
|
|
30
|
+
ruby-progressbar (1.11.0)
|
|
31
|
+
unicode-display_width (2.1.0)
|
|
32
|
+
|
|
33
|
+
PLATFORMS
|
|
34
|
+
x86_64-linux
|
|
35
|
+
|
|
36
|
+
DEPENDENCIES
|
|
37
|
+
overcommit
|
|
38
|
+
rubocop
|
|
39
|
+
rubocop-rspec
|
|
40
|
+
|
|
41
|
+
BUNDLED WITH
|
|
42
|
+
2.3.4
|
data/.rubocop.yml
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
guard-busted (0.1
|
|
5
|
-
guard
|
|
4
|
+
guard-busted (1.0.1)
|
|
5
|
+
guard (~> 2.18)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
8
8
|
remote: https://rubygems.org/
|
|
9
9
|
specs:
|
|
10
|
-
|
|
10
|
+
amazing_print (1.4.0)
|
|
11
|
+
ast (2.4.2)
|
|
11
12
|
coderay (1.1.3)
|
|
12
|
-
diff-lcs (1.
|
|
13
|
-
docile (1.
|
|
14
|
-
ffi (1.
|
|
15
|
-
formatador (
|
|
16
|
-
guard (2.
|
|
13
|
+
diff-lcs (1.5.0)
|
|
14
|
+
docile (1.4.0)
|
|
15
|
+
ffi (1.15.5)
|
|
16
|
+
formatador (1.1.0)
|
|
17
|
+
guard (2.18.0)
|
|
17
18
|
formatador (>= 0.2.4)
|
|
18
19
|
listen (>= 2.7, < 4.0)
|
|
19
20
|
lumberjack (>= 1.0.12, < 2.0)
|
|
20
21
|
nenv (~> 0.1)
|
|
21
22
|
notiffany (~> 0.0)
|
|
22
|
-
pry (>= 0.
|
|
23
|
+
pry (>= 0.13.0)
|
|
23
24
|
shellany (~> 0.0)
|
|
24
25
|
thor (>= 0.18.1)
|
|
25
26
|
guard-compat (1.2.1)
|
|
@@ -27,74 +28,85 @@ GEM
|
|
|
27
28
|
guard (~> 2.1)
|
|
28
29
|
guard-compat (~> 1.1)
|
|
29
30
|
rspec (>= 2.99.0, < 4.0)
|
|
30
|
-
listen (3.
|
|
31
|
+
listen (3.7.1)
|
|
31
32
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
|
32
33
|
rb-inotify (~> 0.9, >= 0.9.10)
|
|
33
|
-
lumberjack (1.2.
|
|
34
|
+
lumberjack (1.2.8)
|
|
34
35
|
method_source (1.0.0)
|
|
35
36
|
nenv (0.3.0)
|
|
36
37
|
notiffany (0.1.3)
|
|
37
38
|
nenv (~> 0.1)
|
|
38
39
|
shellany (~> 0.0)
|
|
39
|
-
parallel (1.
|
|
40
|
-
parser (3.
|
|
40
|
+
parallel (1.21.0)
|
|
41
|
+
parser (3.1.0.0)
|
|
41
42
|
ast (~> 2.4.1)
|
|
42
|
-
pry (0.
|
|
43
|
+
pry (0.14.1)
|
|
43
44
|
coderay (~> 1.1)
|
|
44
45
|
method_source (~> 1.0)
|
|
45
|
-
rainbow (3.
|
|
46
|
-
rake (
|
|
47
|
-
rb-fsevent (0.
|
|
46
|
+
rainbow (3.1.1)
|
|
47
|
+
rake (13.0.6)
|
|
48
|
+
rb-fsevent (0.11.1)
|
|
48
49
|
rb-inotify (0.10.1)
|
|
49
50
|
ffi (~> 1.0)
|
|
50
|
-
regexp_parser (2.
|
|
51
|
-
rexml (3.2.
|
|
52
|
-
rspec (3.
|
|
53
|
-
rspec-core (~> 3.
|
|
54
|
-
rspec-expectations (~> 3.
|
|
55
|
-
rspec-mocks (~> 3.
|
|
56
|
-
rspec-core (3.
|
|
57
|
-
rspec-support (~> 3.
|
|
58
|
-
rspec-expectations (3.
|
|
51
|
+
regexp_parser (2.2.1)
|
|
52
|
+
rexml (3.2.5)
|
|
53
|
+
rspec (3.11.0)
|
|
54
|
+
rspec-core (~> 3.11.0)
|
|
55
|
+
rspec-expectations (~> 3.11.0)
|
|
56
|
+
rspec-mocks (~> 3.11.0)
|
|
57
|
+
rspec-core (3.11.0)
|
|
58
|
+
rspec-support (~> 3.11.0)
|
|
59
|
+
rspec-expectations (3.11.0)
|
|
59
60
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
60
|
-
rspec-support (~> 3.
|
|
61
|
-
rspec-mocks (3.
|
|
61
|
+
rspec-support (~> 3.11.0)
|
|
62
|
+
rspec-mocks (3.11.0)
|
|
62
63
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
63
|
-
rspec-support (~> 3.
|
|
64
|
-
rspec-support (3.
|
|
65
|
-
rubocop (1.
|
|
64
|
+
rspec-support (~> 3.11.0)
|
|
65
|
+
rspec-support (3.11.0)
|
|
66
|
+
rubocop (1.25.1)
|
|
66
67
|
parallel (~> 1.10)
|
|
67
|
-
parser (>= 3.
|
|
68
|
+
parser (>= 3.1.0.0)
|
|
68
69
|
rainbow (>= 2.2.2, < 4.0)
|
|
69
70
|
regexp_parser (>= 1.8, < 3.0)
|
|
70
71
|
rexml
|
|
71
|
-
rubocop-ast (>= 1.
|
|
72
|
+
rubocop-ast (>= 1.15.1, < 2.0)
|
|
72
73
|
ruby-progressbar (~> 1.7)
|
|
73
74
|
unicode-display_width (>= 1.4.0, < 3.0)
|
|
74
|
-
rubocop-ast (1.
|
|
75
|
-
parser (>=
|
|
75
|
+
rubocop-ast (1.15.2)
|
|
76
|
+
parser (>= 3.0.1.1)
|
|
77
|
+
rubocop-rake (0.6.0)
|
|
78
|
+
rubocop (~> 1.0)
|
|
79
|
+
rubocop-rspec (2.8.0)
|
|
80
|
+
rubocop (~> 1.19)
|
|
76
81
|
ruby-progressbar (1.11.0)
|
|
77
82
|
shellany (0.0.1)
|
|
78
83
|
simplecov (0.21.2)
|
|
79
84
|
docile (~> 1.1)
|
|
80
85
|
simplecov-html (~> 0.11)
|
|
81
86
|
simplecov_json_formatter (~> 0.1)
|
|
87
|
+
simplecov-cobertura (2.1.0)
|
|
88
|
+
rexml
|
|
89
|
+
simplecov (~> 0.19)
|
|
82
90
|
simplecov-html (0.12.3)
|
|
83
|
-
simplecov_json_formatter (0.1.
|
|
84
|
-
thor (1.
|
|
85
|
-
unicode-display_width (2.
|
|
91
|
+
simplecov_json_formatter (0.1.3)
|
|
92
|
+
thor (1.2.1)
|
|
93
|
+
unicode-display_width (2.1.0)
|
|
86
94
|
|
|
87
95
|
PLATFORMS
|
|
88
|
-
|
|
96
|
+
x86_64-linux
|
|
89
97
|
|
|
90
98
|
DEPENDENCIES
|
|
91
|
-
|
|
99
|
+
amazing_print
|
|
100
|
+
guard
|
|
92
101
|
guard-busted!
|
|
93
102
|
guard-rspec
|
|
94
|
-
rake
|
|
95
|
-
rspec
|
|
96
|
-
rubocop
|
|
97
|
-
|
|
103
|
+
rake
|
|
104
|
+
rspec
|
|
105
|
+
rubocop
|
|
106
|
+
rubocop-rake
|
|
107
|
+
rubocop-rspec
|
|
108
|
+
simplecov
|
|
109
|
+
simplecov-cobertura
|
|
98
110
|
|
|
99
111
|
BUNDLED WITH
|
|
100
|
-
2.
|
|
112
|
+
2.3.4
|
data/Guardfile
CHANGED
data/README.md
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
# Guard::Busted
|
|
2
|
-
|
|
3
|
-
[](https://github.com/pjezusek/guard-busted/actions/workflows/rubocop.yml)
|
|
4
|
+
[](https://github.com/pjezusek/guard-busted/actions/workflows/rspec.yml)
|
|
5
|
+
[](https://codecov.io/gh/pjezusek/guard-busted)
|
|
6
|
+
[](https://rubygems.org/gems/guard-busted)
|
|
4
7
|
|
|
5
8
|
Guard for the unit testing framework named [busted](http://olivinelabs.com/busted/)
|
|
6
9
|
|
|
@@ -26,12 +29,15 @@ This command initializes the Guard file.
|
|
|
26
29
|
The provided guard template checks all files with `.lua` extension and starts the corresponding test file.
|
|
27
30
|
It searches test files in `spec` directory with the pattern `spec/<relative_path_to_file>/<file_name>_spec.lua`.
|
|
28
31
|
|
|
29
|
-
|
|
32
|
+
_EXAMPLE:_<br />
|
|
33
|
+
There is some file in the project `some_dir/some_file.lua`.
|
|
30
34
|
After some change on this file the guard-busted gem will try to perform tests located in: `spec/some_dir/some_file_spec.lua`.
|
|
31
35
|
|
|
32
|
-
|
|
36
|
+
_WARNING!:_<br />
|
|
37
|
+
Keep in your mind that it treats `src` dir in the special way.
|
|
33
38
|
It just does not include `src` in the mentioned pattern.
|
|
34
39
|
|
|
40
|
+
The gem also supports desktop notifications.
|
|
35
41
|
|
|
36
42
|
## Contributing
|
|
37
43
|
|
data/bin/dev
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require 'thor'
|
|
5
|
+
require 'tty-prompt'
|
|
6
|
+
require 'pry'
|
|
7
|
+
require_relative '../lib/guard/busted'
|
|
8
|
+
|
|
9
|
+
$stdout.sync = true
|
|
10
|
+
|
|
11
|
+
# path to the application root
|
|
12
|
+
APP_ROOT = File.expand_path('../', __dir__)
|
|
13
|
+
PROMPT = TTY::Prompt.new
|
|
14
|
+
|
|
15
|
+
# Bunch of commands that are usefull during development
|
|
16
|
+
class Dev < Thor
|
|
17
|
+
def self.exit_on_failure?
|
|
18
|
+
true
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
desc 'autofix', 'Run rubocop autofix'
|
|
22
|
+
def autofix
|
|
23
|
+
Dir.chdir APP_ROOT do
|
|
24
|
+
PROMPT.say 'Running autofix', color: :blue
|
|
25
|
+
system("rubocop -A #{APP_ROOT}", out: $stdout, err: :out)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
desc 'console', 'Start console'
|
|
30
|
+
def console
|
|
31
|
+
Dir.chdir APP_ROOT do
|
|
32
|
+
Pry.start
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
desc 'guard', 'Start guard'
|
|
37
|
+
def guard
|
|
38
|
+
Dir.chdir APP_ROOT do
|
|
39
|
+
PROMPT.say 'Starting guard', color: :blue
|
|
40
|
+
system('bundle exec guard', out: $stdout, err: :out)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
desc 'rubocop', 'Run rubocop'
|
|
45
|
+
def rubocop
|
|
46
|
+
Dir.chdir APP_ROOT do
|
|
47
|
+
PROMPT.say 'Running rubocop', color: :blue
|
|
48
|
+
system('rubocop', out: $stdout, err: :out)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
desc 'rspec', 'Run rspec'
|
|
53
|
+
def rspec
|
|
54
|
+
Dir.chdir APP_ROOT do
|
|
55
|
+
PROMPT.say 'Starting rspec', color: :blue
|
|
56
|
+
system('rspec', out: $stdout, err: :out)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
desc 'yard', 'Serve configuration via server'
|
|
61
|
+
def yard
|
|
62
|
+
Dir.chdir APP_ROOT do
|
|
63
|
+
PROMPT.say 'Starting yard server', color: :blue
|
|
64
|
+
system('yard server --reload', out: $stdout, err: :out)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
Dev.start
|
data/bin/setup
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
IFS=$'\n\t'
|
|
4
|
+
set -vx
|
|
5
|
+
|
|
6
|
+
# Go to project root dir
|
|
7
|
+
cd $(git rev-parse --show-toplevel 2>/dev/null)
|
|
8
|
+
|
|
9
|
+
# Install development dependencies
|
|
10
|
+
bundle install
|
|
11
|
+
|
|
12
|
+
# Instal overcommit dependencies
|
|
13
|
+
bundle install --gemfile=.overcommit_gems.rb
|
|
14
|
+
|
|
15
|
+
# Install git hooks
|
|
16
|
+
overcommit --install
|
|
17
|
+
|
|
18
|
+
# Sign git hooks
|
|
19
|
+
overcommit --sign
|
data/guard-busted.gemspec
CHANGED
|
@@ -17,21 +17,13 @@ Gem::Specification.new do |spec|
|
|
|
17
17
|
spec.metadata['homepage_uri'] = spec.homepage
|
|
18
18
|
spec.metadata['source_code_uri'] = 'https://github.com/pjezusek/guard-busted.git'
|
|
19
19
|
spec.metadata['changelog_uri'] = 'https://github.com/pjezusek/guard-busted/blob/master/CHANGELOG.md'
|
|
20
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
|
20
21
|
|
|
21
22
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
|
22
23
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
23
24
|
end
|
|
24
25
|
|
|
25
|
-
spec.test_files = spec.files.grep(%r{^spec/})
|
|
26
26
|
spec.require_paths = ['lib']
|
|
27
27
|
|
|
28
|
-
spec.add_dependency 'guard
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
spec.add_development_dependency 'guard', '~> 2.16'
|
|
32
|
-
spec.add_development_dependency 'guard-rspec'
|
|
33
|
-
spec.add_development_dependency 'rake', '~> 12.0'
|
|
34
|
-
spec.add_development_dependency 'rspec', '~> 3.0'
|
|
35
|
-
spec.add_development_dependency 'rubocop', '~> 1.8'
|
|
36
|
-
spec.add_development_dependency 'simplecov', '~> 0.21'
|
|
28
|
+
spec.add_dependency 'guard', '~> 2.18'
|
|
37
29
|
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'guard/notifier'
|
|
4
|
+
|
|
5
|
+
module Guard
|
|
6
|
+
# Wrapper for Guard::Notifier to make system notifications
|
|
7
|
+
class BustedNotifier
|
|
8
|
+
attr_accessor :raw_message, :status
|
|
9
|
+
|
|
10
|
+
FAILURE_TITLE = 'Busted - Failure'
|
|
11
|
+
SUCCESS_TITLE = 'Busted - Success'
|
|
12
|
+
|
|
13
|
+
# Initialize BustedNotifier
|
|
14
|
+
#
|
|
15
|
+
# @param message [String] message to parse, output from busted command
|
|
16
|
+
# @param status [Boolean] status of busted command
|
|
17
|
+
def initialize(message, status)
|
|
18
|
+
@raw_message = message
|
|
19
|
+
@status = status
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Send notification to the system
|
|
23
|
+
#
|
|
24
|
+
# The type of the notification depends on the status of busted command.
|
|
25
|
+
def notify
|
|
26
|
+
if status
|
|
27
|
+
notify_success
|
|
28
|
+
else
|
|
29
|
+
notify_failure
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
# Parse +raw_message+ to extract summary for a notification
|
|
36
|
+
# For now it only supports utfTerminal output
|
|
37
|
+
#
|
|
38
|
+
# @return [String]
|
|
39
|
+
def summary
|
|
40
|
+
@raw_message.match(/^.*success.*$/)
|
|
41
|
+
.to_s
|
|
42
|
+
.gsub(/[[:cntrl:]]/, '')
|
|
43
|
+
.gsub(/\[[0-9]+m/, '')
|
|
44
|
+
.gsub(/ : [0-9]+\.[0-9]+ seconds/, '')
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Notify with failure
|
|
48
|
+
def notify_failure
|
|
49
|
+
Guard::Notifier.notify(
|
|
50
|
+
summary,
|
|
51
|
+
title: FAILURE_TITLE,
|
|
52
|
+
image: :failed,
|
|
53
|
+
priority: 2
|
|
54
|
+
)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Notify with success
|
|
58
|
+
def notify_success
|
|
59
|
+
Guard::Notifier.notify(
|
|
60
|
+
summary,
|
|
61
|
+
title: SUCCESS_TITLE,
|
|
62
|
+
image: :success,
|
|
63
|
+
priority: -2
|
|
64
|
+
)
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
data/lib/guard/busted/options.rb
CHANGED
|
@@ -5,9 +5,9 @@ module Guard
|
|
|
5
5
|
DEFAULTS = {
|
|
6
6
|
run_all_on_start: false,
|
|
7
7
|
cmd: 'busted',
|
|
8
|
-
cmd_options: [],
|
|
8
|
+
cmd_options: ['-o', 'utfTerminal', '--Xoutput', '--color'],
|
|
9
9
|
cmd_all: 'busted',
|
|
10
|
-
cmd_all_options: []
|
|
10
|
+
cmd_all_options: ['-o', 'utfTerminal', '--Xoutput', '--color']
|
|
11
11
|
}.freeze
|
|
12
12
|
end
|
|
13
13
|
end
|
data/lib/guard/busted/runner.rb
CHANGED
|
@@ -1,48 +1,78 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'guard/ui'
|
|
4
|
+
|
|
5
|
+
require_relative 'notifier'
|
|
6
|
+
|
|
3
7
|
module Guard
|
|
4
8
|
# The class responsible for running 'busted' command in the proper context.
|
|
5
9
|
class BustedRunner < Plugin
|
|
6
|
-
attr_accessor :
|
|
10
|
+
attr_accessor :cmd, :cmd_options, :cmd_all, :cmd_all_options
|
|
7
11
|
|
|
12
|
+
# Initialize BustedRunner
|
|
13
|
+
# It accepts following options:
|
|
14
|
+
# - cmd - command to perform for specific spec files,
|
|
15
|
+
# - cmd_options [Array<String>] - options for cmd command,
|
|
16
|
+
# - cmd_all - command to perform for all spec files
|
|
17
|
+
# - cmd_all_options [Array<String>] - options for cmd_all command.
|
|
18
|
+
#
|
|
19
|
+
# @param options [Hash<Symbol, String>] options for runner
|
|
8
20
|
def initialize(options)
|
|
9
21
|
super
|
|
10
22
|
|
|
11
23
|
@cmd = options[:cmd]
|
|
12
|
-
@cmd_options = options[:cmd_options]
|
|
24
|
+
@cmd_options = Array(options[:cmd_options])
|
|
13
25
|
@cmd_all = options[:cmd_all]
|
|
14
|
-
@cmd_all_options = options[:cmd_all_options]
|
|
26
|
+
@cmd_all_options = Array(options[:cmd_all_options])
|
|
15
27
|
end
|
|
16
28
|
|
|
17
29
|
# Run all tests in the project
|
|
18
30
|
#
|
|
19
31
|
# @raise [:task_has_failed] when run_all has failed
|
|
20
32
|
def run_all
|
|
21
|
-
|
|
22
|
-
status =
|
|
33
|
+
UI.info 'Running all tests'
|
|
34
|
+
status, stdout = perform_command([@cmd_all] + @cmd_all_options)
|
|
35
|
+
Guard::BustedNotifier.new(stdout, status).notify
|
|
23
36
|
throw(:task_has_failed) unless status
|
|
24
37
|
end
|
|
25
38
|
|
|
39
|
+
# Run tests for the given paths
|
|
40
|
+
#
|
|
41
|
+
# @param paths [Array<String>] array of spec files
|
|
42
|
+
#
|
|
43
|
+
# @raise [:task_has_failed] when tests failed
|
|
26
44
|
def run(paths)
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
throw(:task_has_failed) if results.any? { |x| x == false }
|
|
45
|
+
existing_paths = paths.select { |p| Pathname.new(p).exist? }
|
|
46
|
+
|
|
47
|
+
return if existing_paths.empty?
|
|
48
|
+
|
|
49
|
+
UI.info "Running #{existing_paths.join(', ')}"
|
|
50
|
+
status, stdout = perform_command([@cmd] + @cmd_options + existing_paths)
|
|
51
|
+
Guard::BustedNotifier.new(stdout, status).notify
|
|
52
|
+
throw(:task_has_failed) unless status
|
|
36
53
|
end
|
|
37
54
|
|
|
38
55
|
private
|
|
39
56
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
57
|
+
# Performs command and print stdout and stderr to the console
|
|
58
|
+
#
|
|
59
|
+
# @param cmd [Array<String>] command to perform
|
|
60
|
+
#
|
|
61
|
+
# @return [Array<Boolean, String>]
|
|
62
|
+
def perform_command(cmd)
|
|
63
|
+
message = ''
|
|
64
|
+
status = 0
|
|
65
|
+
Open3.popen2e(*cmd) do |_, stdout_and_stderr, wait_thr|
|
|
66
|
+
# :nocov:
|
|
67
|
+
while (line = stdout_and_stderr.gets)
|
|
68
|
+
message += line
|
|
69
|
+
puts line
|
|
70
|
+
end
|
|
71
|
+
status = wait_thr.value.success?
|
|
72
|
+
# :nocov:
|
|
73
|
+
end
|
|
43
74
|
|
|
44
|
-
|
|
45
|
-
[options[:cmd_all], *options[:cmd_all_options]].join(' ')
|
|
75
|
+
[status, message]
|
|
46
76
|
end
|
|
47
77
|
end
|
|
48
78
|
end
|
data/lib/guard/busted/version.rb
CHANGED
data/lib/guard/busted.rb
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'guard/
|
|
3
|
+
require 'guard/plugin'
|
|
4
|
+
require 'guard/ui'
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
require_relative 'busted/options'
|
|
7
|
+
require_relative 'busted/runner'
|
|
8
|
+
require_relative 'busted/utils'
|
|
8
9
|
|
|
9
10
|
module Guard
|
|
10
11
|
# Plugin for 'guard' which starts 'busted' (lua unit testing framework) if a change is detected.
|
|
@@ -39,10 +40,13 @@ module Guard
|
|
|
39
40
|
private
|
|
40
41
|
|
|
41
42
|
def check_if_busted_exist
|
|
43
|
+
# :nocov:
|
|
42
44
|
return unless which('busted').nil?
|
|
43
45
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
+
# :nocov:
|
|
47
|
+
|
|
48
|
+
UI.error 'Busted not found. Use :cmd option or ' \
|
|
49
|
+
'install `busted` via `luarocks install busted --local`'
|
|
46
50
|
end
|
|
47
51
|
end
|
|
48
52
|
end
|
metadata
CHANGED
|
@@ -1,113 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: guard-busted
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1
|
|
4
|
+
version: 1.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Piotr Jezusek
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2024-08-03 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: guard-compat
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '1.2'
|
|
20
|
-
type: :runtime
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - "~>"
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '1.2'
|
|
27
13
|
- !ruby/object:Gem::Dependency
|
|
28
14
|
name: guard
|
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
|
30
16
|
requirements:
|
|
31
17
|
- - "~>"
|
|
32
18
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '2.
|
|
34
|
-
type: :
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - "~>"
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '2.16'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: guard-rspec
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - ">="
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - ">="
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: rake
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - "~>"
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '12.0'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - "~>"
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '12.0'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: rspec
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - "~>"
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '3.0'
|
|
76
|
-
type: :development
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - "~>"
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '3.0'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: rubocop
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - "~>"
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '1.8'
|
|
90
|
-
type: :development
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - "~>"
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '1.8'
|
|
97
|
-
- !ruby/object:Gem::Dependency
|
|
98
|
-
name: simplecov
|
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
|
100
|
-
requirements:
|
|
101
|
-
- - "~>"
|
|
102
|
-
- !ruby/object:Gem::Version
|
|
103
|
-
version: '0.21'
|
|
104
|
-
type: :development
|
|
19
|
+
version: '2.18'
|
|
20
|
+
type: :runtime
|
|
105
21
|
prerelease: false
|
|
106
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
23
|
requirements:
|
|
108
24
|
- - "~>"
|
|
109
25
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: '
|
|
26
|
+
version: '2.18'
|
|
111
27
|
description: Guard::Busted automatically run your specs
|
|
112
28
|
email:
|
|
113
29
|
- piotr.jezusek@softbeam.pl
|
|
@@ -115,10 +31,15 @@ executables: []
|
|
|
115
31
|
extensions: []
|
|
116
32
|
extra_rdoc_files: []
|
|
117
33
|
files:
|
|
34
|
+
- ".github/workflows/rspec.yml"
|
|
35
|
+
- ".github/workflows/rubocop.yml"
|
|
36
|
+
- ".github/workflows/rubygems.yml"
|
|
118
37
|
- ".gitignore"
|
|
38
|
+
- ".overcommit.yml"
|
|
39
|
+
- ".overcommit_gems.rb"
|
|
40
|
+
- ".overcommit_gems.rb.lock"
|
|
119
41
|
- ".rspec"
|
|
120
42
|
- ".rubocop.yml"
|
|
121
|
-
- ".travis.yml"
|
|
122
43
|
- CHANGELOG.md
|
|
123
44
|
- Gemfile
|
|
124
45
|
- Gemfile.lock
|
|
@@ -126,8 +47,11 @@ files:
|
|
|
126
47
|
- LICENSE.txt
|
|
127
48
|
- README.md
|
|
128
49
|
- Rakefile
|
|
50
|
+
- bin/dev
|
|
51
|
+
- bin/setup
|
|
129
52
|
- guard-busted.gemspec
|
|
130
53
|
- lib/guard/busted.rb
|
|
54
|
+
- lib/guard/busted/notifier.rb
|
|
131
55
|
- lib/guard/busted/options.rb
|
|
132
56
|
- lib/guard/busted/runner.rb
|
|
133
57
|
- lib/guard/busted/templates/Guardfile
|
|
@@ -140,6 +64,7 @@ metadata:
|
|
|
140
64
|
homepage_uri: https://github.com/pjezusek/guard-busted.git
|
|
141
65
|
source_code_uri: https://github.com/pjezusek/guard-busted.git
|
|
142
66
|
changelog_uri: https://github.com/pjezusek/guard-busted/blob/master/CHANGELOG.md
|
|
67
|
+
rubygems_mfa_required: 'true'
|
|
143
68
|
post_install_message:
|
|
144
69
|
rdoc_options: []
|
|
145
70
|
require_paths:
|
|
@@ -155,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
155
80
|
- !ruby/object:Gem::Version
|
|
156
81
|
version: '0'
|
|
157
82
|
requirements: []
|
|
158
|
-
rubygems_version: 3.
|
|
83
|
+
rubygems_version: 3.2.33
|
|
159
84
|
signing_key:
|
|
160
85
|
specification_version: 4
|
|
161
86
|
summary: Guard gem for busted
|
data/.travis.yml
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
language: ruby
|
|
2
|
-
cache: bundler
|
|
3
|
-
rvm:
|
|
4
|
-
- 2.7.0
|
|
5
|
-
before_install: gem install bundler -v 2.1.4
|
|
6
|
-
script: bundle exec rake spec
|
|
7
|
-
deploy:
|
|
8
|
-
provider: rubygems
|
|
9
|
-
api_key:
|
|
10
|
-
secure: tWkmZxm7D6fQGK3Shnccss9kXbGvAPFk4xr8fozhcX8xFut9P4+xs6U3iOa/JWWVb04YH5XHSI/i1B5cRMrK5v/xbY4jyJzRHHq9pcrYmnrnazDvpvDk6bb73PSOUZfBiSHxTu2EWk7wWuFIeFt81gQuX1k1tskAgKjXTsuPHCHJILlWP1HKpvIIoERffhWBAy8cDvURG64C8gaykTEj5rfHfdluA+PFZjum30vmkm8G48LuxprlmjYUDBIViXL/YZD+2AkRFeWSQOD7IB/34vFwnrZtw6mel42kU2zxdPOvW8JSLGNXExQyIr0krFsvgPq4TUkBqpkpHMOdDX4curSAEc+b2FROtYLwTY9MCnanQ4/KAbLxFiEuZlffPNm1g4EsfYA9B8e1xGkjJm9sLkIkKv+uztEq4p+x8DAe99y6lm+kTb36/IBFaeucCi5JjUWsGlGdQE2VrVfNcNTDhMXmUC8FEwiM1oOJYSDkjB0tpkU9VCIgLbrpFK8Nk8ByxO+5V2myvPfpWyN4sG3d1BIgKMJdOGlqI9ECHa9S64TLexGa9HZcBaYHXeYrUEMmPVcVNAdkU1WwcqvBAKq7so31zwAKoASMdKYV7xp8gZj+VIefwO74NaA7D2j31OuzMZUrl1QEZxsYXLsUWOTbrSFW+sMBaL8vtKK6Q2u+jNQ=
|
|
11
|
-
gem: guard-busted
|
|
12
|
-
on:
|
|
13
|
-
tags: true
|
|
14
|
-
repo: pjezusek/guard-busted
|
|
15
|
-
skip_cleanup: 'true'
|