rspec-pending_for-0.1.19/0000755000004100000410000000000015060261576015246 5ustar www-datawww-datarspec-pending_for-0.1.19/FUNDING.md0000644000004100000410000001355515060261576016673 0ustar www-datawww-data Official Discord 👉️ [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite] Many paths lead to being a sponsor or a backer of this project. Are you on such a path? [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon] [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat [⛳liberapay]: https://liberapay.com/pboling/donate [🖇osc-backers]: https://opencollective.com/galtzo-floss#backer [🖇osc-backers-i]: https://opencollective.com/galtzo-floss/backers/badge.svg?style=flat [🖇osc-sponsors]: https://opencollective.com/galtzo-floss#sponsor [🖇osc-sponsors-i]: https://opencollective.com/galtzo-floss/sponsors/badge.svg?style=flat [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github [🖇sponsor]: https://github.com/sponsors/pboling [🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat [🖇polar]: https://polar.sh/pboling [🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat [🖇kofi]: https://ko-fi.com/O5O86SNP4 [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat [🖇patreon]: https://patreon.com/galtzo [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat [🖇buyme]: https://www.buymeacoffee.com/pboling [🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal [🖇paypal]: https://www.paypal.com/paypalme/peterboling [✉️discord-invite]: https://discord.gg/3qme4XHNKN [✉️discord-invite-img]: https://img.shields.io/discord/1373797679469170758?style=flat # 🤑 Request for Help Maintainers have teeth and need to pay their dentists. After getting laid off in an RIF in March and filled with many dozens of rejections, I'm now spending ~60+ hours a week building open source tools. I'm hoping to be able to pay for my kids' health insurance this month, so if you value the work I am doing, I need your support. Please consider sponsoring me or the project. To join the community or get help 👇️ Join the Discord. [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] To say "thanks for maintaining such a great tool" ☝️ Join the Discord or 👇️ send money. [![Sponsor galtzo-floss/rspec-pending_for on Open Source Collective][🖇osc-all-bottom-img]][🖇osc] 💌 [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay-img] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal-img] # Another Way to Support Open Source Software > How wonderful it is that nobody need wait a single moment before starting to improve the world.
>—Anne Frank I’m driven by a passion to foster a thriving open-source community – a space where people can tackle complex problems, no matter how small. Revitalizing libraries that have fallen into disrepair, and building new libraries focused on solving real-world challenges, are my passions — totaling 79 hours of FLOSS coding over just the past seven days, a pretty regular week for me. I was recently affected by layoffs, and the tech jobs market is unwelcoming. I’m reaching out here because your support would significantly aid my efforts to provide for my family, and my farm (11 🐔 chickens, 2 🐶 dogs, 3 🐰 rabbits, 8 🐈‍ cats). If you work at a company that uses my work, please encourage them to support me as a corporate sponsor. My work on gems you use might show up in `bundle fund`. I’m developing a new library, [floss_funding][🖇floss-funding-gem], designed to empower open-source developers like myself to get paid for the work we do, in a sustainable way. Please give it a look. **[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags** [⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611 [🖇osc-all-img]: https://img.shields.io/opencollective/all/galtzo-floss [🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss [🖇osc-backers-img]: https://img.shields.io/opencollective/backers/galtzo-floss [🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/galtzo-floss?style=for-the-badge [🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss?style=for-the-badge [🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/galtzo-floss?style=for-the-badge [🖇osc]: https://opencollective.com/galtzo-floss [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github [🖇buyme-img]: https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20latte&emoji=&slug=pboling&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff [🖇paypal-bottom-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=for-the-badge&logo=paypal&color=0A0A0A [🖇floss-funding.dev]: https://floss-funding.dev [🖇floss-funding-gem]: https://github.com/galtzo-floss/floss_funding [✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge rspec-pending_for-0.1.19/RUBOCOP.md0000644000004100000410000000653115060261576016706 0ustar www-datawww-data# RuboCop Usage Guide ## Overview A tale of two RuboCop plugin gems. ### RuboCop Gradual This project uses `rubocop_gradual` instead of vanilla RuboCop for code style checking. The `rubocop_gradual` tool allows for gradual adoption of RuboCop rules by tracking violations in a lock file. ### RuboCop LTS This project uses `rubocop-lts` to ensure, on a best-effort basis, compatibility with Ruby >= 1.9.2. RuboCop rules are meticulously configured by the `rubocop-lts` family of gems to ensure that a project is compatible with a specific version of Ruby. See: https://rubocop-lts.gitlab.io for more. ## Checking RuboCop Violations To check for RuboCop violations in this project, always use: ```bash bundle exec rake rubocop_gradual:check ``` **Do not use** the standard RuboCop commands like: - `bundle exec rubocop` - `rubocop` ## Understanding the Lock File The `.rubocop_gradual.lock` file tracks all current RuboCop violations in the project. This allows the team to: 1. Prevent new violations while gradually fixing existing ones 2. Track progress on code style improvements 3. Ensure CI builds don't fail due to pre-existing violations ## Common Commands - **Check violations** - `bundle exec rake rubocop_gradual` - `bundle exec rake rubocop_gradual:check` - **(Safe) Autocorrect violations, and update lockfile if no new violations** - `bundle exec rake rubocop_gradual:autocorrect` - **Force update the lock file (w/o autocorrect) to match violations present in code** - `bundle exec rake rubocop_gradual:force_update` ## Workflow 1. Before submitting a PR, run `bundle exec rake rubocop_gradual:autocorrect` a. or just the default `bundle exec rake`, as autocorrection is a pre-requisite of the default task. 2. If there are new violations, either: - Fix them in your code - Run `bundle exec rake rubocop_gradual:force_update` to update the lock file (only for violations you can't fix immediately) 3. Commit the updated `.rubocop_gradual.lock` file along with your changes ## Never add inline RuboCop disables Do not add inline `rubocop:disable` / `rubocop:enable` comments anywhere in the codebase (including specs, except when following the few existing `rubocop:disable` patterns for a rule already being disabled elsewhere in the code). We handle exceptions in two supported ways: - Permanent/structural exceptions: prefer adjusting the RuboCop configuration (e.g., in `.rubocop.yml`) to exclude a rule for a path or file pattern when it makes sense project-wide. - Temporary exceptions while improving code: record the current violations in `.rubocop_gradual.lock` via the gradual workflow: - `bundle exec rake rubocop_gradual:autocorrect` (preferred; will autocorrect what it can and update the lock only if no new violations were introduced) - If needed, `bundle exec rake rubocop_gradual:force_update` (as a last resort when you cannot fix the newly reported violations immediately) In general, treat the rules as guidance to follow; fix violations rather than ignore them. For example, RSpec conventions in this project expect `described_class` to be used in specs that target a specific class under test. ## Benefits of rubocop_gradual - Allows incremental adoption of code style rules - Prevents CI failures due to pre-existing violations - Provides a clear record of code style debt - Enables focused efforts on improving code quality over time rspec-pending_for-0.1.19/CONTRIBUTING.md0000644000004100000410000002463115060261576017505 0ustar www-datawww-data# Contributing Bug reports and pull requests are welcome on [CodeBerg][📜src-cb], [GitLab][📜src-gl], or [GitHub][📜src-gh]. This project should be a safe, welcoming space for collaboration, so contributors agree to adhere to the [code of conduct][🤝conduct]. To submit a patch, please fork the project, create a patch with tests, and send a pull request. Remember to [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] if you make changes. ## Help out! Take a look at the `reek` list which is the file called `REEK` and find something to improve. Follow these instructions: 1. Fork the repository 2. Create a feature branch (`git checkout -b my-new-feature`) 3. Make some fixes. 4. Commit changes (`git commit -am 'Added some feature'`) 5. Push to the branch (`git push origin my-new-feature`) 6. Make sure to add tests for it. This is important, so it doesn't break in a future release. 7. Create new Pull Request. ## Environment Variables for Local Development Below are the primary environment variables recognized by stone_checksums (and its integrated tools). Unless otherwise noted, set boolean values to the string "true" to enable. General/runtime - DEBUG: Enable extra internal logging for this library (default: false) - REQUIRE_BENCH: Enable `require_bench` to profile requires (default: false) - CI: When set to true, adjusts default rake tasks toward CI behavior Coverage (kettle-soup-cover / SimpleCov) - K_SOUP_COV_DO: Enable coverage collection (default: true in .envrc) - K_SOUP_COV_FORMATTERS: Comma-separated list of formatters (html, xml, rcov, lcov, json, tty) - K_SOUP_COV_MIN_LINE: Minimum line coverage threshold (integer, e.g., 100) - K_SOUP_COV_MIN_BRANCH: Minimum branch coverage threshold (integer, e.g., 100) - K_SOUP_COV_MIN_HARD: Fail the run if thresholds are not met (true/false) - K_SOUP_COV_MULTI_FORMATTERS: Enable multiple formatters at once (true/false) - K_SOUP_COV_OPEN_BIN: Path to browser opener for HTML (empty disables auto-open) - MAX_ROWS: Limit console output rows for simplecov-console (e.g., 1) Tip: When running a single spec file locally, you may want `K_SOUP_COV_MIN_HARD=false` to avoid failing thresholds for a partial run. GitHub API and CI helpers - GITHUB_TOKEN or GH_TOKEN: Token used by `ci:act` and release workflow checks to query GitHub Actions status at higher rate limits Releasing and signing - SKIP_GEM_SIGNING: If set, skip gem signing during build/release - GEM_CERT_USER: Username for selecting your public cert in `certs/.pem` (defaults to $USER) - SOURCE_DATE_EPOCH: Reproducible build timestamp. `kettle-release` will set this automatically for the session. Git hooks and commit message helpers (exe/kettle-commit-msg) - GIT_HOOK_BRANCH_VALIDATE: Branch name validation mode (e.g., `jira`) or `false` to disable - GIT_HOOK_FOOTER_APPEND: Append a footer to commit messages when goalie allows (true/false) - GIT_HOOK_FOOTER_SENTINEL: Required when footer append is enabled — a unique first-line sentinel to prevent duplicates - GIT_HOOK_FOOTER_APPEND_DEBUG: Extra debug output in the footer template (true/false) For a quick starting point, this repository’s `.envrc` shows sane defaults, and `.env.local` can override them locally. ## Appraisals From time to time the [appraisal2][🚎appraisal2] gemfiles in `gemfiles/` will need to be updated. They are created and updated with the commands: ```console bin/rake appraisal:update ``` When adding an appraisal to CI, check the [runner tool cache][🏃‍♂️runner-tool-cache] to see which runner to use. ## The Reek List Take a look at the `reek` list which is the file called `REEK` and find something to improve. To refresh the `reek` list: ```console bundle exec reek > REEK ``` ## Run Tests To run all tests ```console bundle exec rake test ``` ### Spec organization (required) - One spec file per class/module. For each class or module under `lib/`, keep all of its unit tests in a single spec file under `spec/` that mirrors the path and file name exactly: `lib/rspec/pending_for/release_cli.rb` -> `spec/rspec/pending_for/release_cli_spec.rb`. - Never add a second spec file for the same class/module. Examples of disallowed names: `*_more_spec.rb`, `*_extra_spec.rb`, `*_status_spec.rb`, or any other suffix that still targets the same class. If you find yourself wanting a second file, merge those examples into the canonical spec file for that class/module. - Exception: Integration specs that intentionally span multiple classes. Place these under `spec/integration/` (or a clearly named integration folder), and do not directly mirror a single class. Name them after the scenario, not a class. - Migration note: If a duplicate spec file exists, move all examples into the canonical file and delete the duplicate. Do not leave stubs or empty files behind. ## Lint It Run all the default tasks, which includes running the gradually autocorrecting linter, `rubocop-gradual`. ```console bundle exec rake ``` Or just run the linter. ```console bundle exec rake rubocop_gradual:autocorrect ``` For more detailed information about using RuboCop in this project, please see the [RUBOCOP.md](RUBOCOP.md) guide. This project uses `rubocop_gradual` instead of vanilla RuboCop, which requires specific commands for checking violations. ### Important: Do not add inline RuboCop disables Never add `# rubocop:disable ...` / `# rubocop:enable ...` comments to code or specs (except when following the few existing `rubocop:disable` patterns for a rule already being disabled elsewhere in the code). Instead: - Prefer configuration-based exclusions when a rule should not apply to certain paths or files (e.g., via `.rubocop.yml`). - When a violation is temporary and you plan to fix it later, record it in `.rubocop_gradual.lock` using the gradual workflow: - `bundle exec rake rubocop_gradual:autocorrect` (preferred) - `bundle exec rake rubocop_gradual:force_update` (only when you cannot fix the violations immediately) As a general rule, fix style issues rather than ignoring them. For example, our specs should follow RSpec conventions like using `described_class` for the class under test. ## Contributors Your picture could be here! [![Contributors][🖐contributors-img]][🖐contributors] Made with [contributors-img][🖐contrib-rocks]. Also see GitLab Contributors: [https://gitlab.com/galtzo-floss/rspec-pending_for/-/graphs/main][🚎contributors-gl] ## For Maintainers ### One-time, Per-maintainer, Setup **IMPORTANT**: To sign a build, a public key for signing gems will need to be picked up by the line in the `gemspec` defining the `spec.cert_chain` (check the relevant ENV variables there). All releases to RubyGems.org are signed releases. See: [RubyGems Security Guide][🔒️rubygems-security-guide] NOTE: To build without signing the gem set `SKIP_GEM_SIGNING` to any value in the environment. ### To release a new version: #### Automated process 1. Update version.rb to contian the correct version-to-be-released. 2. Run `bundle exec kettle-changelog`. 3. Run `bundle exec kettle-release`. #### Manual process 1. Run `bin/setup && bin/rake` as a "test, coverage, & linting" sanity check 2. Update the version number in `version.rb`, and ensure `CHANGELOG.md` reflects changes 3. Run `bin/setup && bin/rake` again as a secondary check, and to update `Gemfile.lock` 4. Run `git commit -am "🔖 Prepare release v"` to commit the changes 5. Run `git push` to trigger the final CI pipeline before release, and merge PRs - NOTE: Remember to [check the build][🧪build]. 6. Run `export GIT_TRUNK_BRANCH_NAME="$(git remote show origin | grep 'HEAD branch' | cut -d ' ' -f5)" && echo $GIT_TRUNK_BRANCH_NAME` 7. Run `git checkout $GIT_TRUNK_BRANCH_NAME` 8. Run `git pull origin $GIT_TRUNK_BRANCH_NAME` to ensure latest trunk code 9. Optional for older Bundler (< 2.7.0): Set `SOURCE_DATE_EPOCH` so `rake build` and `rake release` use the same timestamp and generate the same checksums - If your Bundler is >= 2.7.0, you can skip this; builds are reproducible by default. - Run `export SOURCE_DATE_EPOCH=$EPOCHSECONDS && echo $SOURCE_DATE_EPOCH` - If the echo above has no output, then it didn't work. - Note: `zsh/datetime` module is needed, if running `zsh`. - In older versions of `bash` you can use `date +%s` instead, i.e. `export SOURCE_DATE_EPOCH=$(date +%s) && echo $SOURCE_DATE_EPOCH` 10. Run `bundle exec rake build` 11. Run `bin/gem_checksums` (more context [1][🔒️rubygems-checksums-pr], [2][🔒️rubygems-guides-pr]) to create SHA-256 and SHA-512 checksums. This functionality is provided by the `stone_checksums` [gem][💎stone_checksums]. - The script automatically commits but does not push the checksums 12. Sanity check the SHA256, comparing with the output from the `bin/gem_checksums` command: - `sha256sum pkg/-.gem` 13. Run `bundle exec rake release` which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org][💎rubygems] [📜src-gl]: https://gitlab.com/galtzo-floss/rspec-pending_for/ [📜src-cb]: https://codeberg.org/galtzo-floss/rspec-pending_for [📜src-gh]: https://github.com/galtzo-floss/rspec-pending_for [🧪build]: https://github.com/galtzo-floss/rspec-pending_for/actions [🤝conduct]: https://gitlab.com/galtzo-floss/rspec-pending_for/-/blob/main/CODE_OF_CONDUCT.md [🖐contrib-rocks]: https://contrib.rocks [🖐contributors]: https://github.com/galtzo-floss/rspec-pending_for/graphs/contributors [🚎contributors-gl]: https://gitlab.com/galtzo-floss/rspec-pending_for/-/graphs/main [🖐contributors-img]: https://contrib.rocks/image?repo=galtzo-floss/rspec-pending_for [💎rubygems]: https://rubygems.org [🔒️rubygems-security-guide]: https://guides.rubygems.org/security/#building-gems [🔒️rubygems-checksums-pr]: https://github.com/rubygems/rubygems/pull/6022 [🔒️rubygems-guides-pr]: https://github.com/rubygems/guides/pull/325 [💎stone_checksums]: https://github.com/galtzo-floss/stone_checksums [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-FFDD67.svg?style=flat [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139 [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html [🚎appraisal2]: https://github.com/appraisal-rb/appraisal2 [🏃‍♂️runner-tool-cache]: https://github.com/ruby/ruby-builder/releases/tag/toolcache rspec-pending_for-0.1.19/SECURITY.md0000644000004100000410000000110015060261576017027 0ustar www-datawww-data# Security Policy ## Supported Versions | Version | Supported | |----------|-----------| | 1.latest | ✅ | ## Security contact information To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure. ## Additional Support If you are interested in support for versions older than the latest release, please consider sponsoring the project / maintainer @ https://liberapay.com/pboling/donate, or find other sponsorship links in the [README]. [README]: README.md rspec-pending_for-0.1.19/lib/0000755000004100000410000000000015060261576016014 5ustar www-datawww-datarspec-pending_for-0.1.19/lib/rspec-pending_for.rb0000644000004100000410000000004515060261576021744 0ustar www-datawww-datarequire_relative "rspec/pending_for" rspec-pending_for-0.1.19/lib/rspec/0000755000004100000410000000000015060261576017130 5ustar www-datawww-datarspec-pending_for-0.1.19/lib/rspec/pending_for/0000755000004100000410000000000015060261576021422 5ustar www-datawww-datarspec-pending_for-0.1.19/lib/rspec/pending_for/engine_or_versions_required.rb0000644000004100000410000000061215060261576027543 0ustar www-datawww-data# frozen_string_literal: true module Rspec module PendingFor # Error class raised when pending_for is used but no engine or version is specified. class EngineOrVersionsRequired < ArgumentError def initialize(method_name, *args) message = "#{method_name} requires at least an engine or versions to be specified" super(message, *args) end end end end rspec-pending_for-0.1.19/lib/rspec/pending_for/build.rb0000644000004100000410000001234215060261576023050 0ustar www-datawww-data# frozen_string_literal: true module Rspec module PendingFor # SRP: Describe the RubyEngine and/or RubyVersion(s) that will be pended or skipped and with what message class Build # # | RUBY_ENGINE | Implementation | # |:--------------:|:------------------------:| # | "unknown" | MRI < 1.9 (probably) | # | "ruby" | MRI >= 1.9 | # | "ree" | Ruby Enterprise Edition | # | "jruby" | JRuby | # | "macruby" | MacRuby | # | "rbx" | Rubinius | # | "maglev" | MagLev | # | "ironruby" | IronRuby | # | "cardinal" | Cardinal | # | "truffleruby" | Truffle Ruby | # # Keys are the INTERPRETER_MATRIX = { "unknown" => "MRI < 1.9 (probably)", "ruby" => "MRI >= 1.9", "ree" => "Ruby Enterprise Edition", "jruby" => "JRuby", "macruby" => "MacRuby", "rbx" => "Rubinius", "maglev" => "MagLev", "ironruby" => "IronRuby", "cardinal" => "Cardinal", "truffleruby" => "Truffle Ruby", }.freeze BROKEN_STRING = "Behavior is broken" BUG_STRING = "due to a bug in the Ruby engine" VERSIONS_STRING = "in Ruby versions" ISSUES_LINK = "https://github.com/galtzo-floss/rspec-pending_for/issues" RELEVANT_VERSIONS_PROC = lambda { |rv| "#{BROKEN_STRING} #{VERSIONS_STRING} #{rv} #{BUG_STRING}" } attr_reader :message, :relevant_versions, :relevant_engine, :reason def initialize(options = {}) # Normalize versions without enumerating ranges raw_versions = options[:versions] @relevant_versions = if raw_versions.nil? [] elsif raw_versions.is_a?(Array) raw_versions elsif raw_versions.is_a?(Range) [raw_versions] else [raw_versions] end @relevant_engine = options[:engine].nil? ? nil : options[:engine].to_s @reason = options[:reason] warn_about_unrecognized_engine # If engine is nil, then any matching versions should be pended @message = if @relevant_engine.nil? no_engine_specified elsif RubyEngine.is?(@relevant_engine) engine_specified_and_relevant end end def current_matches_specified? !message.nil? end private # Determine whether the current Ruby version matches any of the provided version specs. # A version spec may be: # - String: exact match against RubyVersion.to_s # - Range[Gem::Version, Gem::Version]: inclusive/exclusive respected # - Range[Integer, Integer]: compares major version from RubyVersion.to_s def versions_include_current? return false if relevant_versions.nil? current_str = RubyVersion.to_s current_major = current_str.to_s.split(".").first.to_i current_gemv = begin Gem::Version.new(current_str.to_s) rescue StandardError nil end relevant_versions.any? do |spec| case spec when String # Support minor-version shorthand like "3.1" to match any 3.1.x if spec.to_s =~ /^\d+\.\d+$/ current_major_minor = current_str.to_s.split(".")[0, 2].join(".") spec == current_major_minor else spec == current_str end when Range b = spec.begin e = spec.end if b.is_a?(Gem::Version) && e.is_a?(Gem::Version) next false unless current_gemv # Respect exclusive end if spec.exclude_end? b <= current_gemv && current_gemv < e else b <= current_gemv && current_gemv <= e end elsif b.is_a?(Integer) && e.is_a?(Integer) if spec.exclude_end? b <= current_major && current_major < e else b <= current_major && current_major <= e end else # Fallback: try cover? with the string form (likely false if incomparable) spec.respond_to?(:cover?) && spec.cover?(current_str) end else false end end end def warn_about_unrecognized_engine return false if relevant_engine.nil? || !INTERPRETER_MATRIX[relevant_engine].nil? warn(%[ Engine specified (#{relevant_engine}) is not known to rspec-pending_for. If it is a real RUBY_ENGINE, please report as a bug to #{ISSUES_LINK} ]) end def no_engine_specified reason || RELEVANT_VERSIONS_PROC.call(relevant_versions) if versions_include_current? end def engine_specified_and_relevant if relevant_versions.empty? # No versions specified means ALL versions for this engine reason || "#{BROKEN_STRING} #{BUG_STRING} #{INTERPRETER_MATRIX[relevant_engine]}" elsif versions_include_current? reason || %[#{RELEVANT_VERSIONS_PROC.call(relevant_versions)} (#{INTERPRETER_MATRIX[relevant_engine]})] end end end end end rspec-pending_for-0.1.19/lib/rspec/pending_for/rspec.rb0000644000004100000410000000015715060261576023066 0ustar www-datawww-data# frozen_string_literal: true require "rspec/core" RSpec.configure do |c| c.include(Rspec::PendingFor) end rspec-pending_for-0.1.19/lib/rspec/pending_for/version.rb0000644000004100000410000000030215060261576023427 0ustar www-datawww-data# frozen_string_literal: true module Rspec module PendingFor module Version VERSION = "0.1.19" end # Backwards compatability shim. VERSION = Version::VERSION end end rspec-pending_for-0.1.19/lib/rspec/pending_for.rb0000644000004100000410000000613115060261576021750 0ustar www-datawww-data# frozen_string_literal: true # External Libraries require "ruby_version" require "ruby_engine" # This gem require_relative "pending_for/version" require_relative "pending_for/engine_or_versions_required" require_relative "pending_for/build" require_relative "pending_for/rspec" module Rspec # Use with Rspec by including in your example groups, just like any other Rspec helpers: # # RSpec.configure do |c| # c.include Rspec::PendingFor # end # module PendingFor # How to pend specs that break due to bugs in Ruby interpreters or versions # # it("blah is blah") do # pending_for(engine: "ruby", versions: "2.1.5") # expect("blah").to eq "blah" # end # # Not using named parameters because still supporting Ruby 1.9 # # @param options [Hash] pending configuration # @option options [String,Symbol] :engine ("ruby") Ruby engine name to match, e.g. :ruby, :jruby, :truffleruby # @option options [String,Range,Array] :versions # A single version string or range, or an Array of version specs. Each spec can be: # - String: exact version match (e.g., "2.7.8") # - Range: inclusive/exclusive bounds respected (e.g., Gem::Version.new("2.6.0")...Gem::Version.new("3.0.0")) # - Range: compares Ruby major version (e.g., 2..3). Inclusive/exclusive respected. # JRuby/TruffleRuby are supported via RUBY_VERSION compatibility for Integer ranges and Gem::Version ranges. # @option options [String] :reason Custom message to display when pending def pending_for(options = {}) modify_example_with(:pending, options) end # How to pend specs that break due to bugs in Ruby interpreters or versions # # it("blah is blah") do # skip_for(engine: "jruby", versions: "2.2.2") # expect("blah").to eq "blah" # end # # Not using named parameters because still supporting Ruby 1.9 # # @param options [Hash] skip configuration # @option options [String,Symbol] :engine ("ruby") Ruby engine name to match, e.g. :ruby, :jruby, :truffleruby # @option options [String,Range,Array] :versions # A single version string or range, or an Array of version specs. Each spec can be: # - String: exact version match (e.g., "2.7.8") # - Range: inclusive/exclusive bounds respected (e.g., Gem::Version.new("2.6.0")...Gem::Version.new("3.0.0")) # - Range: compares Ruby major version (e.g., 2..3). Inclusive/exclusive respected. # JRuby/TruffleRuby are supported via RUBY_VERSION compatibility for Integer ranges and Gem::Version ranges. # @option options [String] :reason Custom message to display when skipping def skip_for(options = {}) modify_example_with(:skip, options) end private def modify_example_with(message, options) raise(EngineOrVersionsRequired, "#{message}_for") unless options[:engine] || options[:versions] build = Build.new(options) send(message, build.message) if build.current_matches_specified? end end end rspec-pending_for-0.1.19/LICENSE.txt0000644000004100000410000000212415060261576017070 0ustar www-datawww-dataCopyright (c) 2015-2018, 2020-2022, 2025 Peter H. Boling of Galtzo.com MIT License Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. rspec-pending_for-0.1.19/CITATION.cff0000644000004100000410000000112515060261576017137 0ustar www-datawww-datacff-version: 1.2.0 title: rspec-pending_for message: >- If you use this work and you want to cite it, then you can use the metadata from this file. type: software authors: - given-names: Peter Hurn family-names: Boling email: peter@railsbling.com affiliation: railsbling.com orcid: 'https://orcid.org/0009-0008-8519-441X' identifiers: - type: url value: 'https://github.com/galtzo-floss/rspec-pending_for' description: rspec-pending_for repository-code: 'https://github.com/galtzo-floss/rspec-pending_for' abstract: >- rspec-pending_for license: See license file rspec-pending_for-0.1.19/rspec-pending_for.gemspec0000644000004100000410000001335315060261576022224 0ustar www-datawww-data######################################################### # This file has been automatically generated by gem2tgz # ######################################################### # -*- encoding: utf-8 -*- # stub: rspec-pending_for 0.1.19 ruby lib Gem::Specification.new do |s| s.name = "rspec-pending_for".freeze s.version = "0.1.19".freeze s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= s.metadata = { "bug_tracker_uri" => "https://github.com/galtzo-floss/rspec-pending_for/issues", "changelog_uri" => "https://github.com/galtzo-floss/rspec-pending_for/blob/v0.1.19/CHANGELOG.md", "discord_uri" => "https://discord.gg/3qme4XHNKN", "documentation_uri" => "https://www.rubydoc.info/gems/rspec-pending_for/0.1.19", "funding_uri" => "https://github.com/sponsors/pboling", "homepage_uri" => "https://rspec-pending-for.galtzo.com/", "news_uri" => "https://www.railsbling.com/tags/rspec-pending_for", "rubygems_mfa_required" => "true", "source_code_uri" => "https://github.com/galtzo-floss/rspec-pending_for/tree/v0.1.19", "wiki_uri" => "https://github.com/galtzo-floss/rspec-pending_for/wiki" } if s.respond_to? :metadata= s.require_paths = ["lib".freeze] s.authors = ["Peter H. Boling".freeze] s.bindir = "exe".freeze s.cert_chain = ["-----BEGIN CERTIFICATE-----\nMIIEgDCCAuigAwIBAgIBATANBgkqhkiG9w0BAQsFADBDMRUwEwYDVQQDDAxwZXRl\nci5ib2xpbmcxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkW\nA2NvbTAeFw0yNTA1MDQxNTMzMDlaFw00NTA0MjkxNTMzMDlaMEMxFTATBgNVBAMM\nDHBldGVyLmJvbGluZzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy\nLGQBGRYDY29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAruUoo0WA\nuoNuq6puKWYeRYiZekz/nsDeK5x/0IEirzcCEvaHr3Bmz7rjo1I6On3gGKmiZs61\nLRmQ3oxy77ydmkGTXBjruJB+pQEn7UfLSgQ0xa1/X3kdBZt6RmabFlBxnHkoaGY5\nmZuZ5+Z7walmv6sFD9ajhzj+oIgwWfnEHkXYTR8I6VLN7MRRKGMPoZ/yvOmxb2DN\ncoEEHWKO9CvgYpW7asIihl/9GMpKiRkcYPm9dGQzZc6uTwom1COfW0+ZOFrDVBuV\nFMQRPswZcY4Wlq0uEBLPU7hxnCL9nKK6Y9IhdDcz1mY6HZ91WImNslOSI0S8hRpj\nyGOWxQIhBT3fqCBlRIqFQBudrnD9jSNpSGsFvbEijd5ns7Z9ZMehXkXDycpGAUj1\nto/5cuTWWw1JqUWrKJYoifnVhtE1o1DZ+LkPtWxHtz5kjDG/zR3MG0Ula0UOavlD\nqbnbcXPBnwXtTFeZ3C+yrWpE4pGnl3yGkZj9SMTlo9qnTMiPmuWKQDatAgMBAAGj\nfzB9MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQE8uWvNbPVNRXZ\nHlgPbc2PCzC4bjAhBgNVHREEGjAYgRZwZXRlci5ib2xpbmdAZ21haWwuY29tMCEG\nA1UdEgQaMBiBFnBldGVyLmJvbGluZ0BnbWFpbC5jb20wDQYJKoZIhvcNAQELBQAD\nggGBAJbnUwfJQFPkBgH9cL7hoBfRtmWiCvdqdjeTmi04u8zVNCUox0A4gT982DE9\nwmuN12LpdajxZONqbXuzZvc+nb0StFwmFYZG6iDwaf4BPywm2e/Vmq0YG45vZXGR\nL8yMDSK1cQXjmA+ZBKOHKWavxP6Vp7lWvjAhz8RFwqF9GuNIdhv9NpnCAWcMZtpm\nGUPyIWw/Cw/2wZp74QzZj6Npx+LdXoLTF1HMSJXZ7/pkxLCsB8m4EFVdb/IrW/0k\nkNSfjtAfBHO8nLGuqQZVH9IBD1i9K6aSs7pT6TW8itXUIlkIUI2tg5YzW6OFfPzq\nQekSkX3lZfY+HTSp/o+YvKkqWLUV7PQ7xh1ZYDtocpaHwgxe/j3bBqHE+CUPH2vA\n0V/FwdTRWcwsjVoOJTrYcff8pBZ8r2MvtAc54xfnnhGFzeRHfcltobgFxkAXdE6p\nDVjBtqT23eugOqQ73umLcYDZkc36vnqGxUBSsXrzY9pzV5gGr2I8YUxMqf6ATrZt\nL9nRqA==\n-----END CERTIFICATE-----\n".freeze] s.date = "1980-01-02" s.description = "\u23F3\uFE0F Mark specs pending or skipped for specific Ruby engine (e.g. MRI or JRuby) & versions, or version ranges. Fund overlooked open source projects - bottom of stack, dev/test dependencies: floss-funding.dev".freeze s.email = ["floss@galtzo.com".freeze] s.extra_rdoc_files = ["CHANGELOG.md".freeze, "CITATION.cff".freeze, "CODE_OF_CONDUCT.md".freeze, "CONTRIBUTING.md".freeze, "FUNDING.md".freeze, "LICENSE.txt".freeze, "README.md".freeze, "REEK".freeze, "RUBOCOP.md".freeze, "SECURITY.md".freeze] s.files = ["CHANGELOG.md".freeze, "CITATION.cff".freeze, "CODE_OF_CONDUCT.md".freeze, "CONTRIBUTING.md".freeze, "FUNDING.md".freeze, "LICENSE.txt".freeze, "README.md".freeze, "REEK".freeze, "RUBOCOP.md".freeze, "SECURITY.md".freeze, "lib/rspec-pending_for.rb".freeze, "lib/rspec/pending_for.rb".freeze, "lib/rspec/pending_for/build.rb".freeze, "lib/rspec/pending_for/engine_or_versions_required.rb".freeze, "lib/rspec/pending_for/rspec.rb".freeze, "lib/rspec/pending_for/version.rb".freeze, "sig/rspec/pending_for.rbs".freeze, "sig/rspec/pending_for/build.rbs".freeze] s.homepage = "https://github.com/galtzo-floss/rspec-pending_for".freeze s.licenses = ["MIT".freeze] s.rdoc_options = ["--title".freeze, "rspec-pending_for - \u23F3\uFE0F Mark specs pending or skipped for specified Ruby versions or engines".freeze, "--main".freeze, "README.md".freeze, "--exclude".freeze, "^sig/".freeze, "--line-numbers".freeze, "--inline-source".freeze, "--quiet".freeze] s.required_ruby_version = Gem::Requirement.new(">= 1.8.7".freeze) s.rubygems_version = "3.7.1".freeze s.summary = "\u23F3\uFE0F Mark specs pending or skipped for specified Ruby versions or engines".freeze s.specification_version = 4 s.add_development_dependency(%q.freeze, ["~> 3.0".freeze]) s.add_development_dependency(%q.freeze, ["~> 0.9.2".freeze]) s.add_development_dependency(%q.freeze, ["~> 1.0".freeze, ">= 1.0.3".freeze]) s.add_development_dependency(%q.freeze, ["~> 1.0".freeze]) s.add_development_dependency(%q.freeze, ["~> 1.0".freeze]) s.add_development_dependency(%q.freeze, ["~> 13.0".freeze]) s.add_development_dependency(%q.freeze, ["~> 1.0".freeze, ">= 1.0.4".freeze]) s.add_runtime_dependency(%q.freeze, ["~> 3.0".freeze]) s.add_development_dependency(%q.freeze, ["~> 0.0".freeze, ">= 0.0.17".freeze]) s.add_development_dependency(%q.freeze, ["~> 1.13".freeze]) s.add_runtime_dependency(%q.freeze, ["~> 2.0".freeze]) s.add_runtime_dependency(%q.freeze, ["~> 1.0".freeze]) s.add_development_dependency(%q.freeze, ["~> 1.0".freeze, ">= 1.0.2".freeze]) s.add_runtime_dependency(%q.freeze, ["~> 1.1".freeze, ">= 1.1.8".freeze]) end rspec-pending_for-0.1.19/checksums.yaml.gz.sig0000444000004100000410000000060015060261576021311 0ustar www-datawww-data.Z.85fp{ٙd75#R 6:Zz<++ tl"Q@WUyC|yv?2>öڥf*R&SpP&c01,p(킬Η[ B 5:5]3޳JUl+H?3;䳜8Ɣ6Wq<{C16!` CL\4]Y!O[:ޘ.s*t ]lU!Np;z~ʇ]z3;$׾`_zÇQ#yyzrB(|9tV ~ d8'4}?s;ژrspec-pending_for-0.1.19/CODE_OF_CONDUCT.md0000644000004100000410000001311615060261576020047 0ustar www-datawww-data# Contributor Covenant Code of Conduct ## Our Pledge We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation. We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. ## Our Standards Examples of behavior that contributes to a positive environment for our community include: * Demonstrating empathy and kindness toward other people * Being respectful of differing opinions, viewpoints, and experiences * Giving and gracefully accepting constructive feedback * Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience * Focusing on what is best not just for us as individuals, but for the overall community Examples of unacceptable behavior include: * The use of sexualized language or imagery, and sexual attention or advances of any kind * Trolling, insulting or derogatory comments, and personal or political attacks * Public or private harassment * Publishing others' private information, such as a physical or email address, without their explicit permission * Other conduct which could reasonably be considered inappropriate in a professional setting ## Enforcement Responsibilities Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful. Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate. ## Scope This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official email address, posting via an official social media account, or acting as an appointed representative at an online or offline event. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact]. All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the reporter of any incident. ## Enforcement Guidelines Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct: ### 1. Correction **Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. **Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested. ### 2. Warning **Community Impact**: A violation through a single incident or series of actions. **Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban. ### 3. Temporary Ban **Community Impact**: A serious violation of community standards, including sustained inappropriate behavior. **Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. ### 4. Permanent Ban **Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. **Consequence**: A permanent ban from any sort of public interaction within the community. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder][Mozilla CoC]. For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at [https://www.contributor-covenant.org/translations][translations]. [homepage]: https://www.contributor-covenant.org [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html [Mozilla CoC]: https://github.com/mozilla/diversity [FAQ]: https://www.contributor-covenant.org/faq [translations]: https://www.contributor-covenant.org/translations [🚂maint-contact]: http://www.railsbling.com/contact [🚂maint-contact-img]: https://img.shields.io/badge/Contact-Maintainer-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red rspec-pending_for-0.1.19/data.tar.gz.sig0000444000004100000410000000060015060261576020061 0ustar www-datawww-dataB{AmC8}\Luٻ5E׮Y DĻR\ = ɍaI!!3y#zsP]K ӨJ47_$`|Aӑ\?T5"r]Lpq ]ubonom} d wsSL딂nfM7&oJQ(ZqB qA: ԠU9K#W'ТHvc6j: H c=!c824F+XlS^yvJ_jT]}jso G27Fz( P.YEPQDz3Of0m* ]Q9m  QfѦ &rspec-pending_for-0.1.19/REEK0000644000004100000410000000000015060261576015705 0ustar www-datawww-datarspec-pending_for-0.1.19/metadata.gz.sig0000444000004100000410000000060015060261576020143 0ustar www-datawww-data:sZ%0aN%Z.1{"Bհm['N&!+Sj"vO`Y#MzjYW:(lEIzbFpd-N8zq& rH4mOUcN[6V.`+-͟/ J0]]CG~O~܌42"%b3PWt1 =Bsi6FbB"tr1Ld'hXi2:@8_QH:iE.?.sɼ6V<2΄{(=r?yQoK=^Q8tV4 rspec-pending_for-0.1.19/README.md0000644000004100000410000013727015060261576016537 0ustar www-datawww-data[![Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0][🖼️galtzo-i]][🖼️galtzo-discord] [![ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5][🖼️ruby-lang-i]][🖼️ruby-lang] [![rspec-pending_for Logo by Aboling0, CC BY-SA 4.0][🖼️rspec-pending_for-i]][🖼️rspec-pending_for] [🖼️galtzo-i]: https://logos.galtzo.com/assets/images/galtzo-floss/avatar-192px.svg [🖼️galtzo-discord]: https://discord.gg/3qme4XHNKN [🖼️ruby-lang-i]: https://logos.galtzo.com/assets/images/ruby-lang/avatar-192px.svg [🖼️ruby-lang]: https://www.ruby-lang.org/ [🖼️rspec-pending_for-i]: https://logos.galtzo.com/assets/images/galtzo-floss/rspec-pending_for/avatar-192px.svg [🖼️rspec-pending_for]: https://github.com/galtzo-floss/rspec-pending_for # ⏳️ Rspec::PendingFor [![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![Open Source Helpers][👽oss-helpi]][👽oss-help] [![CodeCov Test Coverage][🔑codecovi]][🔑codecov] [![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls] [![QLTY Test Coverage][🔑qlty-covi]][🔑qlty-cov] [![QLTY Maintainability][🔑qlty-mnti]][🔑qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Supported][🚎6-s-wfi]][🚎6-s-wf] [![CI Legacy][🚎4-lg-wfi]][🚎4-lg-wf] [![CI Unsupported][🚎7-us-wfi]][🚎7-us-wf] [![CI Ancient][🚎1-an-wfi]][🚎1-an-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![CodeQL][🖐codeQL-img]][🖐codeQL] If ☝️ `ci_badges.map(&:color).detect { it != "green"}` [let me know][🖼️galtzo-discord], as I may have missed the [discord notification][🖼️galtzo-discord]. --- OTOH, if `ci_badges.map(&:color).all? { it == "green"}` 👇️ send money so I can do more of this. FLOSS maintenance is now my full-time job. [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon] ## 🌻 Synopsis You can do this: ```ruby it("blah is blah") do pending_for(:engine => "rbx") pending_for(:engine => "truffleruby") pending_for(:engine => "ruby", :versions => "2.1.5") pending_for(:engine => "jruby", :versions => "2.2.2", :reason => "due to a bug in Ruby") pending_for(:engine => "ruby", :versions => "2.0.0", :reason => "because I don't have the time") expect("blah").to(eq("blah")) end ``` I expect the current release of this gem to be compatible with Ruby 1.8.7+, but it is only tested on CI against Ruby 2.3+, due to the inherent limitations of GitHub Actions. | 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 | |------------------------------------------------|--------------------------------------------------------------------------------------| | 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2](https://github.com/appraisal-rb/appraisal2) ✨ | ## 💡 Info you can shake a stick at | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] | |-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Works with JRuby | ![JRuby 9.1 Compat][💎jruby-9.1i] ![JRuby 9.2 Compat][💎jruby-9.2i] ![JRuby 9.3 Compat][💎jruby-9.3i]
[![JRuby 9.4 Compat][💎jruby-9.4i]][🚎10-j-wf] [![JRuby 10.0 Compat][💎jruby-c-i]][🚎11-c-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf] | | Works with Truffle Ruby | ![Truffle Ruby 22.3 Compat][💎truby-22.3i] ![Truffle Ruby 23.0 Compat][💎truby-23.0i]
[![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎9-t-wf] [![Truffle Ruby 24.1 Compat][💎truby-c-i]][🚎11-c-wf] | | Works with MRI Ruby 3 | [![Ruby 3.0 Compat][💎ruby-3.0i]][🚎4-lg-wf] [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎6-s-wf] [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎6-s-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎6-s-wf] [![Ruby 3.4 Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf] | | Works with MRI Ruby 2 | ![Ruby 2.0 Compat][💎ruby-2.0i] ![Ruby 2.1 Compat][💎ruby-2.1i] ![Ruby 2.2 Compat][💎ruby-2.2i]
[![Ruby 2.3 Compat][💎ruby-2.3i]][🚎1-an-wf] [![Ruby 2.4 Compat][💎ruby-2.4i]][🚎1-an-wf] [![Ruby 2.5 Compat][💎ruby-2.5i]][🚎1-an-wf] [![Ruby 2.6 Compat][💎ruby-2.6i]][🚎7-us-wf] [![Ruby 2.7 Compat][💎ruby-2.7i]][🚎7-us-wf] | | Works with MRI Ruby 1 | ![Ruby 1.9 Compat][💎ruby-1.9i] | | Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] | | Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![Wiki][📜wiki-img]][📜wiki] | | Compliance | [![License: MIT][📄license-img]][📄license-ref] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] | | Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] | | Support | [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] | | Maintainer 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] | | `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼‍♂️aboutme-img]][💖💁🏼‍♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab] | ### Compatibility Compatible with MRI Ruby 2.3+, and concordant releases of JRuby, and TruffleRuby. | 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 | |------------------------------------------------|-------------------------------------------------------------------------------------| | 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2][💎appraisal2] ✨ | ### Federated DVCS
Find this repo on other forges | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions | |-------------------------------------------------|-----------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------| | 🧪 [galtzo-floss/rspec-pending_for on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜wiki] | 🏀 Tiny Matrix | ➖ | | 🧊 [galtzo-floss/rspec-pending_for on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ | | 🐙 [galtzo-floss/rspec-pending_for on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | ➖ | 💯 Full Matrix | [💚][gh-discussions] | | 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
[gh-discussions]: https://github.com/galtzo-floss/rspec-pending_for/discussions ### Enterprise Support [![Tidelift](https://tidelift.com/badges/package/rubygems/rspec-pending_for)](https://tidelift.com/subscription/pkg/rubygems-rspec-pending_for?utm_source=rubygems-rspec-pending_for&utm_medium=referral&utm_campaign=readme) Available as part of the Tidelift Subscription.
Need enterprise-level guarantees? The maintainers of this and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact packages you use. [![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift] - 💡Subscribe for support guarantees covering _all_ your FLOSS dependencies - 💡Tidelift is part of [Sonar][🏙️entsup-tidelift-sonar] - 💡Tidelift pays maintainers to maintain the software you depend on!
📊`@`Pointy Haired Boss: An [enterprise support][🏙️entsup-tidelift] subscription is "[never gonna let you down][🧮kloc]", and *supports* open source maintainers Alternatively: - [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] - [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] - [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor]
## ✨ Installation Install the gem and add to the application's Gemfile by executing: ```console bundle add rspec-pending_for ``` If bundler is not being used to manage dependencies, install the gem by executing: ```console gem install rspec-pending_for ``` ### 🔒 Secure Installation
For Medium or High Security Installations This gem is cryptographically signed, and has verifiable [SHA-256 and SHA-512][💎SHA_checksums] checksums by [stone_checksums][💎stone_checksums]. Be sure the gem you install hasn’t been tampered with by following the instructions below. Add my public key (if you haven’t already, expires 2045-04-29) as a trusted certificate: ```console gem cert --add <(curl -Ls https://raw.github.com/galtzo-floss/certs/main/pboling.pem) ``` You only need to do that once. Then proceed to install with: ```console gem install rspec-pending_for -P HighSecurity ``` The `HighSecurity` trust profile will verify signed gems, and not allow the installation of unsigned dependencies. If you want to up your security game full-time: ```console bundle config set --global trust-policy MediumSecurity ``` `MediumSecurity` instead of `HighSecurity` is necessary if not all the gems you use are signed. NOTE: Be prepared to track down certs for signed gems and add them the same way you added mine.
## ⚙️ Configuration The gem autoconfigures itself for use in your Rspec suite. Just add this line to yous `spec_helper.rb`: ```ruby require "rspec/pending_for" ``` ## 🔧 Basic Usage To mark a spec pending for a specific ruby engine, and/or versions: ```ruby it("blah is blah") do pending_for(:engine => "ruby", :versions => "2.1.5") expect("blah").to(eq("blah")) end ``` To skip a spec for a specific ruby engine, and/or versions: ```ruby it("blah is blah") do skip_for(:engine => "ruby", :versions => "2.1.5") expect("blah").to(eq("blah")) end ``` To mark a spec pending for all versions of a given engine: ```ruby it("blah is blah") do pending_for(:engine => "jruby") expect("blah").to(eq("blah")) end ``` To mark a spec pending for a custom reason (overriding the default message): ```ruby it("blah is blah") do pending_for(:engine => "jruby", :reason => "This does not work on JRuby") expect("blah").to(eq("blah")) end ``` To mark a spec pending or skipped for multiple engines and versions, just what you would expect: ```ruby it("blah is blah") do skip_for(:engine => "jruby", :reason => "This does not work on JRuby so skipping for now") # All JRuby versions will be skipped pending_for(:engine => "rbx", :reason => "This does not work on Rubinius so pending for now") # All rbx versions will be pending pending_for(:engine => "ruby", :versions => %w(1.9.3 2.0.0 2.1.0)) # uses the default message expect("blah").to(eq("blah")) end ``` ### 📦 Specifying versions: supported forms and examples The :versions option accepts several forms. You can also omit :engine to match any engine. The library compares using RubyVersion and Gem::Version rules and supports MRI, JRuby, and TruffleRuby. Supported forms for :versions: - String: exact match to RUBY_VERSION, e.g., "3.2.4". - Array of strings or ranges: any entry that matches will trigger pending/skip. - Range of Gem::Version: inclusive/exclusive endpoints are respected. - Range of Integer: compares only the major version (e.g., 2..3 matches Ruby 2.x and 3.x depending on inclusive/exclusive). Notes: - If :engine is omitted, the version spec applies to whatever Ruby engine is running. - If :versions is omitted and :engine is provided, all versions for that engine are matched. - JRuby and TruffleRuby are matched using their RUBY_VERSION compatibility for Integer and Gem::Version ranges. - Strings must either match the full version string exactly, or only specify a partial version. - there is no parsing of comparison operators like ">= 3.1". - Specifying "3.1" will match "3.1.x", but not "3.0.x" or "3.2.x". - Specifying "3" will match "3.0.x", "3.1.x", "3.2.x", etc, but not "2.7.x" or "4.0.x". Examples 1) Exact version string ```ruby it "pend only on Ruby 3.2.4" do pending_for(:engine => :ruby, :versions => "3.2.4") # ... end ``` 2) Multiple exact versions ```ruby it "pend on a set of MRI versions" do pending_for(:engine => :ruby, :versions => %w[2.7.10 3.0.7 3.1.6]) end ``` 3) Match any engine by version (no :engine) ```ruby it "skip on any engine if the Ruby version equals 2.7.8" do skip_for(:versions => "2.7.8", :reason => "Known upstream incompatibility on this patch release") end ``` 4) Range of Gem::Version (inclusive) ```ruby it "pend for MRI >= 2.6.0 and <= 3.0.0" do pending_for( :engine => :ruby, :versions => (Gem::Version.new("2.6.0")..Gem::Version.new("3.0.0")), ) end ``` 5) Range of Gem::Version (exclusive end) ```ruby it "skip for MRI >= 3.1.0 and < 3.3.0" do skip_for( :engine => :ruby, :versions => (Gem::Version.new("3.1.0")...Gem::Version.new("3.3.0")), ) end ``` 6) Range of Integer (major versions) ```ruby it "pend on all Ruby 2.x and 3.x" do pending_for(:versions => (2..3), :reason => "Major series currently affected") end it "skip on Ruby 2.x but not 3.x" do skip_for(:versions => (2...3)) # 2 <= version < 3 end ``` Edge cases and tips - If you pass a mismatched Range (e.g., begin/end types differ), the library will attempt cover? with string comparison, which typically won’t match; prefer the supported forms above. - Provide :reason to override the default message in your reports. - Engines recognized include: "ruby" (MRI), "jruby", "truffleruby", plus historical ones like "rbx". Unknown engines will emit a warning. ### Using with RSpec tags rspec-pending_for plays nicely with RSpec metadata tags. You can auto-skip or auto-pend examples based on tags via a before hook. This example also demonstrates the array form for :versions using %w[]: ```ruby require "rspec/pending_for" RSpec.configure do |config| config.include(Rspec::PendingFor) # Auto-skip examples that require Bundler >= 2.7 (which implies Ruby >= 3.2) config.before(:each, :bundler_27_only) do # Skip on Ruby < 3.2 using rspec-pending_for's version matcher skip_for( :reason => "Requires Bundler >= 2.7 which is unavailable on Ruby < 3.2", :versions => %w[2.3 2.4 2.5 2.6 2.7 3.0 3.1], ) end end RSpec.describe("something") do it "runs only where Bundler 2.7+ is available", :bundler_27_only do # ... your example code ... end end ``` Notes: - The tag :bundler_27_only can be applied to individual examples or groups. - The versions array is matched against RUBY_VERSION (e.g., 3.1.x) when :engine is omitted. - Use :reason to make the report message explicit. ### Environment Variables Below are the primary environment variables recognized by rspec-pending_for (and its integrated tools). Unless otherwise noted, set boolean values to the string "true" to enable. General/runtime - DEBUG: Enable extra internal logging for this library (default: false) - REQUIRE_BENCH: Enable `require_bench` to profile requires (default: false) - CI: When set to true, adjusts default rake tasks toward CI behavior Coverage (kettle-soup-cover / SimpleCov) - K_SOUP_COV_DO: Enable coverage collection (default: true in .envrc) - K_SOUP_COV_FORMATTERS: Comma-separated list of formatters (html, xml, rcov, lcov, json, tty) - K_SOUP_COV_MIN_LINE: Minimum line coverage threshold (integer, e.g., 100) - K_SOUP_COV_MIN_BRANCH: Minimum branch coverage threshold (integer, e.g., 100) - K_SOUP_COV_MIN_HARD: Fail the run if thresholds are not met (true/false) - K_SOUP_COV_MULTI_FORMATTERS: Enable multiple formatters at once (true/false) - K_SOUP_COV_OPEN_BIN: Path to browser opener for HTML (empty disables auto-open) - MAX_ROWS: Limit console output rows for simplecov-console (e.g., 1) Tip: When running a single spec file locally, you may want `K_SOUP_COV_MIN_HARD=false` to avoid failing thresholds for a partial run. GitHub API and CI helpers - GITHUB_TOKEN or GH_TOKEN: Token used by `ci:act` and release workflow checks to query GitHub Actions status at higher rate limits Releasing and signing - SKIP_GEM_SIGNING: If set, skip gem signing during build/release - GEM_CERT_USER: Username for selecting your public cert in `certs/.pem` (defaults to $USER) - SOURCE_DATE_EPOCH: Reproducible build timestamp. `kettle-release` will set this automatically for the session. Git hooks and commit message helpers (exe/kettle-commit-msg) - GIT_HOOK_BRANCH_VALIDATE: Branch name validation mode (e.g., `jira`) or `false` to disable - GIT_HOOK_FOOTER_APPEND: Append a footer to commit messages when goalie allows (true/false) - GIT_HOOK_FOOTER_SENTINEL: Required when footer append is enabled — a unique first-line sentinel to prevent duplicates - GIT_HOOK_FOOTER_APPEND_DEBUG: Extra debug output in the footer template (true/false) For a quick starting point, this repository’s `.envrc` shows sane defaults, and `.env.local` can override them locally. ## 🦷 FLOSS Funding While galtzo-floss tools are free software and will always be, the project would benefit immensely from some funding. Raising a monthly budget of... "dollars" would make the project more sustainable. We welcome both individual and corporate sponsors! We also offer a wide array of funding channels to account for your preferences (although currently [Open Collective][🖇osc] is our preferred funding platform). **If you're working in a company that's making significant use of galtzo-floss tools we'd appreciate it if you suggest to your company to become a galtzo-floss sponsor.** You can support the development of galtzo-floss tools via [GitHub Sponsors][🖇sponsor], [Liberapay][⛳liberapay], [PayPal][🖇paypal], [Open Collective][🖇osc] and [Tidelift][🏙️entsup-tidelift]. | 📍 NOTE | |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | If doing a sponsorship in the form of donation is problematic for your company
from an accounting standpoint, we'd recommend the use of Tidelift,
where you can get a support-like subscription instead. | ### Open Collective for Individuals No backers yet. Be the first! Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/galtzo-floss#backer)] ### Open Collective for Organizations No sponsors yet. Be the first! Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/galtzo-floss#sponsor)] ### Another way to support open-source > How wonderful it is that nobody need wait a single moment before starting to improve the world.
>—Anne Frank I’m driven by a passion to foster a thriving open-source community – a space where people can tackle complex problems, no matter how small. Revitalizing libraries that have fallen into disrepair, and building new libraries focused on solving real-world challenges, are my passions — totaling 79 hours of FLOSS coding over just the past seven days, a pretty regular week for me. I was recently affected by layoffs, and the tech jobs market is unwelcoming. I’m reaching out here because your support would significantly aid my efforts to provide for my family, and my farm (11 🐔 chickens, 2 🐶 dogs, 3 🐰 rabbits, 8 🐈‍ cats). If you work at a company that uses my work, please encourage them to support me as a corporate sponsor. My work on gems you use might show up in `bundle fund`. I’m developing a new library, [floss_funding][🖇floss-funding-gem], designed to empower open-source developers like myself to get paid for the work we do, in a sustainable way. Please give it a look. **[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags** [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS or refugee efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS or refugee efforts using Patreon][🖇patreon-img]][🖇patreon] ## 🔐 Security See [SECURITY.md][🔐security]. ## 🤝 Contributing If you need some ideas of where to help, you could work on adding more code coverage, or if it is already 💯 (see [below](#code-coverage)) check [reek](REEK), [issues][🤝gh-issues], or [PRs][🤝gh-pulls], or use the gem and think about how it could be better. We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it. See [CONTRIBUTING.md][🤝contributing] for more detailed instructions. ### 🚀 Release Instructions See [CONTRIBUTING.md][🤝contributing]. ### Code Coverage [![Coverage Graph][🔑codecov-g]][🔑codecov] [![Coveralls Test Coverage][🔑coveralls-img]][🔑coveralls] [![QLTY Test Coverage][🔑qlty-covi]][🔑qlty-cov] ### 🪇 Code of Conduct Everyone interacting with this project's codebases, issue trackers, chat rooms and mailing lists agrees to follow the [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct]. ## 🌈 Contributors [![Contributors][🖐contributors-img]][🖐contributors] Made with [contributors-img][🖐contrib-rocks]. Also see GitLab Contributors: [https://gitlab.com/galtzo-floss/rspec-pending_for/-/graphs/main][🚎contributors-gl]
⭐️ Star History Star History Chart
## 📌 Versioning This Library adheres to [![Semantic Versioning 2.0.0][📌semver-img]][📌semver]. Violations of this scheme should be reported as bugs. Specifically, if a minor or patch version is released that breaks backward compatibility, a new version should be immediately released that restores compatibility. Breaking changes to the public API will only be introduced with new major versions. > dropping support for a platform is both obviously and objectively a breaking change
>—Jordan Harband ([@ljharb](https://github.com/ljharb), maintainer of SemVer) [in SemVer issue 716][📌semver-breaking] I understand that policy doesn't work universally ("exceptions to every rule!"), but it is the policy here. As such, in many cases it is good to specify a dependency on this library using the [Pessimistic Version Constraint][📌pvc] with two digits of precision. For example: ```ruby spec.add_dependency("rspec-pending_for", "~> 1.0") ```
📌 Is "Platform Support" part of the public API? More details inside. SemVer should, IMO, but doesn't explicitly, say that dropping support for specific Platforms is a *breaking change* to an API. It is obvious to many, but not all, and since the spec is silent, the bike shedding is endless. To get a better understanding of how SemVer is intended to work over a project's lifetime, read this article from the creator of SemVer: - ["Major Version Numbers are Not Sacred"][📌major-versions-not-sacred]
See [CHANGELOG.md][📌changelog] for a list of releases. ## 📄 License The gem is available as open source under the terms of the [MIT License][📄license] [![License: MIT][📄license-img]][📄license-ref]. See [LICENSE.txt][📄license] for the official [Copyright Notice][📄copyright-notice-explainer]. ### © Copyright
  • Copyright (c) 2015-2018, 2020-2022, 2025 Peter H. Boling, of Galtzo.com Galtzo.com Logo (Wordless) by Aboling0, CC BY-SA 4.0 , and rspec-pending_for contributors.
## 🤑 A request for help Maintainers have teeth and need to pay their dentists. After getting laid off in an RIF in March and filled with many dozens of rejections, I'm now spending ~60+ hours a week building open source tools. I'm hoping to be able to pay for my kids' health insurance this month, so if you value the work I am doing, I need your support. Please consider sponsoring me or the project. To join the community or get help 👇️ Join the Discord. [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] To say "thanks for maintaining such a great tool" ☝️ Join the Discord or 👇️ send money. [![Sponsor galtzo-floss/rspec-pending_for on Open Source Collective][🖇osc-all-bottom-img]][🖇osc] 💌 [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay-img] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal-img] ### Please give the project a star ⭐ ♥. Thanks for RTFM. ☺️ [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat [⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611 [⛳liberapay]: https://liberapay.com/pboling/donate [🖇osc-all-img]: https://img.shields.io/opencollective/all/galtzo-floss [🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss [🖇osc-backers-img]: https://img.shields.io/opencollective/backers/galtzo-floss [🖇osc-backers]: https://opencollective.com/galtzo-floss#backer [🖇osc-backers-i]: https://opencollective.com/galtzo-floss/backers/badge.svg?style=flat [🖇osc-sponsors]: https://opencollective.com/galtzo-floss#sponsor [🖇osc-sponsors-i]: https://opencollective.com/galtzo-floss/sponsors/badge.svg?style=flat [🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/galtzo-floss?style=for-the-badge [🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/galtzo-floss?style=for-the-badge [🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/galtzo-floss?style=for-the-badge [🖇osc]: https://opencollective.com/galtzo-floss [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github [🖇sponsor]: https://github.com/sponsors/pboling [🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat [🖇polar]: https://polar.sh/pboling [🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat [🖇kofi]: https://ko-fi.com/O5O86SNP4 [🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat [🖇patreon]: https://patreon.com/galtzo [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat [🖇buyme-img]: https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20latte&emoji=&slug=pboling&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff [🖇buyme]: https://www.buymeacoffee.com/pboling [🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal [🖇paypal-bottom-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=for-the-badge&logo=paypal&color=0A0A0A [🖇paypal]: https://www.paypal.com/paypalme/peterboling [🖇floss-funding.dev]: https://floss-funding.dev [🖇floss-funding-gem]: https://github.com/galtzo-floss/floss_funding [✉️discord-invite]: https://discord.gg/3qme4XHNKN [✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780 [⛳️gem-namespace]: https://github.com/galtzo-floss/rspec-pending_for [⛳️namespace-img]: https://img.shields.io/badge/namespace-Rspec::PendingFor-3C2D2D.svg?style=square&logo=ruby&logoColor=white [⛳️gem-name]: https://rubygems.org/gems/rspec-pending_for [⛳️name-img]: https://img.shields.io/badge/name-rspec--pending__for-3C2D2D.svg?style=square&logo=rubygems&logoColor=red [⛳️tag-img]: https://img.shields.io/github/tag/galtzo-floss/rspec-pending_for.svg [⛳️tag]: http://github.com/galtzo-floss/rspec-pending_for/releases [🚂maint-blog]: http://www.railsbling.com/tags/rspec-pending_for [🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange [🚂maint-contact]: http://www.railsbling.com/contact [🚂maint-contact-img]: https://img.shields.io/badge/Contact-Maintainer-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red [💖🖇linkedin]: http://www.linkedin.com/in/peterboling [💖🖇linkedin-img]: https://img.shields.io/badge/PeterBoling-LinkedIn-0B66C2?style=flat&logo=newjapanprowrestling [💖✌️wellfound]: https://wellfound.com/u/peter-boling [💖✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=flat&logo=wellfound [💖💲crunchbase]: https://www.crunchbase.com/person/peter-boling [💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase [💖🐘ruby-mast]: https://ruby.social/@galtzo [💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https://ruby.social&style=flat&logo=mastodon&label=Ruby%20@galtzo [💖🦋bluesky]: https://bsky.app/profile/galtzo.com [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white [💖🌳linktree]: https://linktr.ee/galtzo [💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree [💖💁🏼‍♂️devto]: https://dev.to/galtzo [💖💁🏼‍♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white [💖💁🏼‍♂️aboutme]: https://about.me/peter.boling [💖💁🏼‍♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white [💖🧊berg]: https://codeberg.org/pboling [💖🐙hub]: https://github.org/pboling [💖🛖hut]: https://sr.ht/~galtzo/ [💖🧪lab]: https://gitlab.com/pboling [👨🏼‍🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github [👨🏼‍🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white [🏙️entsup-tidelift]: https://tidelift.com/subscription/pkg/rubygems-rspec-pending_for?utm_source=rubygems-rspec-pending_for&utm_medium=referral&utm_campaign=readme [🏙️entsup-tidelift-img]: https://img.shields.io/badge/Tidelift_and_Sonar-Enterprise_Support-FD3456?style=for-the-badge&logo=sonar&logoColor=white [🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar [💁🏼‍♂️peterboling]: http://www.peterboling.com [🚂railsbling]: http://www.railsbling.com [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange [📜src-gl]: https://gitlab.com/galtzo-floss/rspec-pending_for/ [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue [📜src-cb]: https://codeberg.org/galtzo-floss/rspec-pending_for [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green [📜src-gh]: https://github.com/galtzo-floss/rspec-pending_for [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white [📜wiki]: https://gitlab.com/galtzo-floss/rspec-pending_for/-/wikis/home [📜wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=Wiki&logoColor=white [👽dl-rank]: https://rubygems.org/gems/rspec-pending_for [👽dl-ranki]: https://img.shields.io/gem/rd/rspec-pending_for.svg [👽oss-help]: https://www.codetriage.com/galtzo-floss/rspec-pending_for [👽oss-helpi]: https://www.codetriage.com/galtzo-floss/rspec-pending_for/badges/users.svg [👽version]: https://rubygems.org/gems/rspec-pending_for [👽versioni]: https://img.shields.io/gem/v/rspec-pending_for.svg [🔑qlty-mnt]: https://qlty.sh/gh/galtzo-floss/projects/rspec-pending_for [🔑qlty-mnti]: https://qlty.sh/gh/galtzo-floss/projects/rspec-pending_for/maintainability.svg [🔑qlty-cov]: https://qlty.sh/gh/galtzo-floss/projects/rspec-pending_for/metrics/code?sort=coverageRating [🔑qlty-covi]: https://qlty.sh/gh/galtzo-floss/projects/rspec-pending_for/coverage.svg [🔑codecov]: https://codecov.io/gh/galtzo-floss/rspec-pending_for [🔑codecovi]: https://codecov.io/gh/galtzo-floss/rspec-pending_for/graph/badge.svg [🔑coveralls]: https://coveralls.io/github/galtzo-floss/rspec-pending_for?branch=main [🔑coveralls-img]: https://coveralls.io/repos/github/galtzo-floss/rspec-pending_for/badge.svg?branch=main [🖐codeQL]: https://github.com/galtzo-floss/rspec-pending_for/security/code-scanning [🖐codeQL-img]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/codeql-analysis.yml/badge.svg [🚎1-an-wf]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/ancient.yml [🚎1-an-wfi]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/ancient.yml/badge.svg [🚎2-cov-wf]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/coverage.yml [🚎2-cov-wfi]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/coverage.yml/badge.svg [🚎3-hd-wf]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/heads.yml [🚎3-hd-wfi]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/heads.yml/badge.svg [🚎4-lg-wf]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/legacy.yml [🚎4-lg-wfi]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/legacy.yml/badge.svg [🚎5-st-wf]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/style.yml [🚎5-st-wfi]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/style.yml/badge.svg [🚎6-s-wf]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/supported.yml [🚎6-s-wfi]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/supported.yml/badge.svg [🚎7-us-wf]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/unsupported.yml [🚎7-us-wfi]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/unsupported.yml/badge.svg [🚎8-ho-wf]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/hoary.yml [🚎8-ho-wfi]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/hoary.yml/badge.svg [🚎9-t-wf]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/truffle.yml [🚎9-t-wfi]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/truffle.yml/badge.svg [🚎10-j-wf]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/jruby.yml [🚎10-j-wfi]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/jruby.yml/badge.svg [🚎11-c-wf]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/current.yml [🚎11-c-wfi]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/current.yml/badge.svg [🚎13-🔒️-wf]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/locked_deps.yml [🚎13-🔒️-wfi]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/locked_deps.yml/badge.svg [🚎14-🔓️-wf]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/unlocked_deps.yml [🚎14-🔓️-wfi]: https://github.com/galtzo-floss/rspec-pending_for/actions/workflows/unlocked_deps.yml/badge.svg [💎ruby-1.9i]: https://img.shields.io/badge/Ruby-1.9_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white [💎ruby-2.0i]: https://img.shields.io/badge/Ruby-2.0_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white [💎ruby-2.1i]: https://img.shields.io/badge/Ruby-2.1_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white [💎ruby-2.2i]: https://img.shields.io/badge/Ruby-2.2_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=white [💎ruby-2.3i]: https://img.shields.io/badge/Ruby-2.3-DF00CA?style=for-the-badge&logo=ruby&logoColor=white [💎ruby-2.4i]: https://img.shields.io/badge/Ruby-2.4-DF00CA?style=for-the-badge&logo=ruby&logoColor=white [💎ruby-2.5i]: https://img.shields.io/badge/Ruby-2.5-DF00CA?style=for-the-badge&logo=ruby&logoColor=white [💎ruby-2.6i]: https://img.shields.io/badge/Ruby-2.6-DF00CA?style=for-the-badge&logo=ruby&logoColor=white [💎ruby-2.7i]: https://img.shields.io/badge/Ruby-2.7-DF00CA?style=for-the-badge&logo=ruby&logoColor=white [💎ruby-3.0i]: https://img.shields.io/badge/Ruby-3.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white [💎ruby-3.1i]: https://img.shields.io/badge/Ruby-3.1-CC342D?style=for-the-badge&logo=ruby&logoColor=white [💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white [💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue [💎truby-22.3i]: https://img.shields.io/badge/Truffle_Ruby-22.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=pink [💎truby-23.0i]: https://img.shields.io/badge/Truffle_Ruby-23.0_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=pink [💎truby-23.1i]: https://img.shields.io/badge/Truffle_Ruby-23.1-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green [💎truby-headi]: https://img.shields.io/badge/Truffle_Ruby-HEAD-34BCB1?style=for-the-badge&logo=ruby&logoColor=blue [💎jruby-9.1i]: https://img.shields.io/badge/JRuby-9.1_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red [💎jruby-9.2i]: https://img.shields.io/badge/JRuby-9.2_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red [💎jruby-9.3i]: https://img.shields.io/badge/JRuby-9.3_(%F0%9F%9A%ABCI)-AABBCC?style=for-the-badge&logo=ruby&logoColor=red [💎jruby-9.4i]: https://img.shields.io/badge/JRuby-9.4-FBE742?style=for-the-badge&logo=ruby&logoColor=red [💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green [💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue [🤝gh-issues]: https://github.com/galtzo-floss/rspec-pending_for/issues [🤝gh-pulls]: https://github.com/galtzo-floss/rspec-pending_for/pulls [🤝gl-issues]: https://gitlab.com/galtzo-floss/rspec-pending_for/-/issues [🤝gl-pulls]: https://gitlab.com/galtzo-floss/rspec-pending_for/-/merge_requests [🤝cb-issues]: https://codeberg.org/galtzo-floss/rspec-pending_for/issues [🤝cb-pulls]: https://codeberg.org/galtzo-floss/rspec-pending_for/pulls [🤝cb-donate]: https://donate.codeberg.org/ [🤝contributing]: CONTRIBUTING.md [🔑codecov-g]: https://codecov.io/gh/galtzo-floss/rspec-pending_for/graphs/tree.svg [🖐contrib-rocks]: https://contrib.rocks [🖐contributors]: https://github.com/galtzo-floss/rspec-pending_for/graphs/contributors [🖐contributors-img]: https://contrib.rocks/image?repo=galtzo-floss/rspec-pending_for [🚎contributors-gl]: https://gitlab.com/galtzo-floss/rspec-pending_for/-/graphs/main [🪇conduct]: CODE_OF_CONDUCT.md [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint [📌semver]: https://semver.org/spec/v2.0.0.html [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139 [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html [📌changelog]: CHANGELOG.md [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat [📌gitmoji]:https://gitmoji.dev [📌gitmoji-img]:https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.096-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue [🔐security]: SECURITY.md [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year [📄license]: LICENSE.txt [📄license-ref]: https://opensource.org/licenses/MIT [📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat [🚎yard-current]: http://rubydoc.info/gems/rspec-pending_for [🚎yard-head]: https://rspec-pending-for.galtzo.com [💎stone_checksums]: https://github.com/galtzo-floss/stone_checksums [💎SHA_checksums]: https://gitlab.com/galtzo-floss/rspec-pending_for/-/tree/main/checksums [💎rlts]: https://github.com/rubocop-lts/rubocop-lts [💎rlts-img]: https://img.shields.io/badge/code_style_&_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white [💎appraisal2]: https://github.com/appraisal-rb/appraisal2 [💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white [💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/ rspec-pending_for-0.1.19/sig/0000755000004100000410000000000015060261576016030 5ustar www-datawww-datarspec-pending_for-0.1.19/sig/rspec/0000755000004100000410000000000015060261576017144 5ustar www-datawww-datarspec-pending_for-0.1.19/sig/rspec/pending_for.rbs0000644000004100000410000000031215060261576022142 0ustar www-datawww-datamodule Rspec module PendingFor # Public API mixed into RSpec def pending_for: (Hash[Symbol, untyped] options) -> untyped def skip_for: (Hash[Symbol, untyped] options) -> untyped end end rspec-pending_for-0.1.19/sig/rspec/pending_for/0000755000004100000410000000000015060261576021436 5ustar www-datawww-datarspec-pending_for-0.1.19/sig/rspec/pending_for/build.rbs0000644000004100000410000000071015060261576023243 0ustar www-datawww-datamodule Rspec module PendingFor class Build @message: String? @relevant_versions: Array[untyped] @relevant_engine: String? @reason: String? def initialize: (?Hash[Symbol, untyped] options) -> void def message: () -> String? def relevant_versions: () -> Array[untyped] def relevant_engine: () -> String? def reason: () -> String? def current_matches_specified?: () -> bool end end end rspec-pending_for-0.1.19/CHANGELOG.md0000644000004100000410000000541715060261576017066 0ustar www-datawww-data# Changelog [![SemVer 2.0.0][📌semver-img]][📌semver] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog][📗keep-changelog], and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html), and [yes][📌major-versions-not-sacred], platform and engine support are part of the [public API][📌semver-breaking]. Please file a bug if you notice a violation of semantic versioning. [📌semver]: https://semver.org/spec/v2.0.0.html [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-FFDD67.svg?style=flat [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139 [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-FFDD67.svg?style=flat ## [Unreleased] ### Added ### Changed ### Deprecated ### Removed ### Fixed ### Security ## [0.1.19] - 2025-09-05 - TAG: [v0.1.19][0.1.19t] - COVERAGE: 100.00% -- 96/96 lines in 6 files - BRANCH COVERAGE: 100.00% -- 41/41 branches in 6 files - 63.64% documented ### Added - comprehensive documentation and examples in README.md - support minor version shorthand matching - i.e., 3.2 will skip 3.2.8 ### Changed - issues link updated to new org home: galtzo-floss/rspec-pending_for - upgrade to kettle-dev v1.1.5 template ### Fixed - fixed handling of version ranges in `skip_for`/`pending_for` - release date in changelog - truffleruby compatibility without warnings about typo in engine name ## [0.1.18] - 2025-08-24 - TAG: [v0.1.8][0.1.18t] - COVERAGE: 100.00% -- 86/86 lines in 6 files - BRANCH COVERAGE: 100.00% -- 33/33 branches in 6 files - 63.64% documented ### Added - Versions can now be ranges! ## [0.1.17] - 2025-02-24 - TAG: [v0.1.7][0.1.17t] - COVERAGE: 98.44% -- 63/64 lines in 6 files - BRANCH COVERAGE: 94.44% -- 17/18 branches in 6 files - 63.64% documented ### Added - Specs for `skip_for` ### Fixed - Compatibility with truffleruby (maybe? not able to run it in CI yet) - Fixed compatibility with Ruby < 2 [Unreleased]: https://github.com/galtzo-floss/rspec-pending_for/compare/v0.1.19...HEAD [0.1.19]: https://github.com/galtzo-floss/rspec-pending_for/compare/v0.1.18...v0.1.19 [0.1.19t]: https://github.com/galtzo-floss/rspec-pending_for/releases/tag/v0.1.19 [0.1.18]: https://github.com/pboling/rspec-pending_for/compare/v0.1.17...v0.1.18 [0.1.18t]: https://github.com/pboling/rspec-pending_for/tags/v0.1.18 [0.1.17]: https://github.com/pboling/rspec-pending_for/compare/v0.1.16...v0.1.17 [0.1.17t]: https://github.com/pboling/rspec-pending_for/tags/v0.1.17