infinity_test 1.0.2 → 2.0.0.rc1
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 -0
- data/.github/workflows/ci.yml +31 -0
- data/.gitignore +3 -0
- data/.rspec +2 -2
- data/AI_INTEGRATION_IDEAS.md +203 -0
- data/Gemfile +3 -15
- data/History.markdown +82 -0
- data/INFINITY_TEST +48 -0
- data/LICENSE.txt +2 -2
- data/README.md +627 -0
- data/Rakefile +1 -65
- data/TODO.markdown +26 -9
- data/bin/infinity_test +1 -4
- data/images/fuuu/pending.png +0 -0
- data/images/fuuu/success.png +0 -0
- data/infinity_test.gemspec +41 -191
- data/lib/infinity_test/core/auto_discover.rb +67 -0
- data/lib/infinity_test/core/base.rb +369 -0
- data/lib/infinity_test/core/callback.rb +59 -0
- data/lib/infinity_test/core/changed_file.rb +13 -0
- data/lib/infinity_test/core/command_builder.rb +48 -0
- data/lib/infinity_test/core/command_runner.rb +62 -0
- data/lib/infinity_test/core/configuration_merge.rb +37 -0
- data/lib/infinity_test/core/continuous_test_server.rb +106 -0
- data/lib/infinity_test/core/load_configuration.rb +48 -0
- data/lib/infinity_test/core/notifier.rb +59 -0
- data/lib/infinity_test/core/options.rb +134 -0
- data/lib/infinity_test/core/runner.rb +18 -0
- data/lib/infinity_test/core/version.rb +5 -0
- data/lib/infinity_test/framework/base.rb +57 -0
- data/lib/infinity_test/framework/padrino.rb +33 -0
- data/lib/infinity_test/framework/rails.rb +35 -0
- data/lib/infinity_test/framework/rubygems.rb +29 -0
- data/lib/infinity_test/framework/shared_example.rb +47 -0
- data/lib/infinity_test/observer/base.rb +40 -0
- data/lib/infinity_test/observer/filewatcher.rb +72 -0
- data/lib/infinity_test/observer/listen.rb +74 -0
- data/lib/infinity_test/observer/shared_example.rb +35 -0
- data/lib/infinity_test/old_dsl/configuration.rb +26 -0
- data/lib/infinity_test/strategy/base.rb +34 -0
- data/lib/infinity_test/strategy/rbenv.rb +32 -0
- data/lib/infinity_test/strategy/ruby_default.rb +20 -0
- data/lib/infinity_test/strategy/rvm.rb +50 -0
- data/lib/infinity_test/strategy/shared_example.rb +32 -0
- data/lib/infinity_test/test_framework/base.rb +64 -0
- data/lib/infinity_test/test_framework/rspec.rb +48 -0
- data/lib/infinity_test/test_framework/shared_example.rb +56 -0
- data/lib/infinity_test/test_framework/test_unit.rb +57 -0
- data/lib/infinity_test.rb +53 -35
- data/spec/infinity_test/core/auto_discover_spec.rb +149 -0
- data/spec/infinity_test/core/base_spec.rb +240 -0
- data/spec/infinity_test/core/callback_spec.rb +89 -0
- data/spec/infinity_test/core/changed_file_spec.rb +26 -0
- data/spec/infinity_test/core/command_builder_spec.rb +38 -0
- data/spec/infinity_test/core/configuration_merge_spec.rb +124 -0
- data/spec/infinity_test/core/continuous_test_server_spec.rb +116 -0
- data/spec/infinity_test/core/load_configuration_spec.rb +43 -0
- data/spec/infinity_test/core/notifier_spec.rb +151 -0
- data/spec/infinity_test/core/options_spec.rb +168 -0
- data/spec/infinity_test/core/runner_spec.rb +17 -0
- data/spec/infinity_test/framework/base_spec.rb +55 -0
- data/spec/infinity_test/framework/padrino_spec.rb +36 -0
- data/spec/infinity_test/framework/rails_spec.rb +36 -0
- data/spec/infinity_test/framework/rubygems_spec.rb +34 -0
- data/spec/infinity_test/observer/base_spec.rb +78 -0
- data/spec/infinity_test/observer/filewatcher_spec.rb +51 -0
- data/spec/infinity_test/observer/listen_spec.rb +50 -0
- data/spec/infinity_test/{builder_spec.rb → strategy/base_spec.rb} +1 -2
- data/spec/infinity_test/strategy/rbenv_spec.rb +53 -0
- data/spec/infinity_test/strategy/ruby_default_spec.rb +32 -0
- data/spec/infinity_test/strategy/rvm_spec.rb +69 -0
- data/spec/infinity_test/test_framework/rspec_spec.rb +119 -0
- data/spec/infinity_test/test_framework/test_unit_spec.rb +193 -0
- data/spec/spec_helper.rb +34 -119
- metadata +276 -205
- data/.infinity_test +0 -36
- data/.rvmrc +0 -1
- data/Gemfile.lock +0 -62
- data/Readme.markdown +0 -122
- data/Tasks +0 -4
- data/VERSION.yml +0 -5
- data/buzz_images/buzz_lightyear.jpg +0 -0
- data/buzz_images/buzz_lightyear_continencia.gif +0 -0
- data/buzz_images/to_infinity_and_beyond.png +0 -0
- data/features/heuristics.feature +0 -23
- data/features/support/env.rb +0 -2
- data/images/fuuu/sucess.png +0 -0
- data/lib/infinity_test/application.rb +0 -355
- data/lib/infinity_test/application_library/rails.rb +0 -94
- data/lib/infinity_test/application_library/rubygems.rb +0 -43
- data/lib/infinity_test/binary_path.rb +0 -43
- data/lib/infinity_test/builder.rb +0 -67
- data/lib/infinity_test/command.rb +0 -58
- data/lib/infinity_test/configuration.rb +0 -273
- data/lib/infinity_test/continuous_testing.rb +0 -40
- data/lib/infinity_test/dependencies.rb +0 -80
- data/lib/infinity_test/environment.rb +0 -15
- data/lib/infinity_test/heuristics.rb +0 -36
- data/lib/infinity_test/heuristics_helper.rb +0 -9
- data/lib/infinity_test/options.rb +0 -89
- data/lib/infinity_test/runner.rb +0 -38
- data/lib/infinity_test/test_framework.rb +0 -109
- data/lib/infinity_test/test_library/bacon.rb +0 -55
- data/lib/infinity_test/test_library/cucumber.rb +0 -22
- data/lib/infinity_test/test_library/rspec.rb +0 -58
- data/lib/infinity_test/test_library/test_unit.rb +0 -52
- data/lib/infinity_test/test_unit_loader.rb +0 -5
- data/spec/factories/buzz/lib/buzz.rb +0 -0
- data/spec/factories/buzz/spec/buzz_spec.rb +0 -0
- data/spec/factories/company/Gemfile +0 -0
- data/spec/factories/company/lib/company.rb +0 -0
- data/spec/factories/company/test/company_test.rb +0 -0
- data/spec/factories/images/failure.png +0 -0
- data/spec/factories/images/pending.png +0 -0
- data/spec/factories/images/sucess.png +0 -0
- data/spec/factories/infinity_test +0 -5
- data/spec/factories/infinity_test_example +0 -7
- data/spec/factories/slinky/spec/slinky/slinky_spec.rb +0 -0
- data/spec/factories/travel/lib/travel.rb +0 -0
- data/spec/factories/travel/test/partner_test.rb +0 -0
- data/spec/factories/travel/test/travel_test.rb +0 -0
- data/spec/factories/wood/lib/wood.rb +0 -0
- data/spec/factories/wood/spec/wood_spec.rb +0 -0
- data/spec/infinity_test/application_library/rails_spec.rb +0 -140
- data/spec/infinity_test/application_library/rubygems_spec.rb +0 -52
- data/spec/infinity_test/application_spec.rb +0 -424
- data/spec/infinity_test/binary_path_spec.rb +0 -72
- data/spec/infinity_test/command_spec.rb +0 -53
- data/spec/infinity_test/configuration_spec.rb +0 -377
- data/spec/infinity_test/continuous_testing_spec.rb +0 -25
- data/spec/infinity_test/environment_spec.rb +0 -23
- data/spec/infinity_test/heuristics_helper_spec.rb +0 -15
- data/spec/infinity_test/heuristics_spec.rb +0 -127
- data/spec/infinity_test/options_spec.rb +0 -91
- data/spec/infinity_test/runner_spec.rb +0 -42
- data/spec/infinity_test/test_framework_spec.rb +0 -127
- data/spec/infinity_test/test_library/bacon_spec.rb +0 -150
- data/spec/infinity_test/test_library/cucumber_spec.rb +0 -8
- data/spec/infinity_test/test_library/rspec_spec.rb +0 -185
- data/spec/infinity_test/test_library/test_unit_spec.rb +0 -184
- data/spec/infinity_test_spec.rb +0 -40
- /data/images/faces/{sucess.png → success.png} +0 -0
- /data/images/hands/{sucess.png → success.png} +0 -0
- /data/images/mario_bros/{sucess.jpg → success.jpg} +0 -0
- /data/images/rails/{sucess.png → success.png} +0 -0
- /data/images/rubies/{sucess.png → success.png} +0 -0
- /data/images/simpson/{sucess.jpg → success.jpg} +0 -0
- /data/images/street_fighter/{sucess.jpg → success.jpg} +0 -0
- /data/images/toy_story/{sucess.png → success.png} +0 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: de5c732203c3b409f78bed3dfeb549cc51e473bba5777b5cfa7c25ea4ced3727
|
|
4
|
+
data.tar.gz: c0e116e50c6d435b892507c4643e615467be709453840ed23fe946a1edd3d071
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: b1e7d0fc5bce31d3bdc2ed40d01fea49561702b78900460a735b41b8425b2f16e725c21e5add80dfb13b952e6ee70058432d65b1254ce78b7081ac6ce820ab64
|
|
7
|
+
data.tar.gz: 0a2d0157905c8fa52bb8bb6f07424317346ff3c1dc1f274821a9d6cb9099105e4e228a987bf7f2ab66e0e4d8e3ee00d63312c723a2838da91a54e98ae7dde0af
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [master, main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [master, main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ${{ matrix.os }}
|
|
12
|
+
strategy:
|
|
13
|
+
fail-fast: false
|
|
14
|
+
matrix:
|
|
15
|
+
os: [ubuntu-latest, macos-latest]
|
|
16
|
+
ruby: ['3.1', '3.2', '3.3']
|
|
17
|
+
include:
|
|
18
|
+
- os: ubuntu-latest
|
|
19
|
+
ruby: jruby
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v4
|
|
23
|
+
|
|
24
|
+
- name: Set up Ruby ${{ matrix.ruby }}
|
|
25
|
+
uses: ruby/setup-ruby@v1
|
|
26
|
+
with:
|
|
27
|
+
ruby-version: ${{ matrix.ruby }}
|
|
28
|
+
bundler-cache: true
|
|
29
|
+
|
|
30
|
+
- name: Run tests
|
|
31
|
+
run: bundle exec rspec
|
data/.gitignore
CHANGED
data/.rspec
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
--color
|
|
2
|
-
--
|
|
3
|
-
|
|
2
|
+
--tty
|
|
3
|
+
-f d
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# AI Integration Ideas for Infinity Test
|
|
2
|
+
|
|
3
|
+
This document outlines ideas for integrating Infinity Test with AI tools and agents, making Ruby development more efficient and intelligent.
|
|
4
|
+
|
|
5
|
+
## 1. Claude Code Integration
|
|
6
|
+
|
|
7
|
+
### Direct Integration
|
|
8
|
+
Infinity Test can work seamlessly with [Claude Code](https://claude.ai/claude-code), Anthropic's CLI tool for AI-assisted development.
|
|
9
|
+
|
|
10
|
+
**How it works:**
|
|
11
|
+
- Run `infinity_test` in one terminal while using Claude Code in another
|
|
12
|
+
- When Claude Code makes changes to your Ruby files, Infinity Test automatically runs the relevant tests
|
|
13
|
+
- Immediate feedback loop: write code → tests run → see results → iterate
|
|
14
|
+
|
|
15
|
+
**Example workflow:**
|
|
16
|
+
```bash
|
|
17
|
+
# Terminal 1: Start infinity_test
|
|
18
|
+
infinity_test --mode rails
|
|
19
|
+
|
|
20
|
+
# Terminal 2: Use Claude Code
|
|
21
|
+
claude "Add a validation to the User model that requires email to be present"
|
|
22
|
+
# Infinity Test automatically runs user_spec.rb when user.rb changes
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### AI-Powered Test Generation
|
|
26
|
+
Claude Code can generate tests based on your code changes:
|
|
27
|
+
```bash
|
|
28
|
+
claude "Write RSpec tests for the new validation I just added to User model"
|
|
29
|
+
# Tests are created, infinity_test runs them automatically
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 2. MCP (Model Context Protocol) Server
|
|
33
|
+
|
|
34
|
+
Create an MCP server that exposes Infinity Test functionality to AI agents:
|
|
35
|
+
|
|
36
|
+
```ruby
|
|
37
|
+
# Example MCP server endpoints
|
|
38
|
+
class InfinityTestMCPServer
|
|
39
|
+
# Get current test status
|
|
40
|
+
def get_test_status
|
|
41
|
+
{ last_run: Time.now, failures: 0, pending: 2 }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Run specific tests
|
|
45
|
+
def run_tests(files:)
|
|
46
|
+
InfinityTest.run(files)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Get failed tests
|
|
50
|
+
def get_failures
|
|
51
|
+
# Return list of failed test files with error messages
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Benefits:**
|
|
57
|
+
- AI agents can query test results programmatically
|
|
58
|
+
- Agents can trigger test runs for specific files
|
|
59
|
+
- Agents can understand test failures and suggest fixes
|
|
60
|
+
|
|
61
|
+
## 3. AI-Assisted Debugging
|
|
62
|
+
|
|
63
|
+
### Failure Analysis
|
|
64
|
+
When tests fail, integrate with AI to:
|
|
65
|
+
- Analyze the failure message
|
|
66
|
+
- Suggest potential fixes
|
|
67
|
+
- Identify related code that might need changes
|
|
68
|
+
|
|
69
|
+
```ruby
|
|
70
|
+
# INFINITY_TEST configuration
|
|
71
|
+
InfinityTest.setup do |config|
|
|
72
|
+
config.after(:all) do |results|
|
|
73
|
+
if results.failures.any?
|
|
74
|
+
# Send failures to AI for analysis
|
|
75
|
+
AIHelper.analyze_failures(results.failures)
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Smart Test Selection
|
|
82
|
+
Use AI to predict which tests are most likely to fail based on:
|
|
83
|
+
- Which files were changed
|
|
84
|
+
- Historical failure patterns
|
|
85
|
+
- Code complexity metrics
|
|
86
|
+
|
|
87
|
+
## 4. Natural Language Test Commands
|
|
88
|
+
|
|
89
|
+
Future idea: Integrate with AI to support natural language commands:
|
|
90
|
+
|
|
91
|
+
This is just an idea:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# Instead of
|
|
95
|
+
infinity_test --focus spec/models/user_spec.rb
|
|
96
|
+
|
|
97
|
+
# Support natural language
|
|
98
|
+
infinity_test --ai "run tests for user authentication"
|
|
99
|
+
infinity_test --ai "only run the tests that failed yesterday"
|
|
100
|
+
infinity_test --ai "run slow tests in parallel"
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## 5. Continuous Learning
|
|
104
|
+
|
|
105
|
+
### Pattern Recognition
|
|
106
|
+
- Track which code changes tend to break which tests
|
|
107
|
+
- Learn from your project's test patterns
|
|
108
|
+
- Predict test failures before running
|
|
109
|
+
|
|
110
|
+
### Smart Prioritization
|
|
111
|
+
- Run tests most likely to fail first
|
|
112
|
+
- Skip tests unlikely to be affected by changes
|
|
113
|
+
- Optimize test order for fastest feedback
|
|
114
|
+
|
|
115
|
+
## 6. Integration with Popular AI Tools
|
|
116
|
+
|
|
117
|
+
### GitHub Copilot
|
|
118
|
+
- Infinity Test watches files, Copilot suggests code
|
|
119
|
+
- Immediate test feedback on Copilot suggestions
|
|
120
|
+
|
|
121
|
+
### Cursor IDE
|
|
122
|
+
- Real-time test results in Cursor's AI panel
|
|
123
|
+
- AI can see test output when suggesting fixes
|
|
124
|
+
|
|
125
|
+
### Cody (Sourcegraph)
|
|
126
|
+
- Cody understands your test patterns
|
|
127
|
+
- Suggests tests based on code context
|
|
128
|
+
|
|
129
|
+
## 7. Hooks for AI Agents
|
|
130
|
+
|
|
131
|
+
Add hooks that AI agents can use:
|
|
132
|
+
|
|
133
|
+
```ruby
|
|
134
|
+
InfinityTest.setup do |config|
|
|
135
|
+
# Hook for AI to process before each test run
|
|
136
|
+
config.before(:all) do
|
|
137
|
+
AIAgent.notify(:test_starting)
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# Hook for AI to process test results
|
|
141
|
+
config.after(:all) do |results|
|
|
142
|
+
AIAgent.process_results(results)
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
# Custom AI-powered heuristics
|
|
146
|
+
config.ai_heuristics do |changed_file|
|
|
147
|
+
AIAgent.predict_tests_to_run(changed_file)
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## 8. Test Quality Analysis
|
|
153
|
+
|
|
154
|
+
Use AI to analyze test quality:
|
|
155
|
+
- Identify flaky tests
|
|
156
|
+
- Suggest missing test cases
|
|
157
|
+
- Detect duplicate tests
|
|
158
|
+
- Recommend test refactoring
|
|
159
|
+
|
|
160
|
+
## 9. Documentation Generation
|
|
161
|
+
|
|
162
|
+
After tests pass, AI can:
|
|
163
|
+
- Generate documentation from test descriptions
|
|
164
|
+
- Update README with usage examples from tests
|
|
165
|
+
- Create API documentation from request specs
|
|
166
|
+
|
|
167
|
+
## 10. Future Vision: Autonomous Testing
|
|
168
|
+
|
|
169
|
+
The ultimate goal - AI agents that:
|
|
170
|
+
1. Watch you code
|
|
171
|
+
2. Understand your intent
|
|
172
|
+
3. Write appropriate tests
|
|
173
|
+
4. Run those tests via Infinity Test
|
|
174
|
+
5. Suggest improvements based on results
|
|
175
|
+
6. Iterate until code is solid
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Getting Started
|
|
180
|
+
|
|
181
|
+
To integrate Infinity Test with Claude Code today:
|
|
182
|
+
|
|
183
|
+
1. Install both tools:
|
|
184
|
+
```bash
|
|
185
|
+
gem install infinity_test
|
|
186
|
+
npm install -g @anthropic/claude-code
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
2. Start Infinity Test in watch mode:
|
|
190
|
+
```bash
|
|
191
|
+
infinity_test
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
3. Use Claude Code in another terminal:
|
|
195
|
+
```bash
|
|
196
|
+
claude "Help me write a new feature for my Rails app"
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
4. Watch the magic happen!
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
*This document is part of the Infinity Test project. Contributions and ideas welcome!*
|
data/Gemfile
CHANGED
|
@@ -1,17 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
gem 'notifiers', github: 'tomas-stefano/notifiers', branch: 'main'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
gem 'notifiers', '1.1.0'
|
|
7
|
-
|
|
8
|
-
group :test do
|
|
9
|
-
gem 'rspec', ">= 2.1.0"
|
|
10
|
-
gem 'cucumber', '0.9.0'
|
|
11
|
-
gem 'aruba', '0.2.1'
|
|
12
|
-
gem 'fuubar'
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
group :development do
|
|
16
|
-
gem 'jeweler'
|
|
17
|
-
end
|
|
5
|
+
gemspec
|
data/History.markdown
CHANGED
|
@@ -1,4 +1,86 @@
|
|
|
1
|
+
v2.0.0
|
|
2
|
+
======
|
|
3
|
+
|
|
4
|
+
This is a major release with a complete rewrite of the library, modernization of dependencies, and many new features.
|
|
5
|
+
|
|
6
|
+
Breaking Changes
|
|
7
|
+
----------------
|
|
8
|
+
- Configuration file renamed from `.infinity_test` to `INFINITY_TEST`
|
|
9
|
+
- Removed Bacon test framework support
|
|
10
|
+
- Removed Growl notification support (use notifiers gem instead)
|
|
11
|
+
- The #before_env method in the configuration file was removed
|
|
12
|
+
- The #before_run and #after_run methods were removed. Use before(:all) and after(:all) instead
|
|
13
|
+
|
|
14
|
+
New Features
|
|
15
|
+
------------
|
|
16
|
+
- **Modern Notifications**: Integration with the notifiers gem supporting:
|
|
17
|
+
- osascript (macOS built-in)
|
|
18
|
+
- terminal_notifier (macOS)
|
|
19
|
+
- notify_send (Linux libnotify)
|
|
20
|
+
- dunstify (Linux dunst)
|
|
21
|
+
- auto_discover (automatic detection)
|
|
22
|
+
- New CLI options: `--notifications` and `--mode` for image themes
|
|
23
|
+
|
|
24
|
+
- **Callbacks System**: Full callback support with before/after hooks
|
|
25
|
+
- `before(:all)` - Run before all tests
|
|
26
|
+
- `after(:all)` - Run after all tests
|
|
27
|
+
- `before(:each_ruby)` - Run before each Ruby version
|
|
28
|
+
- `after(:each_ruby)` - Run after each Ruby version
|
|
29
|
+
|
|
30
|
+
- **Multi-Ruby Support**:
|
|
31
|
+
- RVM strategy: Run tests across multiple Ruby versions with gemset support
|
|
32
|
+
- RbEnv strategy: Run tests with RBENV_VERSION environment variable
|
|
33
|
+
- RubyDefault strategy: Run on current Ruby version
|
|
34
|
+
|
|
35
|
+
- **Just Watch Mode**: `--just-watch` (-j) option to skip initial test run
|
|
36
|
+
- Useful for large applications where startup is slow
|
|
37
|
+
- Only watches for file changes and runs tests on change
|
|
38
|
+
|
|
39
|
+
- **Focus Mode**: `--focus` (-f) option for running specific tests
|
|
40
|
+
- `--focus failures` - Run only previously failed tests
|
|
41
|
+
- `--focus path/to/spec.rb` - Run only specified file
|
|
42
|
+
|
|
43
|
+
- **Framework Heuristics**:
|
|
44
|
+
- Rails: Watches models, controllers, helpers, mailers, jobs, lib
|
|
45
|
+
- Padrino: Similar to Rails with Padrino-specific paths
|
|
46
|
+
- Rubygems: Watches lib and test/spec directories
|
|
47
|
+
|
|
48
|
+
- **Auto Discovery Priority**: Smart prioritization when auto-discovering
|
|
49
|
+
- Strategies: RVM > RbEnv > RubyDefault
|
|
50
|
+
- Frameworks: Rails > Padrino > Rubygems
|
|
51
|
+
- Test Frameworks: RSpec > Test::Unit
|
|
52
|
+
|
|
53
|
+
- **Test Framework Improvements**:
|
|
54
|
+
- Complete Test::Unit/Minitest implementation with output parsing
|
|
55
|
+
- RSpec improvements: test_dir=, pending?, and .run? methods
|
|
56
|
+
|
|
57
|
+
- **Modern File Watching**:
|
|
58
|
+
- Listen gem (default) - Event-driven, uses native OS notifications
|
|
59
|
+
- Filewatcher gem - Polling-based, works everywhere including VMs/NFS
|
|
60
|
+
|
|
61
|
+
- **AI Integration Ideas**: Documentation for integrating with Claude Code and other AI tools
|
|
62
|
+
|
|
63
|
+
Bug Fixes
|
|
64
|
+
---------
|
|
65
|
+
- Fixed signal handler blocking issue in observer base
|
|
66
|
+
- Fixed ActiveSupport autoload issues
|
|
67
|
+
- Replaced deprecated stub with allow().to receive() in specs
|
|
68
|
+
|
|
69
|
+
Dependencies
|
|
70
|
+
------------
|
|
71
|
+
- Replaced watchr with listen and filewatcher observers
|
|
72
|
+
- Updated to modern notifiers gem (from GitHub main branch)
|
|
73
|
+
- Removed growl dependency
|
|
74
|
+
|
|
75
|
+
Internal Changes
|
|
76
|
+
----------------
|
|
77
|
+
- Rewrite of the entire library with separated responsibilities
|
|
78
|
+
- Shared examples for creating custom strategies, frameworks, and observers
|
|
79
|
+
- Updated all specs to modern RSpec syntax
|
|
80
|
+
- Comprehensive test coverage (250+ examples)
|
|
81
|
+
|
|
1
82
|
v1.0.1
|
|
83
|
+
======
|
|
2
84
|
|
|
3
85
|
- Fix a serious bug for Test::unit users (just run one test file instead of all tests)
|
|
4
86
|
|
data/INFINITY_TEST
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#InfinityTest.setup do |config|
|
|
2
|
+
# config.strategy = :ruby_default
|
|
3
|
+
# config.test_framework = :rspec
|
|
4
|
+
#end
|
|
5
|
+
|
|
6
|
+
# infinity_test do
|
|
7
|
+
|
|
8
|
+
# use :rubies => ['1.9.2', 'jruby', 'ree', 'rbx'], :gemset => 'infinity_test', :test_framework => :rspec
|
|
9
|
+
|
|
10
|
+
# Maybe with block is better ...
|
|
11
|
+
#
|
|
12
|
+
# use do
|
|
13
|
+
# rubies = %w(1.8.7 1.9.2 jruby ree rbx)
|
|
14
|
+
# gemset = 'infinity_test'
|
|
15
|
+
# test_framework = :rspec
|
|
16
|
+
# application_framework = :rails
|
|
17
|
+
# end
|
|
18
|
+
|
|
19
|
+
# heuristics do
|
|
20
|
+
# add '^lib/infinity_test/dependencies.rb' do |file|
|
|
21
|
+
# run :all => :files
|
|
22
|
+
# end
|
|
23
|
+
# end
|
|
24
|
+
|
|
25
|
+
# after(:all) do
|
|
26
|
+
# system('rake clean_without_verbose')
|
|
27
|
+
# end
|
|
28
|
+
|
|
29
|
+
# heuristics do
|
|
30
|
+
#
|
|
31
|
+
# add :dir => 'app/models' do |file|
|
|
32
|
+
# run_test :for => file
|
|
33
|
+
# end
|
|
34
|
+
#
|
|
35
|
+
# add %r%^(test|spec)/fixtures/(.*).yml$% do |file|
|
|
36
|
+
# run_test :for => file, :in_dir => "test"
|
|
37
|
+
# end
|
|
38
|
+
#
|
|
39
|
+
# application_library.watch :dir => 'app/models' do |file|
|
|
40
|
+
# run :test => "spec/models/"
|
|
41
|
+
# end
|
|
42
|
+
#
|
|
43
|
+
# watch(%r%^(test|spec)/fixtures/(.*).yml$%) do |m|
|
|
44
|
+
# "test/test_#{m[1]}.rb"
|
|
45
|
+
# end
|
|
46
|
+
# end
|
|
47
|
+
|
|
48
|
+
# end
|
data/LICENSE.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
The MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2010 Tomás D'Stefano
|
|
3
|
+
Copyright (c) 2010-2014 Tomás D'Stefano
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
6
|
a copy of this software and associated documentation files (the
|
|
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
|
19
19
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
20
20
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
21
21
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
22
|
-
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|