canvas-lms/gems
Mysti Lilla dbd67ed5e5 Stop stomping on specs just after midnight
flag=none

Test plan
- Run your specs over (UTC) midnight
  and never see failures again :)

Change-Id: I254c28a5bfef24a4c4d66796ac58ce0118618f6d
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/330176
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Eric Saupe <eric.saupe@instructure.com>
Reviewed-by: Charley Kline <ckline@instructure.com>
QA-Review: Eric Saupe <eric.saupe@instructure.com>
Product-Review: Ravi Koll <ravi.koll@instructure.com>
2024-01-08 22:03:25 +00:00
..
activesupport-suspend_callbacks bundle update debug 2023-12-18 20:25:43 +00:00
acts_as_list bundle update sqlite3 2023-12-06 14:21:11 +00:00
adheres_to_policy bundle update rubocop-performance, rubocop-rails 2023-12-18 20:28:02 +00:00
attachment_fu bundle update rubocop-performance, rubocop-rails 2023-12-18 20:28:02 +00:00
autoextend bundle update debug 2023-12-18 20:25:43 +00:00
bookmarked_collection bundle update debug 2023-12-18 20:25:43 +00:00
broadcast_policy bundle update debug 2023-12-18 20:25:43 +00:00
canvas_breach_mitigation bundle update --bundler 2023-09-29 15:42:35 +00:00
canvas_cache bundle update redis-client 2024-01-05 21:24:42 +00:00
canvas_cassandra bundle update rubocop-performance, rubocop-rails 2023-12-18 20:28:02 +00:00
canvas_color bundle update rake 2023-11-13 21:37:43 +00:00
canvas_crummy bundle update rubocop-performance, rubocop-rails 2023-12-18 20:28:02 +00:00
canvas_dynamodb bundle update aws-sdk 2023-12-18 20:25:28 +00:00
canvas_errors bundle update debug_inspector 2023-12-18 20:26:16 +00:00
canvas_ext bundle update rake 2023-11-13 21:37:43 +00:00
canvas_http bundle update redis-client 2024-01-05 21:24:42 +00:00
canvas_kaltura bundle update redis-client 2024-01-05 21:24:42 +00:00
canvas_mimetype_fu bundle update rake 2023-11-13 21:37:43 +00:00
canvas_panda_pub bundle update redis-client 2024-01-05 21:24:42 +00:00
canvas_partman bundle update rubocop-performance, rubocop-rails 2023-12-18 20:28:02 +00:00
canvas_quiz_statistics bundle update debug 2023-12-18 20:25:43 +00:00
canvas_sanitize allow width/height on source tags 2023-12-20 14:58:28 +00:00
canvas_security bundle update redis-client 2024-01-05 21:24:42 +00:00
canvas_slug bundle update rake 2023-11-13 21:37:43 +00:00
canvas_sort bundle update rake 2023-11-13 21:37:43 +00:00
canvas_stringex bundle update sqlite3 2023-12-06 14:21:11 +00:00
canvas_text_helper bundle update rake 2023-11-13 21:37:43 +00:00
canvas_time Stop stomping on specs just after midnight 2024-01-08 22:03:25 +00:00
canvas_unzip bundle update rake 2023-11-13 21:37:43 +00:00
config_file bundle update debug 2023-12-18 20:25:43 +00:00
csv_diff bundle update sqlite3 2023-12-06 14:21:11 +00:00
diigo bundle update nokogiri 2023-11-27 17:44:16 +00:00
dr_diff bundle update debug 2023-12-18 20:25:43 +00:00
dynamic_settings bundle update debug 2023-12-18 20:25:43 +00:00
event_stream bundle update json 2023-12-18 15:11:44 +00:00
google_drive bundle update hashdiff 2023-12-18 20:26:36 +00:00
html_text_helper bundle update json_schemer 2023-11-27 17:57:12 +00:00
i18n_extraction bundle update rubocop 2023-12-06 14:25:02 +00:00
i18n_tasks bundle update nokogiri 2023-11-27 17:44:16 +00:00
incoming_mail_processor bundle update rubocop-performance, rubocop-rails 2023-12-18 20:28:02 +00:00
json_token bundle update json 2023-12-18 15:11:44 +00:00
legacy_multipart bundle update mime-types-data 2023-12-18 15:17:16 +00:00
live_events bundle update debug 2023-12-18 20:25:43 +00:00
lti-advantage bundle update faraday 2023-11-27 17:56:07 +00:00
lti_outbound send student id for LTI 1.3 student_context_card 2023-12-21 15:34:27 +00:00
paginated_collection bundle update sqlite3 2023-12-06 14:21:11 +00:00
plugins bundle update rubocop-performance, rubocop-rails 2023-12-18 20:28:02 +00:00
request_context bundle update redis-client 2024-01-05 21:24:42 +00:00
rubocop-canvas bundle update rubocop-performance, rubocop-rails 2023-12-18 20:28:02 +00:00
stringify_ids bundle update --bundler 2023-09-29 15:42:35 +00:00
tatl_tael bundle update --bundler 2023-09-29 15:42:35 +00:00
turnitin_api bundle update hashdiff 2023-12-18 20:26:36 +00:00
twitter bundle update debug 2023-12-18 20:25:43 +00:00
utf8_cleaner bundle update rake 2023-11-13 21:37:43 +00:00
workflow bundle update rubocop-performance, rubocop-rails 2023-12-18 20:28:02 +00:00
README.md Remove auditor cassandra support 2023-04-03 15:40:22 +00:00
test_all_gems.sh remove broken vendored gems html reports 2021-06-15 16:53:17 +00:00

README.md

Gems

This folder is a place to extract modular functionality from canvas. Canvas's Gemfile arrangement is enabled to read gems from this path locally without installing from a remote source. This is valuable for a few reasons:

  • it prevents circular dependencies (bundler won't allow it)
  • modularized code cannot bind to specific domain concepts on canvas models
  • gems can have their specs run independently, without needing to load all of canvas, saving iteration time
  • it allows for eventual build optimization via only running specs for the transitive closure of parents depending on a gem where a change is.

There are some tradeoffs:

  • spreads canvas over more subdirectories, giving some mental overhad to traversing the entire codebase.
  • modular tests necessarily don't test integration with canvas concepts, so solid integration tests in the app are still a requirement.
  • total SERIALIZED build time goes up because each gem loads it's specs in a new process rather than all running within an already booted canvas process.

[TODO] eventually write more on whether we feel like those tradeoffs are good ones, and what the best practices are to leverage this pattern for max-gain/min-pain.

Testing

To test all the gems:

cd gems
./test_all_gems.sh

To test an individual gem

Run ./test.sh inside the gem's folder. This is basically the same as:

cd gems/google_drive
bundle
rspec