From 509d844cc8cf480d9a61c6b3c7dfe404082a2212 Mon Sep 17 00:00:00 2001 From: Kouhei Yanagita Date: Tue, 26 Nov 2024 11:58:56 +0900 Subject: [PATCH] Update rspec completion * Fix -I * Setting exclusive options * Configuring options that can be used multiple times * Add descriptions for each formatters --- src/_rspec | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/src/_rspec b/src/_rspec index 944b6ff..f5bbfb9 100644 --- a/src/_rspec +++ b/src/_rspec @@ -43,7 +43,7 @@ _rspec() { local context state line curcontext="$curcontext" _arguments -C \ - *'-I[Specify PATH to add to $LOAD_PATH (may be used more than once)]:PATH:_files -/' \ + '*-I[Specify PATH to add to $LOAD_PATH (may be used more than once)]:PATH:_files -/' \ '*'{-r,--require}'[Require a file]:PATH:_files' \ '*'{-O,--options}'[Specify the path to a custom options file]:PATH:_files' \ '--order[Run examples by the specified order type]: :->order' \ @@ -51,27 +51,28 @@ _rspec() { '--bisect[Repeatedly runs the suite in order to isolate the failures to the smallest reproducible case]' \ '--only-failures[Filter to just the examples that failed the last time they ran]' \ '(-n --next-failure)'{-n,--next-failure}'[Apply `--only-failures` and abort after one failure (equivalent to `--only-failures --fail-fast --order defined`)]' \ - '--fail-fast[Abort the run on first failure]' \ - '--no-fail-fast[Do not abort the run on first failure]' \ + '(--no-fail-fast)--fail-fast[Abort the run on first failure]' \ + '(--fail-fast)--no-fail-fast[Do not abort the run on first failure]' \ '--failure-exit-code[Override the exit code used when there are failing specs]: :_guard "[[\:digit\:]]#" "CODE"' \ '--error-exit-code[Override the exit code used when there are errors loading or running specs]:code' \ '--dry-run[Print the formatter output of your suite without running any examples or hooks]' \ '(-X --drb)'{-X,--drb}'[Run examples via DRb]' \ + '(-X --drb)--no-drb[Do not run examples via DRb]' \ '--drb-port[Port to connect to the DRb server]: :_guard "[[\:digit\:]]#" "PORT"' \ - '(-f --format)'{-f,--format}'[Choose a formatter]:FORMATTER:(progress documentation html json failures)' \ + '(-f --format)'{-f,--format}'[Choose a formatter]: :->format' \ '(-o --out)'{-o,--out}'[Write output to a file instead of $stdout]:FILE:_files' \ '--deprecation-out[Write deprecation warnings to a file instead of $stderr]:FILE:_files' \ '(-b --backtrace)'{-b,--backtrace}'[Enable full backtrace]' \ - '--force-color[Force the output to be in color, even if the output is not a TTY]' \ - '--no-color[Force the output to not be in color, even if the output is a TTY]' \ - '(-p --profile)'{-p,--profile}'[Enable profiling of examples and list the slowest examples (default: 10)]: :_guard "[[\:digit\:]]#" "COUNT"' \ - '--no-profile[Disable profiling of examples]' \ + '(--no-color)--force-color[Force the output to be in color, even if the output is not a TTY]' \ + '(--force-color)--no-color[Force the output to not be in color, even if the output is a TTY]' \ + '(-p --profile --no-profile)'{-p,--profile}'[Enable profiling of examples and list the slowest examples (default: 10)]: :_guard "[[\:digit\:]]#" "COUNT"' \ + '(-p --profile)--no-profile[Disable profiling of examples]' \ '(-w --warnings)'{-w,--warnings}'[Enable ruby warnings]' \ '(-P --pattern)'{-P,--pattern}'[Load files matching pattern (default: "spec/**/*_spec.rb")]:PATTERN:' \ '--exclude-pattern[Load files except those matching pattern]:PATTERN:' \ - '(-e --example)'{-e,--example}'[Run examples whose full nested names include STRING (may be used more than once)]:STRING:' \ - '(-E --example-matches)'{-E,--example-matches}'[Run examples whose full nested names match REGEX]:regex' \ - '(-t --tag)'{-t,--tag}'[Run examples with the specified tag, or exclude examples by adding ~ before the tag]: :->tag' \ + '*'{-e,--example}'[Run examples whose full nested names include STRING (may be used more than once)]:STRING:' \ + '*'{-E,--example-matches}'[Run examples whose full nested names match REGEX]:regex' \ + '*'{-t,--tag}'[Run examples with the specified tag, or exclude examples by adding ~ before the tag]: :->tag' \ '--default-path[Set the default path where RSpec looks for examples (can be a path to a file or a directory)]:PATH:_files' \ '(- *)--init[Initialize your project with RSpec]' \ '(- *)'{-h,--help}"[You're looking at it]" \ @@ -97,6 +98,14 @@ _rspec() { _message 'TAG[:VALUE]' fi ;; + format) + _values 'FORMATTER' \ + 'progress[dots (default)]' \ + 'documentation[group and example names]' \ + 'html[HTML]' \ + 'json[JSON]' \ + 'failures["file:line:reason", suitable for editors integration]' + ;; esac }