timecop-rspec 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 +7 -0
- checksums.yaml.gz.sig +0 -0
- data/.devcontainer/devcontainer.json +26 -0
- data/.env.local.example +3 -0
- data/.envrc +41 -0
- data/.github/FUNDING.yml +13 -0
- data/.github/dependabot.yml +12 -0
- data/.github/workflows/ancient.yml +77 -0
- data/.github/workflows/auto-assign.yml +21 -0
- data/.github/workflows/codeql-analysis.yml +70 -0
- data/.github/workflows/coverage.yml +126 -0
- data/.github/workflows/current.yml +85 -0
- data/.github/workflows/dependency-review.yml +20 -0
- data/.github/workflows/deps_locked.yml +75 -0
- data/.github/workflows/deps_unlocked.yml +84 -0
- data/.github/workflows/discord-notifier.yml +38 -0
- data/.github/workflows/heads.yml +84 -0
- data/.github/workflows/jruby.yml +75 -0
- data/.github/workflows/legacy.yml +67 -0
- data/.github/workflows/style.yml +64 -0
- data/.github/workflows/supported.yml +82 -0
- data/.github/workflows/truffle.yml +75 -0
- data/.github/workflows/unsupported.yml +75 -0
- data/.gitignore +45 -0
- data/.gitlab-ci.yml +44 -0
- data/.idea/.gitignore +8 -0
- data/.idea/GitLink.xml +6 -0
- data/.idea/misc.xml +4 -0
- data/.idea/modules.xml +8 -0
- data/.idea/timecop-rspec.iml +120 -0
- data/.idea/vcs.xml +6 -0
- data/.junie/TASK_NOTE.md +1 -0
- data/.junie/guidelines.md +139 -0
- data/.qlty/qlty.toml +79 -0
- data/.rspec +8 -0
- data/.rubocop.yml +15 -0
- data/.rubocop_gradual.lock +76 -0
- data/.simplecov +11 -0
- data/.tool-versions +1 -0
- data/.yard_gfm_support.rb +22 -0
- data/.yardopts +11 -0
- data/Appraisal.root.gemfile +12 -0
- data/Appraisals +104 -0
- data/CHANGELOG.md +27 -0
- data/CITATION.cff +20 -0
- data/CNAME +1 -0
- data/CODE_OF_CONDUCT.md +134 -0
- data/CONTRIBUTING.md +145 -0
- data/Gemfile +38 -0
- data/Gemfile.lock +315 -0
- data/LICENSE.txt +22 -0
- data/README.md +563 -0
- data/REEK +0 -0
- data/RUBOCOP.md +71 -0
- data/Rakefile +287 -0
- data/SECURITY.md +21 -0
- data/bin/appraisal +16 -0
- data/bin/bundle-audit +16 -0
- data/bin/bundler-audit +16 -0
- data/bin/code_climate_reek +16 -0
- data/bin/coderay +16 -0
- data/bin/console +38 -0
- data/bin/erb +16 -0
- data/bin/gem_checksums +16 -0
- data/bin/htmldiff +16 -0
- data/bin/irb +16 -0
- data/bin/kramdown +16 -0
- data/bin/ldiff +16 -0
- data/bin/nokogiri +16 -0
- data/bin/pry +16 -0
- data/bin/racc +16 -0
- data/bin/rake +16 -0
- data/bin/rdbg +16 -0
- data/bin/rdoc +16 -0
- data/bin/reek +16 -0
- data/bin/ri +16 -0
- data/bin/rspec +16 -0
- data/bin/rubocop +16 -0
- data/bin/rubocop-gradual +16 -0
- data/bin/ruby-parse +16 -0
- data/bin/ruby-rewrite +16 -0
- data/bin/setup +33 -0
- data/bin/standardrb +16 -0
- data/bin/thor +16 -0
- data/bin/yard +16 -0
- data/bin/yard-junk +16 -0
- data/bin/yardoc +16 -0
- data/bin/yri +16 -0
- data/certs/pboling.pem +27 -0
- data/checksums/timecop-rspec-1.0.0.gem.sha256 +1 -0
- data/checksums/timecop-rspec-1.0.0.gem.sha512 +1 -0
- data/docs/Timecop/Rspec/ExampleDecorator.html +626 -0
- data/docs/Timecop/Rspec/SequentialTimeMachine.html +338 -0
- data/docs/Timecop/Rspec/TimeMachine.html +357 -0
- data/docs/Timecop/Rspec/TravelLog.html +440 -0
- data/docs/Timecop/Rspec/Traveler.html +353 -0
- data/docs/Timecop/Rspec/Version.html +154 -0
- data/docs/Timecop/Rspec.html +474 -0
- data/docs/Timecop.html +149 -0
- data/docs/_index.html +218 -0
- data/docs/class_list.html +54 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +503 -0
- data/docs/file.CHANGELOG.html +99 -0
- data/docs/file.CITATION.html +92 -0
- data/docs/file.CODE_OF_CONDUCT.html +201 -0
- data/docs/file.CONTRIBUTING.html +220 -0
- data/docs/file.LICENSE.html +70 -0
- data/docs/file.README.html +523 -0
- data/docs/file.REEK.html +71 -0
- data/docs/file.RUBOCOP.html +171 -0
- data/docs/file.SECURITY.html +101 -0
- data/docs/file.rspec.html +109 -0
- data/docs/file.timecop.html +72 -0
- data/docs/file_list.html +109 -0
- data/docs/frames.html +22 -0
- data/docs/index.html +523 -0
- data/docs/js/app.js +344 -0
- data/docs/js/full_list.js +242 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +198 -0
- data/docs/top-level-namespace.html +110 -0
- data/gemfiles/audit.gemfile +10 -0
- data/gemfiles/coverage.gemfile +10 -0
- data/gemfiles/current.gemfile +8 -0
- data/gemfiles/deps_unlocked.gemfile +13 -0
- data/gemfiles/head.gemfile +9 -0
- data/gemfiles/modular/audit.gemfile +5 -0
- data/gemfiles/modular/coverage.gemfile +6 -0
- data/gemfiles/modular/documentation.gemfile +11 -0
- data/gemfiles/modular/style.gemfile +14 -0
- data/gemfiles/ruby_2_3.gemfile +5 -0
- data/gemfiles/ruby_2_4.gemfile +5 -0
- data/gemfiles/ruby_2_5.gemfile +5 -0
- data/gemfiles/ruby_2_6.gemfile +8 -0
- data/gemfiles/ruby_2_7.gemfile +8 -0
- data/gemfiles/ruby_3_0.gemfile +8 -0
- data/gemfiles/ruby_3_1.gemfile +8 -0
- data/gemfiles/ruby_3_2.gemfile +8 -0
- data/gemfiles/ruby_3_3.gemfile +8 -0
- data/gemfiles/style.gemfile +10 -0
- data/lib/timecop/rspec/example_decorator.rb +100 -0
- data/lib/timecop/rspec/sequential_time_machine.rb +80 -0
- data/lib/timecop/rspec/time_machine.rb +58 -0
- data/lib/timecop/rspec/travel_log.rb +103 -0
- data/lib/timecop/rspec/traveler.rb +68 -0
- data/lib/timecop/rspec/version.rb +37 -0
- data/lib/timecop/rspec.rb +78 -0
- data/sig/timecop/rspec.rbs +40 -0
- data/sig/timecop.rbs +2 -0
- data/timecop-rspec.gemspec +146 -0
- data.tar.gz.sig +2 -0
- metadata +434 -0
- metadata.gz.sig +0 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b0b99b69676557af87435fb8012c3feb93de4352513ff78599b70827258d2578
|
4
|
+
data.tar.gz: 5bd14a0372b799d03e5abb3036bb8e640b8c7fde4b18799916eea7c448ef940c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fcfd7f24ad4936b9fa66c7d872a3a9aab716047f7b6b645a9459ee1c29ea2078173bfb6569e77107f084a76441765bb2b2c881c0edbe45fb0002c715373015a5
|
7
|
+
data.tar.gz: 7c7cb35639fb218509c069eadcf073fc3730295d6009f996b0808a3afaea905957f356150655288cd753af46c87cee4513529ff735939d99a36138f22df8c8cd
|
checksums.yaml.gz.sig
ADDED
Binary file
|
@@ -0,0 +1,26 @@
|
|
1
|
+
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
|
2
|
+
// README at: https://github.com/devcontainers/templates/tree/main/src/ruby
|
3
|
+
{
|
4
|
+
"name": "Ruby",
|
5
|
+
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
|
6
|
+
"image": "mcr.microsoft.com/devcontainers/ruby:1-3-bookworm",
|
7
|
+
|
8
|
+
// Features to add to the dev container. More info: https://containers.dev/features.
|
9
|
+
// "features": {},
|
10
|
+
|
11
|
+
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
12
|
+
// "forwardPorts": [],
|
13
|
+
|
14
|
+
// Use 'postCreateCommand' to run commands after the container is created.
|
15
|
+
// "postCreateCommand": "ruby --version",
|
16
|
+
|
17
|
+
// Configure tool-specific properties.
|
18
|
+
"customizations" : {
|
19
|
+
"jetbrains" : {
|
20
|
+
"backend" : "RubyMine"
|
21
|
+
}
|
22
|
+
},
|
23
|
+
|
24
|
+
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
|
25
|
+
// "remoteUser": "root"
|
26
|
+
}
|
data/.env.local.example
ADDED
data/.envrc
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# Run any command in this library's bin/ without the bin/ prefix!
|
2
|
+
PATH_add bin
|
3
|
+
|
4
|
+
# Only add things to this file that should be shared with the team.
|
5
|
+
|
6
|
+
# **dotenv** (See end of file for .env.local integration)
|
7
|
+
# .env would override anything in this file, if enabled.
|
8
|
+
# .env is a DOCKER standard, and if we use it, it would be in deployed, or DOCKER, environments.
|
9
|
+
# Override and customize anything below in your own .env.local
|
10
|
+
# If you are using dotenv and not direnv,
|
11
|
+
# copy the following `export` statements to your own .env file.
|
12
|
+
|
13
|
+
### General Ruby ###
|
14
|
+
# Turn off Ruby Warnings about deprecated code
|
15
|
+
# export RUBYOPT="-W0"
|
16
|
+
|
17
|
+
### External Testing Controls
|
18
|
+
export K_SOUP_COV_DO=true # Means you want code coverage
|
19
|
+
# Available formats are html, xml, rcov, lcov, json, tty
|
20
|
+
export K_SOUP_COV_COMMAND_NAME="Test Coverage"
|
21
|
+
export K_SOUP_COV_FORMATTERS="html,xml,rcov,lcov,json,tty"
|
22
|
+
export K_SOUP_COV_MIN_BRANCH=92 # Means you want to enforce X% branch coverage
|
23
|
+
export K_SOUP_COV_MIN_LINE=100 # Means you want to enforce X% line coverage
|
24
|
+
export K_SOUP_COV_MIN_HARD=true # Means you want the build to fail if the coverage thresholds are not met
|
25
|
+
export K_SOUP_COV_MULTI_FORMATTERS=true
|
26
|
+
export K_SOUP_COV_OPEN_BIN= # Means don't try to open coverage results in browser
|
27
|
+
export MAX_ROWS=1 # Setting for simplecov-console gem for tty output, limits to the worst N rows of bad coverage
|
28
|
+
|
29
|
+
# Internal Debugging Controls
|
30
|
+
export DEBUG=false # do not allow byebug statements (override in .env.local)
|
31
|
+
export FLOSS_FUNDING_DEBUG=false # extra logging to help diagnose issues (override in .env.local)
|
32
|
+
export AUTOGEN_FIXTURE_CLEANUP=false # autogenerated gem fixture cleanup after every RSpec run
|
33
|
+
export FLOSS_CFG_FUNDING_LOGFILE=tmp/log/debug.log
|
34
|
+
|
35
|
+
# .env would override anything in this file, if `dotenv` is uncommented below.
|
36
|
+
# .env is a DOCKER standard, and if we use it, it would be in deployed, or DOCKER, environments,
|
37
|
+
# and that is why we generally want to leave it commented out.
|
38
|
+
# dotenv
|
39
|
+
|
40
|
+
# .env.local will override anything in this file.
|
41
|
+
dotenv_if_exists .env.local
|
data/.github/FUNDING.yml
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# These are supported funding model platforms
|
2
|
+
|
3
|
+
buy_me_a_coffee: pboling
|
4
|
+
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
5
|
+
github: [pboling] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
6
|
+
issuehunt: pboling # Replace with a single IssueHunt username
|
7
|
+
ko_fi: pboling # Replace with a single Ko-fi username
|
8
|
+
liberapay: pboling # Replace with a single Liberapay username
|
9
|
+
open_collective: # Replace with a single Open Collective username
|
10
|
+
patreon: galtzo # Replace with a single Patreon username
|
11
|
+
polar: pboling
|
12
|
+
thanks_dev: u/gh/pboling
|
13
|
+
tidelift: rubygems/timecop-rspec # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
@@ -0,0 +1,77 @@
|
|
1
|
+
name: MRI 2.3, 2.4, 2.5 (EOL)
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- 'main'
|
7
|
+
tags:
|
8
|
+
- '!*' # Do not execute on tags
|
9
|
+
pull_request:
|
10
|
+
branches:
|
11
|
+
- '*'
|
12
|
+
# Allow manually triggering the workflow.
|
13
|
+
workflow_dispatch:
|
14
|
+
|
15
|
+
# Cancels all previous workflow runs for the same branch that have not yet completed.
|
16
|
+
concurrency:
|
17
|
+
# The concurrency group contains the workflow name and the branch name.
|
18
|
+
group: "${{ github.workflow }}-${{ github.ref }}"
|
19
|
+
cancel-in-progress: true
|
20
|
+
|
21
|
+
jobs:
|
22
|
+
test:
|
23
|
+
name: Specs ${{ matrix.ruby }} ${{ matrix.appraisal }}${{ matrix.name_extra || '' }}
|
24
|
+
if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
|
25
|
+
runs-on: ubuntu-22.04
|
26
|
+
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
27
|
+
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
|
28
|
+
BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
|
29
|
+
strategy:
|
30
|
+
fail-fast: false
|
31
|
+
matrix:
|
32
|
+
include:
|
33
|
+
# Ruby 2.3
|
34
|
+
- ruby: "ruby-2.3"
|
35
|
+
appraisal: "ruby-2-3"
|
36
|
+
exec_cmd: "rake test"
|
37
|
+
gemfile: "Appraisal.root"
|
38
|
+
rubygems: "3.3.27"
|
39
|
+
bundler: "2.3.27"
|
40
|
+
|
41
|
+
# Ruby 2.4
|
42
|
+
- ruby: "ruby-2.4"
|
43
|
+
appraisal: "ruby-2-4"
|
44
|
+
exec_cmd: "rake test"
|
45
|
+
gemfile: "Appraisal.root"
|
46
|
+
rubygems: "3.3.27"
|
47
|
+
bundler: "2.3.27"
|
48
|
+
|
49
|
+
# Ruby 2.5
|
50
|
+
- ruby: "ruby-2.5"
|
51
|
+
appraisal: "ruby-2-5"
|
52
|
+
exec_cmd: "rake test"
|
53
|
+
gemfile: "Appraisal.root"
|
54
|
+
rubygems: "3.3.27"
|
55
|
+
bundler: "2.3.27"
|
56
|
+
|
57
|
+
steps:
|
58
|
+
- name: Checkout
|
59
|
+
uses: actions/checkout@v5
|
60
|
+
|
61
|
+
- name: Setup Ruby & RubyGems
|
62
|
+
uses: ruby/setup-ruby@v1
|
63
|
+
with:
|
64
|
+
ruby-version: ${{ matrix.ruby }}
|
65
|
+
rubygems: ${{ matrix.rubygems }}
|
66
|
+
bundler: ${{ matrix.bundler }}
|
67
|
+
bundler-cache: false
|
68
|
+
|
69
|
+
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
70
|
+
# We need to do this first to get appraisal installed.
|
71
|
+
# NOTE: This does not use the main Gemfile at all.
|
72
|
+
- name: Install Root Appraisal
|
73
|
+
run: bundle
|
74
|
+
- name: Appraisal for ${{ matrix.appraisal }}
|
75
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle
|
76
|
+
- name: Tests for ${{ matrix.ruby }} via ${{ matrix.exec_cmd }}
|
77
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
name: Auto Assign
|
2
|
+
on:
|
3
|
+
issues:
|
4
|
+
types: [opened]
|
5
|
+
pull_request:
|
6
|
+
types: [opened]
|
7
|
+
jobs:
|
8
|
+
run:
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
permissions:
|
11
|
+
issues: write
|
12
|
+
pull-requests: write
|
13
|
+
steps:
|
14
|
+
- name: 'Auto-assign issue'
|
15
|
+
uses: pozil/auto-assign-issue@v2
|
16
|
+
with:
|
17
|
+
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
18
|
+
assignees: pboling
|
19
|
+
abortIfPreviousAssignees: true
|
20
|
+
allowSelfAssign: true
|
21
|
+
numOfAssignee: 1
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# For most projects, this workflow file will not need changing; you simply need
|
2
|
+
# to commit it to your repository.
|
3
|
+
#
|
4
|
+
# You may wish to alter this file to override the set of languages analyzed,
|
5
|
+
# or to provide custom queries or build logic.
|
6
|
+
#
|
7
|
+
# ******** NOTE ********
|
8
|
+
# We have attempted to detect the languages in your repository. Please check
|
9
|
+
# the `language` matrix defined below to confirm you have the correct set of
|
10
|
+
# supported CodeQL languages.
|
11
|
+
#
|
12
|
+
name: "CodeQL"
|
13
|
+
|
14
|
+
on:
|
15
|
+
push:
|
16
|
+
branches: [ main, "*-stable" ]
|
17
|
+
pull_request:
|
18
|
+
# The branches below must be a subset of the branches above
|
19
|
+
branches: [ main, "*-stable" ]
|
20
|
+
schedule:
|
21
|
+
- cron: '35 1 * * 5'
|
22
|
+
|
23
|
+
jobs:
|
24
|
+
analyze:
|
25
|
+
name: Analyze
|
26
|
+
runs-on: ubuntu-latest
|
27
|
+
permissions:
|
28
|
+
actions: read
|
29
|
+
contents: read
|
30
|
+
security-events: write
|
31
|
+
|
32
|
+
strategy:
|
33
|
+
fail-fast: false
|
34
|
+
matrix:
|
35
|
+
language: [ 'ruby' ]
|
36
|
+
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
37
|
+
# Learn more about CodeQL language support at https://git.io/codeql-language-support
|
38
|
+
|
39
|
+
steps:
|
40
|
+
- name: Checkout repository
|
41
|
+
uses: actions/checkout@v5
|
42
|
+
|
43
|
+
# Initializes the CodeQL tools for scanning.
|
44
|
+
- name: Initialize CodeQL
|
45
|
+
uses: github/codeql-action/init@v3
|
46
|
+
with:
|
47
|
+
languages: ${{ matrix.language }}
|
48
|
+
# If you wish to specify custom queries, you can do so here or in a config file.
|
49
|
+
# By default, queries listed here will override any specified in a config file.
|
50
|
+
# Prefix the list here with "+" to use these queries and those in the config file.
|
51
|
+
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
52
|
+
|
53
|
+
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
54
|
+
# If this step fails, then you should remove it and run the build manually (see below)
|
55
|
+
- name: Autobuild
|
56
|
+
uses: github/codeql-action/autobuild@v3
|
57
|
+
|
58
|
+
# ℹ️ Command-line programs to run using the OS shell.
|
59
|
+
# 📚 https://git.io/JvXDl
|
60
|
+
|
61
|
+
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
62
|
+
# and modify them (or add more) to build your code if your project
|
63
|
+
# uses a compiled language
|
64
|
+
|
65
|
+
#- run: |
|
66
|
+
# make bootstrap
|
67
|
+
# make release
|
68
|
+
|
69
|
+
- name: Perform CodeQL Analysis
|
70
|
+
uses: github/codeql-action/analyze@v3
|
@@ -0,0 +1,126 @@
|
|
1
|
+
name: Test Coverage
|
2
|
+
|
3
|
+
permissions:
|
4
|
+
contents: read
|
5
|
+
pull-requests: write
|
6
|
+
id-token: write
|
7
|
+
|
8
|
+
env:
|
9
|
+
K_SOUP_COV_MIN_BRANCH: 92
|
10
|
+
K_SOUP_COV_MIN_LINE: 100
|
11
|
+
K_SOUP_COV_MIN_HARD: true
|
12
|
+
K_SOUP_COV_FORMATTERS: "xml,rcov,lcov,tty"
|
13
|
+
K_SOUP_COV_DO: true
|
14
|
+
K_SOUP_COV_MULTI_FORMATTERS: true
|
15
|
+
K_SOUP_COV_COMMAND_NAME: "Test Coverage"
|
16
|
+
|
17
|
+
on:
|
18
|
+
push:
|
19
|
+
branches:
|
20
|
+
- 'main'
|
21
|
+
tags:
|
22
|
+
- '!*' # Do not execute on tags
|
23
|
+
pull_request:
|
24
|
+
branches:
|
25
|
+
- '*'
|
26
|
+
# Allow manually triggering the workflow.
|
27
|
+
workflow_dispatch:
|
28
|
+
|
29
|
+
# Cancels all previous workflow runs for the same branch that have not yet completed.
|
30
|
+
concurrency:
|
31
|
+
# The concurrency group contains the workflow name and the branch name.
|
32
|
+
group: "${{ github.workflow }}-${{ github.ref }}"
|
33
|
+
cancel-in-progress: true
|
34
|
+
|
35
|
+
jobs:
|
36
|
+
coverage:
|
37
|
+
name: Code Coverage on ${{ matrix.ruby }}@current
|
38
|
+
if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
|
39
|
+
runs-on: ubuntu-latest
|
40
|
+
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
41
|
+
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
|
42
|
+
BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
|
43
|
+
strategy:
|
44
|
+
fail-fast: false
|
45
|
+
matrix:
|
46
|
+
include:
|
47
|
+
# Coverage
|
48
|
+
- ruby: "ruby"
|
49
|
+
appraisal: "coverage"
|
50
|
+
exec_cmd: "rake test"
|
51
|
+
gemfile: "Appraisal.root"
|
52
|
+
rubygems: latest
|
53
|
+
bundler: latest
|
54
|
+
|
55
|
+
steps:
|
56
|
+
- name: Checkout
|
57
|
+
uses: actions/checkout@v5
|
58
|
+
|
59
|
+
- name: Setup Ruby & RubyGems
|
60
|
+
uses: ruby/setup-ruby@v1
|
61
|
+
with:
|
62
|
+
ruby-version: "${{ matrix.ruby }}"
|
63
|
+
rubygems: "${{ matrix.rubygems }}"
|
64
|
+
bundler: "${{ matrix.bundler }}"
|
65
|
+
bundler-cache: false
|
66
|
+
|
67
|
+
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
68
|
+
# We need to do this first to get appraisal installed.
|
69
|
+
# NOTE: This does not use the main Gemfile at all.
|
70
|
+
- name: Install Root Appraisal
|
71
|
+
run: bundle
|
72
|
+
- name: Appraisal for ${{ matrix.appraisal }}
|
73
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle
|
74
|
+
- name: Tests for ${{ matrix.ruby }}@current via ${{ matrix.exec_cmd }}
|
75
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
|
76
|
+
|
77
|
+
# Do SaaS coverage uploads first
|
78
|
+
- name: Upload coverage to Coveralls
|
79
|
+
if: ${{ !env.ACT }}
|
80
|
+
uses: coverallsapp/github-action@master
|
81
|
+
with:
|
82
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
83
|
+
continue-on-error: ${{ matrix.experimental != 'false' }}
|
84
|
+
|
85
|
+
- name: Upload coverage to QLTY
|
86
|
+
if: ${{ !env.ACT }}
|
87
|
+
uses: qltysh/qlty-action/coverage@main
|
88
|
+
with:
|
89
|
+
token: ${{secrets.QLTY_COVERAGE_TOKEN}}
|
90
|
+
files: coverage/.resultset.json
|
91
|
+
continue-on-error: ${{ matrix.experimental != 'false' }}
|
92
|
+
|
93
|
+
# Build will fail here if coverage upload fails
|
94
|
+
# which will hopefully be noticed for the lack of code coverage comments
|
95
|
+
- name: Upload coverage to CodeCov
|
96
|
+
if: ${{ !env.ACT }}
|
97
|
+
uses: codecov/codecov-action@v5
|
98
|
+
with:
|
99
|
+
use_oidc: true
|
100
|
+
fail_ci_if_error: true # optional (default = false)
|
101
|
+
files: coverage/lcov.info,coverage/coverage.xml
|
102
|
+
verbose: true # optional (default = false)
|
103
|
+
|
104
|
+
# Then PR comments
|
105
|
+
- name: Code Coverage Summary Report
|
106
|
+
if: ${{ !env.ACT && github.event_name == 'pull_request' }}
|
107
|
+
uses: irongut/CodeCoverageSummary@v1.3.0
|
108
|
+
with:
|
109
|
+
filename: ./coverage/coverage.xml
|
110
|
+
badge: true
|
111
|
+
fail_below_min: true
|
112
|
+
format: markdown
|
113
|
+
hide_branch_rate: false
|
114
|
+
hide_complexity: true
|
115
|
+
indicators: true
|
116
|
+
output: both
|
117
|
+
thresholds: '100 92'
|
118
|
+
continue-on-error: ${{ matrix.experimental != 'false' }}
|
119
|
+
|
120
|
+
- name: Add Coverage PR Comment
|
121
|
+
uses: marocchino/sticky-pull-request-comment@v2
|
122
|
+
if: ${{ !env.ACT && github.event_name == 'pull_request' }}
|
123
|
+
with:
|
124
|
+
recreate: true
|
125
|
+
path: code-coverage-results.md
|
126
|
+
continue-on-error: ${{ matrix.experimental != 'false' }}
|
@@ -0,0 +1,85 @@
|
|
1
|
+
# Targets the evergreen latest release of ruby, truffleruby, and jruby
|
2
|
+
name: Current
|
3
|
+
|
4
|
+
env:
|
5
|
+
K_SOUP_COV_DO: false
|
6
|
+
|
7
|
+
on:
|
8
|
+
push:
|
9
|
+
branches:
|
10
|
+
- 'main'
|
11
|
+
tags:
|
12
|
+
- '!*' # Do not execute on tags
|
13
|
+
pull_request:
|
14
|
+
branches:
|
15
|
+
- '*'
|
16
|
+
# Allow manually triggering the workflow.
|
17
|
+
workflow_dispatch:
|
18
|
+
|
19
|
+
permissions:
|
20
|
+
contents: read
|
21
|
+
|
22
|
+
# Cancels all previous workflow runs for the same branch that have not yet completed.
|
23
|
+
concurrency:
|
24
|
+
# The concurrency group contains the workflow name and the branch name.
|
25
|
+
group: "${{ github.workflow }}-${{ github.ref }}"
|
26
|
+
cancel-in-progress: true
|
27
|
+
|
28
|
+
jobs:
|
29
|
+
test:
|
30
|
+
name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}
|
31
|
+
if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
|
32
|
+
runs-on: ubuntu-latest
|
33
|
+
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
34
|
+
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
|
35
|
+
BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
|
36
|
+
strategy:
|
37
|
+
matrix:
|
38
|
+
include:
|
39
|
+
# Ruby 3.4
|
40
|
+
- ruby: "ruby"
|
41
|
+
appraisal: "current"
|
42
|
+
exec_cmd: "rake test"
|
43
|
+
gemfile: "Appraisal.root"
|
44
|
+
rubygems: latest
|
45
|
+
bundler: latest
|
46
|
+
|
47
|
+
# truffleruby-24.1
|
48
|
+
# (according to documentation: targets Ruby 3.3 compatibility)
|
49
|
+
# (according to runtime: targets Ruby 3.2 compatibility)
|
50
|
+
- ruby: "truffleruby"
|
51
|
+
appraisal: "current"
|
52
|
+
exec_cmd: "rake test"
|
53
|
+
gemfile: "Appraisal.root"
|
54
|
+
rubygems: default
|
55
|
+
bundler: default
|
56
|
+
|
57
|
+
# jruby-10.0 (targets Ruby 3.4 compatibility)
|
58
|
+
- ruby: "jruby"
|
59
|
+
appraisal: "current"
|
60
|
+
exec_cmd: "rake test"
|
61
|
+
gemfile: "Appraisal.root"
|
62
|
+
rubygems: default
|
63
|
+
bundler: default
|
64
|
+
|
65
|
+
steps:
|
66
|
+
- name: Checkout
|
67
|
+
uses: actions/checkout@v5
|
68
|
+
|
69
|
+
- name: Setup Ruby & RubyGems
|
70
|
+
uses: ruby/setup-ruby@v1
|
71
|
+
with:
|
72
|
+
ruby-version: ${{ matrix.ruby }}
|
73
|
+
rubygems: ${{ matrix.rubygems }}
|
74
|
+
bundler: ${{ matrix.bundler }}
|
75
|
+
bundler-cache: false
|
76
|
+
|
77
|
+
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
78
|
+
# We need to do this first to get appraisal installed.
|
79
|
+
# NOTE: This does not use the main Gemfile at all.
|
80
|
+
- name: Install Root Appraisal
|
81
|
+
run: bundle
|
82
|
+
- name: Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}
|
83
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle
|
84
|
+
- name: Tests for ${{ matrix.ruby }}@${{ matrix.appraisal }} via ${{ matrix.exec_cmd }}
|
85
|
+
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# Dependency Review Action
|
2
|
+
#
|
3
|
+
# This Action will scan dependency manifest files that change as part of a Pull Request, surfacing known-vulnerable versions of the packages declared or updated in the PR. Once installed, if the workflow run is marked as required, PRs introducing known-vulnerable packages will be blocked from merging.
|
4
|
+
#
|
5
|
+
# Source repository: https://github.com/actions/dependency-review-action
|
6
|
+
# Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement
|
7
|
+
name: 'Dependency Review'
|
8
|
+
on: [pull_request]
|
9
|
+
|
10
|
+
permissions:
|
11
|
+
contents: read
|
12
|
+
|
13
|
+
jobs:
|
14
|
+
dependency-review:
|
15
|
+
runs-on: ubuntu-latest
|
16
|
+
steps:
|
17
|
+
- name: 'Checkout Repository'
|
18
|
+
uses: actions/checkout@v5
|
19
|
+
- name: 'Dependency Review'
|
20
|
+
uses: actions/dependency-review-action@v4
|
@@ -0,0 +1,75 @@
|
|
1
|
+
---
|
2
|
+
# Lock/Unlock Deps Pattern
|
3
|
+
#
|
4
|
+
# Two often conflicting goals resolved!
|
5
|
+
#
|
6
|
+
# - deps_unlocked.yml
|
7
|
+
# - All runtime & dev dependencies, but does not have a `gemfiles/*.gemfile.lock` committed
|
8
|
+
# - Uses an Appraisal2 "deps_unlocked" gemfile, and the current MRI Ruby release
|
9
|
+
# - Know when new dependency releases will break local dev with unlocked dependencies
|
10
|
+
# - Broken workflow indicates that new releases of dependencies may not work
|
11
|
+
#
|
12
|
+
# - deps_locked.yml
|
13
|
+
# - All runtime & dev dependencies, and has a `Gemfile.lock` committed
|
14
|
+
# - Uses the project's main Gemfile, and the current MRI Ruby release
|
15
|
+
# - Matches what contributors and maintainers use locally for development
|
16
|
+
# - Broken workflow indicates that a new contributor will have a bad time
|
17
|
+
#
|
18
|
+
name: Deps Locked
|
19
|
+
|
20
|
+
permissions:
|
21
|
+
contents: read
|
22
|
+
|
23
|
+
env:
|
24
|
+
KITCHEN_SINK: true
|
25
|
+
|
26
|
+
on:
|
27
|
+
push:
|
28
|
+
branches:
|
29
|
+
- 'main'
|
30
|
+
- '*-stable'
|
31
|
+
tags:
|
32
|
+
- '!*' # Do not execute on tags
|
33
|
+
pull_request:
|
34
|
+
branches:
|
35
|
+
- '*'
|
36
|
+
# Allow manually triggering the workflow.
|
37
|
+
workflow_dispatch:
|
38
|
+
|
39
|
+
# Cancels all previous workflow runs for the same branch that have not yet completed.
|
40
|
+
concurrency:
|
41
|
+
# The concurrency group contains the workflow name and the branch name.
|
42
|
+
group: "${{ github.workflow }}-${{ github.ref }}"
|
43
|
+
cancel-in-progress: true
|
44
|
+
|
45
|
+
jobs:
|
46
|
+
test:
|
47
|
+
name: Default rake task w/ main Gemfile.lock ${{ matrix.name_extra || '' }}
|
48
|
+
if: ${{ !contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]') }}
|
49
|
+
runs-on: ubuntu-latest
|
50
|
+
continue-on-error: ${{ matrix.experimental }}
|
51
|
+
strategy:
|
52
|
+
fail-fast: false
|
53
|
+
matrix:
|
54
|
+
include:
|
55
|
+
# Ruby <whichever version is current, e.g., 3.4 as of 2025-07-12>
|
56
|
+
- ruby: "ruby"
|
57
|
+
exec_cmd: "rake"
|
58
|
+
rubygems: latest
|
59
|
+
bundler: latest
|
60
|
+
experimental: false
|
61
|
+
|
62
|
+
steps:
|
63
|
+
- name: Checkout
|
64
|
+
uses: actions/checkout@v5
|
65
|
+
|
66
|
+
- name: Setup Ruby & RubyGems
|
67
|
+
uses: ruby/setup-ruby@v1
|
68
|
+
with:
|
69
|
+
ruby-version: ${{ matrix.ruby }}
|
70
|
+
rubygems: ${{ matrix.rubygems }}
|
71
|
+
bundler: ${{ matrix.bundler }}
|
72
|
+
bundler-cache: true
|
73
|
+
|
74
|
+
- name: Checks the kitchen sink via ${{ matrix.exec_cmd }}
|
75
|
+
run: bundle exec ${{ matrix.exec_cmd }}
|
@@ -0,0 +1,84 @@
|
|
1
|
+
---
|
2
|
+
# Lock/Unlock Deps Pattern
|
3
|
+
#
|
4
|
+
# Two often conflicting goals resolved!
|
5
|
+
#
|
6
|
+
# - deps_unlocked.yml
|
7
|
+
# - All runtime & dev dependencies, but does not have a `gemfiles/*.gemfile.lock` committed
|
8
|
+
# - Uses an Appraisal2 "deps_unlocked" gemfile, and the current MRI Ruby release
|
9
|
+
# - Know when new dependency releases will break local dev with unlocked dependencies
|
10
|
+
# - Broken workflow indicates that new releases of dependencies may not work
|
11
|
+
#
|
12
|
+
# - deps_locked.yml
|
13
|
+
# - All runtime & dev dependencies, and has a `Gemfile.lock` committed
|
14
|
+
# - Uses the project's main Gemfile, and the current MRI Ruby release
|
15
|
+
# - Matches what contributors and maintainers use locally for development
|
16
|
+
# - Broken workflow indicates that a new contributor will have a bad time
|
17
|
+
#
|
18
|
+
name: Deps Unlocked
|
19
|
+
|
20
|
+
permissions:
|
21
|
+
contents: read
|
22
|
+
|
23
|
+
env:
|
24
|
+
K_SOUP_COV_DO: false
|
25
|
+
|
26
|
+
on:
|
27
|
+
push:
|
28
|
+
branches:
|
29
|
+
- 'main'
|
30
|
+
- "*-stable"
|
31
|
+
tags:
|
32
|
+
- '!*' # Do not execute on tags
|
33
|
+
pull_request:
|
34
|
+
branches:
|
35
|
+
- '*'
|
36
|
+
# Allow manually triggering the workflow.
|
37
|
+
workflow_dispatch:
|
38
|
+
|
39
|
+
# Cancels all previous workflow runs for the same branch that have not yet completed.
|
40
|
+
concurrency:
|
41
|
+
# The concurrency group contains the workflow name and the branch name.
|
42
|
+
group: "${{ github.workflow }}-${{ github.ref }}"
|
43
|
+
cancel-in-progress: true
|
44
|
+
|
45
|
+
jobs:
|
46
|
+
test:
|
47
|
+
name: Default rake task w/ unlocked deps ${{ matrix.name_extra || '' }}
|
48
|
+
if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
|
49
|
+
runs-on: ubuntu-latest
|
50
|
+
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
|
51
|
+
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
|
52
|
+
BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
|
53
|
+
strategy:
|
54
|
+
matrix:
|
55
|
+
include:
|
56
|
+
# Ruby <whichever version is current, e.g., 3.4 as of 2025-07-12>
|
57
|
+
- ruby: "ruby"
|
58
|
+
appraisal_name: "deps_unlocked"
|
59
|
+
exec_cmd: "rake"
|
60
|
+
gemfile: "Appraisal.root"
|
61
|
+
rubygems: latest
|
62
|
+
bundler: latest
|
63
|
+
|
64
|
+
steps:
|
65
|
+
- name: Checkout
|
66
|
+
uses: actions/checkout@v5
|
67
|
+
|
68
|
+
- name: Setup Ruby & RubyGems
|
69
|
+
uses: ruby/setup-ruby@v1
|
70
|
+
with:
|
71
|
+
ruby-version: ${{ matrix.ruby }}
|
72
|
+
rubygems: ${{ matrix.rubygems }}
|
73
|
+
bundler: ${{ matrix.bundler }}
|
74
|
+
bundler-cache: false
|
75
|
+
|
76
|
+
# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
|
77
|
+
# We need to do this first to get appraisal installed.
|
78
|
+
# NOTE: This does not use the main Gemfile at all.
|
79
|
+
- name: Install Root Appraisal
|
80
|
+
run: bundle
|
81
|
+
- name: Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal_name }}
|
82
|
+
run: bundle exec appraisal ${{ matrix.appraisal_name }} bundle
|
83
|
+
- name: Run ${{ matrix.exec_cmd }} on ${{ matrix.ruby }}@${{ matrix.appraisal_name }}
|
84
|
+
run: bundle exec appraisal ${{ matrix.appraisal_name }} bundle exec ${{ matrix.exec_cmd }}
|