5353
5454# Initialize flags
5555DOCS_ONLY=true
56- RUBY_CHANGED=false
57- JS_CHANGED=false
58- GENERATORS_CHANGED=false
59- WORKFLOWS_CHANGED=false
6056LINT_CONFIG_CHANGED=false
61- SPEC_DUMMY_CHANGED=false
57+ PRO_LINT_CONFIG_CHANGED=false
58+ RUBY_CHANGED=false
6259RSPEC_CHANGED=false
63- PRO_CHANGED=false
60+ SPEC_DUMMY_CHANGED=false
61+ JS_CHANGED=false
62+ GENERATORS_CHANGED=false # needs to be duplicated to pro
63+ PRO_RUBY_CHANGED=false
64+ PRO_RSPEC_CHANGED=false
65+ PRO_JS_CHANGED=false
6466PRO_DUMMY_CHANGED=false
6567
6668# Analyze each changed file
@@ -72,69 +74,69 @@ while IFS= read -r file; do
7274 ;;
7375
7476 # Ruby source code
75- lib/* .rb|lib/** /* .rb)
77+ lib/* .rb|lib/** /* .rb|Gemfile|Gemfile.lock|rakelib/run_rspec.rake|rakelib/node_package.rake|rakelib/dummy_apps.rake )
7678 DOCS_ONLY=false
7779 RUBY_CHANGED=true
7880 ;;
7981
80- # Ruby specs (except dummy app)
81- spec/react_on_rails/* |spec/react_on_rails/** /* )
82+ # Ruby gem-specific specs
83+ spec/react_on_rails/* |spec/react_on_rails/** /* |.github/workflows/gem-tests.yml )
8284 DOCS_ONLY=false
83- RUBY_CHANGED=true
8485 RSPEC_CHANGED=true
8586 ;;
8687
8788 # Generators
88- lib/generators/* |lib/generators/** /* |rakelib/example_type.rb|rakelib/example_config.yml|rakelib/examples .rake)
89+ lib/generators/* |lib/generators/** /* |rakelib/example_type.rb|rakelib/example_config.yml|rakelib/shakapacker_examples .rake|.github/workflows/examples.yml )
8990 DOCS_ONLY=false
9091 GENERATORS_CHANGED=true
9192 ;;
9293
9394 # JavaScript/TypeScript source
94- packages/react-on-rails/src/* |packages/react-on-rails/src/** /* |node_package/src/ * |node_package/src/ ** / * )
95+ package.json|yarn.lock| packages/react-on-rails/src/* |packages/react-on-rails/src/** /* |.github/workflows/package-js-tests.yml )
9596 DOCS_ONLY=false
9697 JS_CHANGED=true
9798 ;;
9899
99100 # Dummy app
100- spec/dummy/* )
101+ spec/dummy/* |spec/dummy/ ** / * |.github/workflows/integration-tests.yml )
101102 DOCS_ONLY=false
102103 SPEC_DUMMY_CHANGED=true
103104 ;;
104105
105- # React on Rails Pro package / dummy app
106- react_on_rails_pro/spec/dummy /* )
106+ # React on Rails Pro source code
107+ react_on_rails_pro/lib/ * |react_on_rails_pro/lib/ ** /* )
107108 DOCS_ONLY=false
108- PRO_CHANGED=true
109- PRO_DUMMY_CHANGED=true
109+ PRO_RUBY_CHANGED=true
110110 ;;
111- react_on_rails_pro/* |react_on_rails_pro/** /* )
111+
112+ # JavaScript/TypeScript Pro source
113+ packages/react-on-rails-pro/src/* |packages/react-on-rails-pro/src/** /* )
112114 DOCS_ONLY=false
113- PRO_CHANGED =true
115+ PRO_JS_CHANGED =true
114116 ;;
115117
116- # GitHub workflows
117- .github/workflows/ * |rakelib/ * )
118+ # Ruby Pro gem-specific specs
119+ react_on_rails_pro/spec/react_on_rails/ * |react_on_rails_pro/spec/react_on_rails/ ** / * |.github/workflows/pro-gem-tests.yml )
118120 DOCS_ONLY=false
119- WORKFLOWS_CHANGED =true
121+ PRO_RSPEC_CHANGED =true
120122 ;;
121123
122- # Lint/format configuration
123- .rubocop.yml|.eslintrc * |.prettierrc * |tsconfig.json|.editorconfig )
124+ # React on Rails Pro package / dummy app
125+ react_on_rails_pro/spec/dummy/ * |react_on_rails_pro/spec/dummy/ ** / * |.github/workflows/pro-integration-tests.yml )
124126 DOCS_ONLY=false
125- LINT_CONFIG_CHANGED =true
127+ PRO_DUMMY_CHANGED =true
126128 ;;
127129
128- # Gemfile, package.json, lockfiles
129- Gemfile|Gemfile.lock|package.json|yarn.lock|spec/dummy/Gemfile|spec/dummy/Gemfile.lock|spec/dummy/package .json|spec/dummy/yarn.lock )
130+ # Lint/format configuration
131+ .rubocop.yml|.eslintrc * |.prettierrc * |tsconfig .json|.editorconfig|.github/workflows/lint-js-and-ruby.yml )
130132 DOCS_ONLY=false
131- RUBY_CHANGED=true
132- JS_CHANGED=true
133+ LINT_CONFIG_CHANGED=true
133134 ;;
134135
135- # Anything else is considered a code change
136- * )
136+ # Lint/format configuration
137+ react_on_rails_pro/.rubocop.yml|react_on_rails_pro/.eslintrc * |react_on_rails_pro/.prettierrc * |react_on_rails_pro/tsconfig.json|react_on_rails_pro/.editorconfig|.github/workflows/pro-lint.yml )
137138 DOCS_ONLY=false
139+ PRO_LINT_CONFIG_CHANGED=true
138140 ;;
139141 esac
140142done <<< " $CHANGED_FILES"
@@ -154,15 +156,19 @@ if [ "$DOCS_ONLY" = true ]; then
154156 exit 0
155157fi
156158
159+ # TODO: need to add node-renderer tests
157160echo " Changed file categories:"
158161[ " $RUBY_CHANGED " = true ] && echo -e " ${YELLOW} • Ruby source code${NC} "
159162[ " $JS_CHANGED " = true ] && echo -e " ${YELLOW} • JavaScript/TypeScript code${NC} "
160- [ " $GENERATORS_CHANGED " = true ] && echo -e " ${YELLOW} • Generators${NC} "
161163[ " $RSPEC_CHANGED " = true ] && echo -e " ${YELLOW} • RSpec tests${NC} "
162164[ " $SPEC_DUMMY_CHANGED " = true ] && echo -e " ${YELLOW} • Dummy app${NC} "
163- [ " $PRO_CHANGED " = true ] && echo -e " ${YELLOW} • React on Rails Pro${NC} "
164- [ " $WORKFLOWS_CHANGED " = true ] && echo -e " ${YELLOW} • GitHub workflows${NC} "
165+ [ " $GENERATORS_CHANGED " = true ] && echo -e " ${YELLOW} • Generators${NC} "
166+ [ " $PRO_JS_CHANGED " = true ] && echo -e " ${YELLOW} • React on Rails Pro JavaScript/TypeScript${NC} "
167+ [ " $PRO_RSPEC_CHANGED " = true ] && echo -e " ${YELLOW} • React on Rails Pro RSpec tests${NC} "
168+ [ " $PRO_RUBY_CHANGED " = true ] && echo -e " ${YELLOW} • React on Rails Pro Ruby source code${NC} "
169+ [ " $PRO_DUMMY_CHANGED " = true ] && echo -e " ${YELLOW} • React on Rails Pro Dummy app${NC} "
165170[ " $LINT_CONFIG_CHANGED " = true ] && echo -e " ${YELLOW} • Lint/format configuration${NC} "
171+ [ " $PRO_LINT_CONFIG_CHANGED " = true ] && echo -e " ${YELLOW} • React on Rails Pro lint/format configuration${NC} "
166172
167173echo " "
168174echo " Recommended CI jobs:"
@@ -175,8 +181,9 @@ RUN_DUMMY_TESTS=false
175181RUN_GENERATORS=false
176182RUN_PRO_LINT=false
177183RUN_PRO_TESTS=false
184+ RUN_PRO_DUMMY_TESTS=false
178185
179- if [ " $LINT_CONFIG_CHANGED " = true ] || [ " $RUBY_CHANGED " = true ] || [ " $JS_CHANGED " = true ] || [ " $WORKFLOWS_CHANGED " = true ]; then
186+ if [ " $LINT_CONFIG_CHANGED " = true ] || [ " $RUBY_CHANGED " = true ] || [ " $JS_CHANGED " = true ] || [ " $SPEC_DUMMY_CHANGED " = true ]; then
180187 RUN_LINT=true
181188fi
182189
@@ -196,22 +203,26 @@ if [ "$GENERATORS_CHANGED" = true ]; then
196203 RUN_GENERATORS=true
197204fi
198205
199- if [ " $PRO_CHANGED " = true ]; then
206+ if [ " $PRO_LINT_CONFIG_CHANGED " = true ] || [ " $PRO_RUBY_CHANGED " = true ] || [ " $PRO_JS_CHANGED " = true ] || [ " $PRO_DUMMY_CHANGED " = true ]; then
200207 RUN_PRO_LINT=true
201- RUN_PRO_TESTS=true
202208fi
203209
204- if [ " $PRO_DUMMY_CHANGED " = true ]; then
210+ if [ " $PRO_RUBY_CHANGED " = true ] || [ " $PRO_RSPEC_CHANGED " = true ] || [ " $PRO_JS_CHANGED " = true ]; then
205211 RUN_PRO_TESTS=true
206212fi
207213
214+ if [ " $PRO_DUMMY_CHANGED " = true ] || [ " $PRO_RUBY_CHANGED " = true ] || [ " $PRO_JS_CHANGED " = true ]; then
215+ RUN_PRO_DUMMY_TESTS=true
216+ fi
217+
208218[ " $RUN_LINT " = true ] && echo " ✓ Lint (Ruby + JS)"
209219[ " $RUN_RUBY_TESTS " = true ] && echo " ✓ RSpec gem tests"
210220[ " $RUN_JS_TESTS " = true ] && echo " ✓ JS unit tests"
211221[ " $RUN_DUMMY_TESTS " = true ] && echo " ✓ Dummy app integration tests"
212222[ " $RUN_GENERATORS " = true ] && echo " ✓ Generator tests"
213- [ " $RUN_PRO_LINT " = true ] && echo " ✓ React on Rails Pro lint"
214- [ " $RUN_PRO_TESTS " = true ] && echo " ✓ React on Rails Pro tests"
223+ [ " $RUN_PRO_LINT " = true ] && echo " ✓ React on Rails Pro Lint (Ruby + JS)"
224+ [ " $RUN_PRO_TESTS " = true ] && echo " ✓ React on Rails Pro RSpec unit tests (Ruby + JS)"
225+ [ " $RUN_PRO_DUMMY_TESTS " = true ] && echo " ✓ React on Rails Pro Dummy app integration tests"
215226
216227# Export as GitHub Actions outputs if running in CI
217228if [ -n " ${GITHUB_OUTPUT:- } " ]; then
@@ -224,6 +235,7 @@ if [ -n "${GITHUB_OUTPUT:-}" ]; then
224235 echo " run_generators=$RUN_GENERATORS "
225236 echo " run_pro_lint=$RUN_PRO_LINT "
226237 echo " run_pro_tests=$RUN_PRO_TESTS "
238+ echo " run_pro_dummy_tests=$RUN_PRO_DUMMY_TESTS "
227239 } >> " $GITHUB_OUTPUT "
228240fi
229241
@@ -239,6 +251,7 @@ if [ "${CI_JSON_OUTPUT:-}" = "1" ]; then
239251 "run_generators": $RUN_GENERATORS ,
240252 "run_pro_lint": $RUN_PRO_LINT ,
241253 "run_pro_tests": $RUN_PRO_TESTS
254+ "run_pro_dummy_tests": $RUN_PRO_DUMMY_TESTS
242255}
243256EOF
244257fi
0 commit comments