开发

完整变更日志

3.13.1 / 2024-09-02

完整变更日志

Bug 修复

  • 对 id 进行排序以按照原始顺序运行,以修复 --bisect。(Maki Kawahara, #3093)

3.13.0 / 2024-02-04

完整变更日志

增强功能

  • 在使用 JSON 格式化程序时支持 --backtrace 标志。(Matt Larraz, #2980)
  • 忽略 CLI 配置文件(例如 .rspec)中的注释行。(Junichi Ito, #2984)
  • 添加 pending_failure_output 配置选项,以允许跳过回溯或静默待定规范的输出。(Phil Pirozhkov, #2957)
  • 在读取文件的配置标志之前处理 --dry-run,以便内省它返回正确的值。(Xenor Chang, #3008)
  • 允许通过 --order 指定自定义排序策略。(Jon Rowe, #3025)
  • 在可用时,对 SyntaxError 使用改进的 syntax_suggest 输出。(Richard Schneeman, #3015, #3026)
  • 添加配置选项 (RSpec::Core::Configuration#full_cause_backtrace) 以打印异常原因的完整回溯。(David Taylor, #3046)

3.12.3 / 2024-02-04

完整变更日志

Bug 修复

  • 在输出包装器中使用 __send__ 以避免与像 Socket 一样实现 send 的 IO 对象有关的问题。(Richard Platel, #3045)

3.12.2 / 2023-04-18

完整变更日志

Bug 修复

  • 删除生成的输出中对过时文档的链接。(Jon Rowe, #3035)

3.12.1 / 2023-02-03

完整变更日志

Bug 修复

  • 防止在这些行已经包含空格的情况下,多次调用 extra_failure_lines 在它们周围添加额外的空格。(Jon Rowe, #3006)

3.12.0 / 2022-10-26

完整变更日志

  • 没有变化,发布以支持其他宝石。

3.11.0 / 2022-02-09

完整变更日志

增强功能

  • 改进以 s 结尾的单词(如 process)的复数形式。(Joshua Pinter, #2779)
  • 添加按文件修改时间排序(最近的排在最前面)。(Matheus Richard, #2778)
  • to_s 添加到 #let 和 #subject 的保留名称中。(Nick Flückiger, #2886)
  • 引入 RSpec.current_scope 以公开 RSpec 正在执行的当前范围。例如 :before_example_hook:example 等。(@odinhb, #2895)
  • 添加命名的粗体颜色作为自定义颜色的选项。(#2913,#2914)
  • 当发生 SystemExit 时发出警告(但不会阻止)。(Jared Beck, #2926)

3.10.2 / 2022-01-27

完整变更日志

Bug 修复

  • 确保 bisect 通信使用一致的编码。(Mike Jarema, #2852)
  • 修复根源异常的回溯为 nil 时异常呈现器。(Zinovyev Ivan, #2903)
  • 修复 RSpec::Core::Example::Procsyinspect 输出以正确命名空间。(Keiko Kaneko, #2915)
  • 确保不公开 #output 的格式化程序不会导致重复检查崩溃。(@niceking, #2916)

3.10.1 / 2020-12-27

完整变更日志

Bug 修复

  • RSpec 警告输出缺少来自 Ruby 的弃用,这些现在已包含在内。(Jon Rowe, #2811)

3.10.0 / 2020-10-30

完整变更日志

增强功能

  • 记忆 RSpec::Core::Formatters::ExceptionPresenter#exception_lines 以提高带有缓慢异常消息的性能。(Maxime Lapointe, #2743)
  • 添加错误退出代码的配置(通过退出状态区分错误构建与失败构建)。(Dana Sherson, #2749)

3.9.3 / 2020-09-30

完整变更日志

Bug 修复

  • method_missing 上声明 ruby2_keywords 以用于其他宝石。(Jon Rowe, #2731)
  • 确保从 bisect 运行中返回自定义错误代码。(Jon Rowe, #2732)
  • 确保 RSpec::Core::Configuration 谓词配置方法返回布尔值。(Marc-André Lafortune, #2736)
  • 防止 rspec --bisect 在执行 bisect 运行时生成僵尸进程。(Benoit Tigeot, Jon Rowe, #2739)
  • 待定示例的谓词(在 RSpec::Core::Example 中,#pending?#skipped?#pending_fixed?)现在返回布尔值而不是真值。(Marc-André Lafortune, #2756, #2758)
  • 消息无法转换为字符串的异常将不再导致崩溃。(Jon Rowe, #2761)

3.9.2 / 2020-05-02

完整变更日志

Bug 修复

  • around 钩子与 :context 范围一起使用时发出警告 (Phil Pirozhkov, #2687)
  • 防止 Exception#cause 的无效实现被视为有效原因(并导致 RSpec::Core::Formatters::ExceptionPresenter 中出现奇怪的错误)。(Jon Rowe, #2703)
  • RSpec::Core::RakeTask 中,当 rspec_opts 是数组时,正确检测模式。(Marc-André Lafortune, #2704)
  • 使 RSpec.clear_examples 重置示例组的示例计数。这修复了重新运行规范与 id 不匹配的问题。(Agis Anastasopoulos, #2723)

3.9.1 / 2019-12-28

完整变更日志

Bug 修复

  • 防止 bisect 命令在规范数量超过 OSX 或 Linux 上的文件描述符限制时阻塞。(Benoit Tigeot, #2669)
  • 防止在 Ruby 2.7.0 上发出警告。(Jon Rowe, #2680)

3.9.0 / 2019-10-07

完整变更日志

增强功能

  • 改进加载支持文件时错误的处理,如果文件在加载规范之前出现错误,RSpec 现在将跳过加载规范。(David Rodríguez, #2568)
  • 添加对 --example-matches 的支持,以通过正则表达式运行示例。(Sam Joseph, Matt Rider, @okothkongo1, #2586)
  • 为在示例之外遇到 LoadError 的文件名添加 did_you_mean 建议。(@obromios, #2601)
  • 添加一种极简的快速修复风格格式化程序,只输出失败,如 file:line:message。(Romain Tartière, #2614)
  • 将字符串数字值转换为整数,在 RSpec::Configuration#fail_fast 中使用时。(Viktor Fonic, #2634)
  • 当在 RSpec::Configuration#fail_fast 中使用无效值时发出警告。(Viktor Fonic, #2634)
  • 添加对在干净环境中运行 Rake 任务的支持。(Jon Rowe, #2632)
  • 在文档格式化程序中,通过示例组/示例缩进消息。(Samuel Williams, #2649)

3.8.2 / 2019-06-29

完整变更日志

Bug 修复

  • 修复 config.define_derived_metadata,以便在将元数据分配给示例或示例组之前不会触发级联 (Myron Marston, #2635)。

3.8.1 / 2019-06-13

完整变更日志

Bug 修复

  • 处理 CP932 编码文件中的日文字符的 RSpec 描述。(Benoit Tigeot, #2575)
  • 在定义覆盖现有方法的 let 方法时,通过删除旧定义来防止发出警告。(Jon Rowe, #2593)
  • 防止在 Ruby 2.6.0-rc1 上发出警告 (Keiji Yoshimi, #2582)
  • 修复 config.define_derived_metadata,使其支持级联。(Myron Marston, #2630)。

3.8.0 / 2018-08-04

完整变更日志

增强功能

  • 改进 RSpec::Core::RakeTask--bisect 使用的 shell 转义,使其在 Pathname 对象上工作。(Andrew Vit, #2479)
  • 以良好的格式显示加载 --require 选项指定的的文件时遇到的错误。(Myron Marston, #2504)
  • 通过用使用分叉的运行器替换基于 shell 的运行器,显着提高支持分叉的平台上 --bisect 的性能,以便 RSpec 和应用程序环境仅启动一次,而不是每次规范运行时启动一次。(Myron Marston, #2511)
  • 提供一个配置 API 来选择用于 --bisect 的 bisect 运行器。通过在命令行传递的 --require 选项加载的文件或在 .rspec 中设置的 config.bisect_runner = :shellconfig.bisect_runner = :fork 来选择运行器。(Myron Marston, #2511)
  • 支持 XDG Base Directory Specification 用于全局选项文件。当在 $XDG_CONFIG_HOME/rspec/options 中找不到选项文件时,仍然支持 ~/.rspec (Magnus Bergmark, #2538)
  • 提取 RSpec.world.prepare_example_filtering,它为自定义 RSpec 运行器设置示例过滤。(Oleg Pudeyev, #2552)

Bug 修复

  • 在使用两个相同的回溯截断回溯时,防止 ArgumentError。(Systho, #2515, Benoit Tigeot, #2539)

3.7.1 / 2018-01-02

完整变更日志

Bug 修复

  • 解决 Ruby 2.5 的延迟 proc 分配引入的重复配置钩子回归。(Myron Marston, #2497)

3.7.0 / 2017-10-17

完整变更日志

增强功能

  • 添加 -n 作为 --next-failure 的别名。(Ian Ker-Seymer, #2434)
  • 改进与 Ruby 2.3+ 上的 --enable-frozen-string-literal 选项的兼容性。(Pat Allan, #2425, #2427, #2437)
  • 不要为已跳过的示例组运行 :context 钩子。(Devon Estes, #2442)
  • errors_outside_of_examples_count 添加到 JSON 格式化程序。(Takeshi Arabiki, #2448)

Bug 修复

  • 改进与冻结字符串文字标志的兼容性。(#2425, Pat Allan)

3.6.0 / 2017-05-04

完整变更日志

增强功能

  • 将种子信息添加到 JSON 格式化程序输出中。(#2388, Mitsutaka Mimura)
  • 将示例 ID 包含在 JSON 格式化程序输出中。(#2369, Xavier Shay)
  • 在格式化程序设置后,尊重对 config.output_stream 的更改。(#2401, #2419, Ilya Lavrov)

Bug 修复

  • 延迟格式化程序加载到最后一刻,以允许在不触发格式化程序设置的情况下访问报告器。(Jon Rowe, #2243)
  • 确保在示例之前运行的上下文钩子失败可以访问报告器。(Jon Jensen, #2387)
  • 多个修复以允许在同一个进程中多次使用运行器:RSpec.clear_examples 重置格式化程序并且不再清除共享示例,并且流可以在多次运行中使用,而不是在第一次运行后关闭。(#2368, Xavier Shay)
  • 防止意外的 example_group_finished 通知导致错误。(#2396, VTJamie)
  • 修复当 config.when_first_matching_example_defined 钩子在某些情况下多次触发时出现的错误。(Yuji Nakayama, #2400)
  • 当持久性文件中的 status 字段包含无法识别的值时,将 last_run_status 默认为 "unknown"。(#2360, matrinox)
  • 防止 let 定义 initialize 方法。(#2414, Jon Rowe)

3.6.0.beta2 / 2016-12-12

完整变更日志

增强功能

  • 在默认摘要中包含在示例之外发生的错误的计数。(#2351, Jon Rowe)
  • 当递归地包含共享示例组时发出警告。(#2356, Jon Rowe)
  • 使用 CodeRay 改进失败片段的语法高亮显示,以突出显示 RSpec "关键字",如 expect。(#2358, Myron Marston)

3.6.0.beta1 / 2016-10-09

完整变更日志

增强功能

  • 当由于在匹配规范模式的文件(例如 _spec.rb)中定义而加载重复的共享示例定义时发出警告 (#2278, Devon Estes)
  • 改进元数据过滤,使其可以匹配实现 === 的任何对象,而不是将正则表达式视为特殊情况。(Myron Marston, #2294)
  • 改进 rspec -v,使其打印出 RSpec 每个部分的版本以防止混淆。(Myron Marston, #2304)
  • 添加 config.fail_if_no_examples 选项,如果未找到示例,则导致 RSpec 失败。(Ewa Czechowska, #2302)
  • 以良好的格式显示加载规范文件时遇到的错误。(Myron Marston, #2323)
  • 改进启用和禁用彩色输出的 API (Josh Justice, #2321)
    • 如果输出是 TTY,则自动启用颜色,因为如果输出可以处理颜色,则颜色几乎总是想要的。
    • 引入新的 CLI 标志以强制启用颜色 (--force-color),即使输出不是 TTY 也是如此。--no-color 继续工作。
    • 引入 config.color_mode 用于从 Ruby 配置颜色。:automatic 是默认值,如果输出是 TTY,则会产生颜色。:on 强制启用,:off 强制禁用。

3.5.4 / 2016-09-30

完整变更日志

Bug 修复

  • 在重置 RSpec 时删除累积的 ExampleGroup 常量,防止内存泄漏。(TravisSpangle, #2328)

3.5.3 / 2016-09-02

完整变更日志

Bug 修复

  • 在将共享组元数据应用于主机组时,如果主机组中的值是从父组继承的而不是在该级别指定的,则覆盖冲突的键。(Myron Marston, #2307)
  • 处理 :suite 钩子中的错误,并提供与在示例中发生的错误相同的良好格式输出。(Myron Marston, #2316)
  • after(:context) 钩子中发生错误时,将退出状态设置为非零。(Myron Marston, #2320)

3.5.2 / 2016-07-28

完整变更日志

Bug 修复

  • 等待报告 example_finished 直到示例的 execution_result 已完全填充。(Myron Marston, #2291)
  • 确保在使用 duplicate_with 克隆示例时,示例块仍然可用。(bootstraponline, #2298)
  • rspec_opts 指定了自己的 --pattern 时,不要在 Rake 任务中包含默认的 --pattern。(Jon Rowe, #2305)

3.5.1 / 2016-07-06

完整变更日志

Bug 修复

  • 确保仅将添加到现有示例组的配置钩子添加一次。(Eugene Kenny, #2280)

3.5.0 / 2016-07-01

完整变更日志

增强功能

  • 在执行完二分查找后,在最后打印的重现命令中,包含任何的SPEC_OPTS。(Simon Coffey,#2274)

Bug 修复

  • 正确处理SPEC_OPTS环境变量中的--bisect,避免无限递归。(Simon Coffey,#2271)

3.5.0.beta4 / 2016-06-05

完整变更日志

增强功能

  • 默认情况下,从回溯中过滤掉 bundler 栈帧,因为 Bundler 1.12 现在使用bundle exec产生的回溯中包含了自己的帧。(Myron Marston,#2240)
  • HTML 格式化器使用异常呈现器来获取失败消息,以保证与其他格式化器的一致性。(@mrageh,#2222)
  • 按照命令行传递的目录或文件顺序加载 spec 文件,这样可以轻松地让某些 spec 在其他 spec 之前运行,例如:rspec spec/unit spec/acceptance --order defined将运行 unit spec,然后运行 acceptance spec。(Myron Marston,#2253)
  • 添加新的config.include_context API,用于配置在示例组中全局或筛选包含共享上下文。(Myron Marston,#2256)
  • 添加新的config.shared_context_metadata_behavior = :apply_to_host_groups选项,该选项会导致共享上下文元数据被所有宿主组和示例的元数据哈希继承,而不是根据传递的元数据配置隐式自动包含。(Myron Marston,#2256)

Bug 修复

  • 修复--bisect,使其能够在大型的 spec 套件上工作,这些套件以前会由于所有 spec 位置作为 CLI 参数传递而触发“参数列表太长错误”。(Matt Jones,#2223)
  • 修复弃用的基于:example_group的筛选,使其能够正确地应用于匹配的示例组。(Myron Marston,#2234)
  • 修复 JRuby 上由 Java 回溯导致的NoMethodError。(Michele Piccirillo,#2244)

3.5.0.beta3 / 2016-04-02

完整变更日志

增强功能

  • 添加新的config.filter_run_when_matching API,旨在替代config.filter_runconfig.run_all_when_everything_filtered的组合。(Myron Marston,#2206)

Bug 修复

  • 使用编码字符串逻辑进行源代码提取。(Jon Rowe,#2183)
  • 修复持续时间格式化辅助函数中的舍入问题。(Fabersky, Jon Rowe, #2208)
  • 修复失败片段提取,以便以end结尾的def-end片段能够被正确提取。(Yuji Nakayama,#2215)

3.5.0.beta2 / 2016-03-10

完整变更日志

增强功能

  • 删除不必要的:execution_result示例组元数据,节省一些内存。(Myron Marston,#2172)
  • 将使用config注册的钩子应用于之前定义的组。(Myron Marston,#2189)
  • RSpec::Core::Configuration#reporter现在是 SemVer 下的公共 API。(Jon Rowe,#2193)
  • 添加新的config.when_first_matching_example_defined钩子。(Myron Marston,#2175)

3.5.0.beta1 / 2016-02-06

完整变更日志

增强功能

  • 添加RSpec::Core::ExampleGroup.currently_executing_a_context_hook?,主要供 rspec-rails 使用。(Sam Phippen,#2131)

Bug 修复

  • 确保MultipleExceptionError不包含对自身的递归引用。(Sam Phippen,#2133)

3.4.4 / 2016-03-09

完整变更日志

Bug 修复

  • 修复RSpec::Core::RakeTask,使其能够与 Rake 11 一起工作。(Travis Grathwell,#2197)

3.4.3 / 2016-02-19

完整变更日志

Bug 修复

  • 防止在通过 rake 任务运行时,当 Ruby 崩溃时,出现TypeError。(Patrik Wenger,#2161)
  • 在应用行号筛选时,只考虑特定文件中的示例和组声明行,而不是考虑所有 spec 文件中的所有声明行。(Myron Marston,#2170)
  • 修复失败片段提取,以便能够正确提取包含do-end样式块并以end结尾的片段。(Yuji Nakayama,#2173)
  • 防止在异常是由自身引起的时发生无限递归。(Jon Rowe,#2128)

3.4.2 / 2016-01-26

完整变更日志

Bug 修复

  • 修复当示例调用abortexit时的rspec --profile。(Bradley Schaefer,#2144)
  • 修复--drb,当没有运行 DRb 服务器时,它会防止 DRb 连接错误被列为所有期望失败的原因。(Myron Marston,#2156)
  • 修复语法高亮,使其在coderay gem 作为 rubygem 安装但尚未在你的加载路径上可用时也能工作(当你使用 bundler 时会发生这种情况)。(Myron Marston,#2159)

3.4.1 / 2015-11-18

完整变更日志

Bug 修复

  • 修复回溯格式化器,使其能够处理nil的回溯。(Myron Marston,#2118)

3.4.0 / 2015-11-11

完整变更日志

增强功能

  • 合并多个--pattern参数,使其等效于--pattern=1,2,...,n。(Jon Rowe,#2002)
  • 改进RSpec::Core::Example对象的inspectto_s输出,取代 Ruby 过于冗长的输出。(Gavin Miller,#1922)
  • 添加silence_filter_announcements配置选项。(David Raffensperger,#2007)
  • 为不关心示例结果的情况,在报告器协议中添加可选的example_finished通知。(Jon Rowe,#2013)
  • --bisect切换到基于递归的二分查找算法,而不是基于排列的算法。这更好地处理了示例依赖于多个其他示例而不是只依赖一个的情况,并将确定示例集无法进一步最小化的运行次数降到最低。(Simon Coffey,#1997)
  • 允许简单的筛选器(例如,只有:symbol键)被真值触发。(Tim Mertens,#2035)
  • 删除在使用 RSpec 的--color选项时,关于在 Windows 上需要ansicon的不必要的警告。(Ashley Engelund,#2038)
  • 添加选项,配置 RSpec 在发出警告时引发错误。(Jon Rowe,#2052)
  • cause可用时,将失败或错误的根cause附加到打印的失败输出中。(Adam Magan)
  • 停止对NoMemoryErrorSignalExcepetionInterruptSystemExit进行救援。干预这些行为很危险。(Myron Marston,#2063)
  • 添加config.project_source_dirs设置,RSpec 使用它来确定回溯行是来自你的项目源代码,还是来自某个外部库。它默认设置为speclibapp,但可以配置为不同的值。(Myron Marston,#2088)
  • 改进失败行检测,使其在任何项目源代码目录中查找失败行,而不仅仅是在 spec 文件中。此外,如果无法从项目源代码文件中找到任何回溯行,我们将回退到显示第一条回溯行的源代码。这应该会几乎消除“无法从回溯中找到匹配行”的错误消息。(Myron Marston,#2088)
  • 添加对:extra_failure_lines示例元数据的支持,该元数据将被附加到失败输出中。(bootstraponline,#2092)
  • 添加RSpec::Core::Example#duplicate_with,以生成具有克隆元数据的新的示例。(bootstraponline,#2098)
  • 添加RSpec::Core::Configuration#on_example_group_definition,用于注册在创建示例组时要调用的钩子。(bootstraponline,#2094)
  • 添加add_exampleremove_exampleRSpec::Core::ExampleGroup,以允许操作示例组的示例。(bootstraponline,#2095)
  • 在 Ripper 可用时(MRI >= 1.9.2 以及 JRuby >= 1.7.5 && < 9.0.0.0.rc1),在失败输出中显示多行失败源代码行。(Yuji Nakayama,#2083)
  • 添加max_displayed_failure_line_count配置选项(默认为 10)。(Yuji Nakayama,#2083)
  • 增强fail_fast选项,使其可以接受数字(例如--fail-fast=3),以在指定数量的失败后强制运行中止。(Jack Scotti,#2065)
  • color启用且coderay gem 安装在 POSIX 系统上时,在文本格式化器中语法高亮显示失败片段。(Myron Marston,#2109)

Bug 修复

  • 在从example_status_persistence_file读取和写入时锁定它,以防止多个进程尝试使用它时发生竞争条件。(Ben Woosley,#2029)
  • 修复 3.3 中的回归,该回归导致具有方括号的 spec 文件名(如1[]_spec.rb)无法正确加载。(Myron Marston,#2041)
  • 修复 1.9.3 上由 ASCII 字面量引起的输出编码问题。(Jon Rowe,#2072)
  • 修复rspec/core/rake_task.rb中的要求,以避免一些用户看到的双重要求。(Myron Marston,#2101)

3.3.2 / 2015-07-15

完整变更日志

Bug 修复

  • 修复格式化器,使其能够处理backtrace返回nil的异常。(Myron Marston,#2023)
  • 修复重复格式化器检测,使其允许添加格式化器的子类。(Sebastián Tello,#2019)

3.3.1 / 2015-06-18

完整变更日志

Bug 修复

  • 在示例组实例的上下文中正确运行before(:suite)(及其相关方法),从而使预期的 RSpec 环境可用。(Jon Rowe,#1986)

3.3.0 / 2015-06-12

完整变更日志

增强功能

  • 通过RSpec::Core::Example#reporter公开用于运行示例的报告器。(Jon Rowe,#1866)
  • RSpec::Core::Reporter#message设为公共支持的 API。(Jon Rowe,#1866)
  • 允许通过RSpec::Core::Reporter#publish(event_name, hash_of_attributes)发布自定义格式化器事件。(Jon Rowe,#1869)
  • 删除对标准库Set的依赖,并替换为RSpec::Core::Set。(Jon Rowe,#1870)
  • 为每个示例和组分配一个唯一的 ID,以便它们可以被唯一标识,即使对于共享示例(以及类似情况),其中位置不唯一。(Myron Marston,#1884)
  • 当位置不唯一时,在为失败的示例打印的重新运行命令中使用示例 ID。(Myron Marston,#1884)
  • 添加config.example_status_persistence_file_path选项,该选项用于持久化每个示例的上次运行状态。(Myron Marston,#1888)
  • 添加:last_run_status元数据到每个示例,它指示示例上次运行时发生了什么。(Myron Marston,#1888)
  • 添加--only-failures CLI 选项,该选项筛选出只包含上次运行时失败的示例。(Myron Marston,#1888)
  • 添加--next-failure CLI 选项,它允许你反复只关注当前失败的一个示例,然后继续下一个失败,等等。(Myron Marston,#1888)
  • 使--order random排序稳定,因此当你使用给定种子重新运行子集时,示例将相对于彼此保持一致的顺序。(Myron Marston,#1908)
  • 更早地设置示例组常量,以便在评估上下文时发生的错误会包含示例组名称。(Myron Marson,#1911)
  • 使letsubject线程安全。(Josh Cheek,#1858)
  • 在 JSON 格式化器中添加版本信息。(Mark Swinson,#1883)
  • 添加--bisect CLI 选项,该选项将反复运行你的套件,以将失败隔离到最小的可重现情况。(Myron Marston,#1917)
  • 对于config.includeconfig.extendconfig.prepend,将模块应用于之前定义的匹配的示例组。(Eugene Kenny,#1935)
  • 当解析无效选项时,通知用户它们来自哪里(例如.rspec~/.rspecENV['SPEC_OPTS']),以便他们可以轻松地找到问题源头。(Myron Marston,#1940)
  • 将待处理消息内容添加到 json 格式化器输出中。(Jon Rowe,#1949)
  • 将共享组回溯添加到内置格式化器为已修复的待处理示例显示的输出中。(Myron Marston,#1946)
  • 添加对:aggregate_failures元数据的支持。使用该元数据标记示例或组,它将使用 rspec-expectations 的aggregate_failures功能,允许示例中的多个失败并列出它们,而不是在第一个失败时中止。(Myron Marston,#1946)
  • 当没有格式化器实现#message时,添加回退以防止这些消息丢失。(Jon Rowe,#1980)
  • 对示例进行分析时,现在会考虑到before(:context)钩子中花费的时间。(Denis Laliberté, Jon Rowe, #1971)
  • 当示例有多个异常时,改进失败输出,例如,一个来自it块,另一个来自after块。(Myron Marston,#1985)

Bug 修复

  • 处理异常方法中的无效 UTF-8 字符串。(Benjamin Fleischer,#1760)
  • 修复 Rake 任务对包含引号的文件名的引用,使其在 Windows 上正常工作。(Myron Marston,#1887)
  • 修复RSpec::Core::RakeTask#failure_message,使其在任务失败时被打印出来。(Myron Marston,#1905)
  • 使let在定义在应用于单个示例的共享上下文中时能够正常工作。(Myron Marston,#1912)
  • 确保rspec/autorun尊重配置默认值。(Jon Rowe,#1933)
  • 防止模块在示例组定义方法之后被 config 包含、预先附加或扩展时,覆盖示例组定义的方法。(Eugene Kenny,#1935)
  • 修复回归,该回归导致在将 spec 筛选到特定位置时,错误地运行了共享示例。(Ben Axnick,#1963)
  • 修复时间格式化逻辑,使其将 70 秒显示为“1 分钟 10 秒”,而不是“1 分钟 1 秒”。(Paul Brennan,#1984)
  • 修复格式化程序加载程序允许重复格式化程序的回归问题。(Jon Rowe,#1990)

3.2.3 / 2015-04-06

完整变更日志

Bug 修复

  • 修复 DSL 方法的定义方式,使 RSpec 兼容定义了相同名称方法的 gem(如 its-it gem)。(Alex Kwiatkowski,Ryan Ong,#1907)
  • 修复 before(:context) { skip },使其不会在没有示例失败时错误地导致规范套件以非零状态退出。(Myron Marston,#1926)

3.2.2 / 2015-03-11

完整变更日志

Bug 修复

  • 修复 3.2.0 中的回归问题,该问题允许标记过滤的示例运行,即使存在应用于规范文件的定位过滤器,该过滤器旨在将文件限制为其他示例。(#1894,Myron Marston)

3.2.1 / 2015-02-23

完整变更日志

Bug 修复

  • start 通知之前,而不是之后通知运行开始的种子,以便 Fuubar 等格式化程序正常工作。(Samuel Esposito,#1882)

3.2.0 / 2015-02-03

完整变更日志

增强功能

  • 改进示例组的 inspect 输出。(Mike Dalton,#1687)
  • 当 rake 任务失败时,只有在设置了 verbose 标志时才输出命令。(Ben Snape,#1704)
  • 添加 RSpec.clear_examples 作为一种清除方法,用于在规范运行之间重置示例,同时保留用户配置。(Alexey Fedorov,#1706)
  • 分别将定义和运行示例时的字符串分配减少 70% 和 50%。(Myron Marston,#1738)
  • 删除对 stdlib 中 pathname 的依赖。(Sam Phippen,#1703)
  • 改进用户按下 Ctrl-C 时显示的消息。(Alex Chaffee #1717,#1742)
  • 改进在失败示例输出中显示的共享示例组包含回溯,使其适用于包含共享示例组的所有方法,并显示所有包含位置。(Myron Marston,#1763)
  • 在报告程序运行开始时(以及结束时)发出种子通知。(Arlandis Word,#1761)
  • 改进围绕钩子的文档。(Jim Kingdon,#1772)
  • 支持从配置中将模块预先添加到示例组,并允许基于元数据进行过滤。(Arlandis Word,#1806)
  • 当在示例组上注册 :suite 钩子(它始终被忽略)或使用元数据注册 :suite 钩子(它始终被忽略)时发出警告。(Myron Marston,#1805)
  • 当用户在示例中调用 RSpec 示例组 API(例如 contextdescribeitletbefore 等),这些 API 在示例中不可用时,提供友好的错误消息。(Myron Marston,#1819)
  • 当用户在示例组中调用 RSpec 示例 API(例如 expectdoublestub_const 等),这些 API 在示例组中不可用时,提供友好的错误消息。(Myron Marston,#1819)
  • 添加新的 RSpec::Core::Sandbox.sandboxed { } API,该 API 促进使用 RSpec 测试 RSpec,允许您在示例中定义示例组和示例,而不会影响全局 RSpec.world 状态。(Tyler Ball,1808)
  • 仅将行号过滤器应用于其作用域的文件,允许您混合使用已过滤和未过滤的文件。(Myron Marston,#1839)
  • 在转储挂起示例时,包括失败详细信息,这样您就不必取消挂起示例以查看它。(Myron Marston,#1844)
  • 使 -I 选项在用 File::PATH_SEPARATOR 分隔时支持多个值,例如 rspec -I foo:bar。这与 Ruby 的 -I 选项的行为匹配。(Fumiaki Matsushima,#1855)。
  • 将每个示例视为具有一个单例示例组,用于应用通常应用于示例组的基于元数据的功能到单独标记的示例。例如,RSpec.shared_context "Uses redis", :uses_redis 现在将应用于标记为 :uses_redis 的单个示例,config.include RedisHelpers, :uses_redisconfig.before(:context, :uses_redis) { } 等也是如此。(Myron Marston,#1749)

Bug 修复

  • 在分配生成的示例描述时,在示例描述中显示由 matcher.description 引发的错误。(Myron Marston,#1771)
  • 在生成示例描述时,不要考虑来自 after 钩子的期望。(Myron Marston,#1771)
  • 当这些示例覆盖父元数据值以不匹配时,不要将元数据过滤的配置钩子应用于具有匹配元数据的组中的示例。(Myron Marston,#1796)
  • 修复 config.expect_with :minitest,使其 skip 使用 RSpec 的实现,而不是 Minitest 的实现。(Jonathan Rochkind,#1822)
  • 修复在定义重复示例组别名且 DSL 未全局公开时导致的 NameError。(Aaron Kromer,#1825)
  • 当在外部文件中定义的共享示例失败时,使用宿主示例组(来自加载的规范文件)进行重新运行命令,以确保命令实际有效。(Myron Marston,#1835)
  • 修复定位过滤,使其在定义在外部文件中定义的共享示例组中嵌套的示例组中定义的示例中正常工作。(Bradley Schaefer,Xavier Shay,Myron Marston,#1837)
  • 当由于模拟期望而导致的挂起示例失败(按预期)时,设置 RSpec::Core::Example::ExecutionResult#pending_exception - 以前它没有被设置,但应该设置。(Myron Marston,#1844)
  • 修复 rake 任务,使其在 rspec-core 安装在包含空格的目录中时正常工作。(Guido Günther,#1845)
  • 修复 3.1 中的回归问题,该问题导致 describe Regexp 抛出错误。(Durran Jordan,#1853)
  • 修复 3.x 中的回归问题,该问题导致概要信息在概要之后打印。(Max Lincoln,#1857)
  • 在加载 --require 文件之前应用 --seed,以便所需文件可以访问提供的种子。(Myron Marston,#1745)
  • 处理 RSpec::Core::Formatters::DeprecationFormatter::FileStream 用 IO 流重新打开的情况,这种情况有时会在使用 spring 时发生。(Kevin Mook,#1757)

3.1.7 / 2014-10-11

完整变更日志

Bug 修复

  • 修复 Metadata.relative_path,以便在当前目录为 /foo/bar 时,不会错误地将 /foo/bar_1 转换为 ._1。(Akos Vandra,#1730)
  • 通过在生成的名称末尾附加一个尾随的 _ 来防止常量查找错误地找到 1.9.2 上生成的 RSpec::ExampleGroups 常量。(Jon Rowe,#1737)
  • 修复 :pending 元数据中的错误。如果它以除作为传递给 it 的元数据文字的一部分(如使用 define_derived_metadata)以外的任何方式设置,则它不会产生预期效果,而是将示例标记为 :passed。(Myron Marston,#1739)

3.1.6 / 2014-10-08

完整变更日志

Bug 修复

  • 修复 rake 任务模式处理中的回归问题,该问题阻止了从当前目录而不是从 spec 相对的模式正常工作。(Myron Marston,#1734)
  • 防止 rake 任务生成重复的加载路径条目。(Myron Marston,#1735)

3.1.5 / 2014-09-29

完整变更日志

Bug 修复

  • 修复 rake 任务在 Windows 上错误地转义字符串的问题。(Jon Rowe #1718)
  • 支持绝对路径模式。虽然这以前没有正式支持,但在 RSpec 3.0 及更早版本中将 rake_task.pattern 设置为绝对路径模式可以正常工作,因为它内部委托给了 FileList(但现在只是将模式转发到 rspec 命令)。(Myron Marston,#1726)

3.1.4 / 2014-09-18

完整变更日志

Bug 修复

  • 修复在使用 describe falsedescribe nil 时使用隐式 subject,使其返回提供的原始值,而不是字符串表示形式。(Myron Marston,#1710)
  • 修复回溯过滤,以允许过滤当前工作目录子目录(如 vendor/bundle/...)中的代码。(Myron Marston,#1708)

3.1.3 / 2014-09-15

完整变更日志

Bug 修复

  • 修复 rake 任务模式处理中的另一个回归问题,以允许 task.pattern = FileList["..."] 正常工作。我们从未打算支持数组值(甚至不知道它有效!),但 3.0 及更早版本中的实现内部使用了 FileList,它允许数组。修复程序恢复了旧的行为。(Myron Marston,#1701)
  • 修复模式处理,以便在从 --pattern 匹配的文件中减去 --exclude-pattern 匹配的文件之前,将文件规范化为绝对路径,使其即使模式形式略有不同(例如,一个以 ./ 开头)也能正常工作。(Christian Nelson,#1698)

3.1.2 / 2014-09-08

完整变更日志

Bug 修复

  • 修复 rake 任务模式处理中的另一个回归问题,以便以 ./ 开头的模式仍然可以正常工作。(Christian Nelson,#1696)

3.1.1 / 2014-09-05

完整变更日志

Bug 修复

  • 修复 rake 任务模式处理中的回归问题,以便 rake_task.pattern = array 再次可以正常工作。虽然我们从未打算支持数组值(甚至不知道它有效!),但 3.0 及更早版本中的实现内部使用了 FileList,它允许数组。修复程序恢复了旧的行为。(Myron Marston,#1694)

3.1.0 / 2014-09-04

完整变更日志

增强功能

  • 更新由 rspec --init 生成的文件,以便在 spec_helper 的注释部分而不是 .rspec 中启用警告,以便用户必须有意识地选择此设置。(Andrew Hooker,#1572)
  • 更新由 rspec --init 生成的 spec_helper,以便它设置新的 rspec-expectations include_chain_clauses_in_custom_matcher_descriptions 配置选项(将在 RSpec 4 中默认启用),并设置 rspec-mocks verify_partial_doubles 选项(它也将默认在 RSpec 4 中启用)。(Myron Marston,#1647)
  • 为示例代理对象(在围绕钩子中使用)提供 inspect 输出,使其看起来不像 proc。(Jon Rowe,#1620)
  • rspec/core/rake_task.rb 中删除一些不必要的 require 语句,使其更加轻量级。(Myron Marston,#1640)
  • 允许在未安装 rspec-mocks 或 rspec-expectations 的情况下使用 rspec-core,而无需任何用户配置。(Sam Phippen,Myron Marston,#1615)
  • 默认情况下不要从回溯中过滤掉 gem。(RSpec gem 将继续被过滤)。用户反馈表明,在默认回溯中包含 gem 将很有用。(Myron Marston,#1641)
  • 添加新的 config.filter_gems_from_backtrace "rack", "rake" API,以轻松地从回溯中过滤掉指定的 gem。(Myron Marston,#1682)
  • 修复默认的回溯过滤器,以便在将 RSpec 作为 bundler :git 依赖项安装时,排除 RSpec 二进制文件。(Myron Marston,#1648)
  • 简化由 rake 任务生成的命令,使其不再包含不必要的 -S。(Myron Marston,#1559)
  • 添加 --exclude-pattern CLI 选项、config.exclude_pattern = 配置选项和 task.exclude_pattern = rake 任务配置选项。匹配的文件将被排除。(John Gesimondo,Myron Marston,#1651,#1671)
  • 当围绕钩子无法执行示例时,将其标记为挂起(而不是通过),以便用户意识到示例实际上没有运行。(Myron Marston,#1660)
  • 从标准库中删除对 FileUtils 的依赖,这样用户就不会收到他们的代码依赖于它但他们没有要求它的误报。(Sam Phippen,#1565)

Bug 修复

  • 修复 rake 任务 t.pattern = 选项,使其在没有匹配任何文件时不运行所有规范,方法是将 --pattern 选项传递给 rspec 命令,而不是解析文件列表并单独传递文件。(Evgeny Zislis,#1653)
  • 修复 rake 任务默认模式,使其能够正确地遵循符号链接。(Myron Marston,#1672)
  • 修复与 rspec 命令一起使用的默认模式,使其能够正确地遵循符号链接。(Myron Marston,#1672)
  • 更改我们为示例组类分配常量名称的方式,使其避免与 describe "Core" 相关的问题。(Daniela Wellisz,#1679)
  • 处理与原始源文件编码不同的渲染异常。(Jon Rowe,#1681)
  • 即使是共享示例组的一部分,也允许访问失败示例的无颜色 message_lines。(tomykaira,#1689)

3.0.4 / 2014-08-14

完整变更日志

Bug 修复

  • 修复 CLI 选项的处理顺序,以便如果从由 --require 加载的文件中访问 config.files_to_run--pattern 仍然会被应用。(Myron Marston,#1652)
  • 修复 config.pattern=,使其即使 config.files_to_run 已经被访问过仍然可以生效。(Myron Marston,#1652)

3.0.3 / 2014-07-21

完整变更日志

Bug 修复

  • 在串联之前将描述的两个部分都正确地转换为字符串。(@nicklink483,#1636)
  • 在确定要忽略的文件夹时,排除工作目录。(Jon Rowe,Myron Marston,#1616)
  • 允许访问 ::RSpec::Core::Notifications::FailedExampleNotification#message_lines,而无需使用颜色器。(@tomykaira,#1637)

3.0.2 / 2014-06-19

完整变更日志

Bug 修复

  • 修复 CLI 选项处理中的回归问题,该问题阻止了在命令行传递的 --tag slow 覆盖 .rspec 中的 --tag ~slow。(Colin Jones,#1602)
  • 修复元数据 :example_group 弃用警告,使其在指定它作为过滤器的配置的调用位置发出,而不是在稍后定义示例组时发出。(Myron Marston,#1562)
  • 当共享示例组失败时,打印的指示具体示例组所在位置的线应为白色,将其与失败产生的堆栈跟踪分隔开。(Sam Phippen, Jon Rowe, #1606)

3.0.1 / 2014-06-12

完整变更日志

Bug 修复

  • 修复 rspec-core 加载时引起的一些 Ruby 警告。(Prem Sichanugrist, #1584)
  • 名为 Config 的示例组将不再发出 Ruby 警告。(Jimmy Cuadra, #1580)

3.0.0 / 2014-06-01

完整变更日志

Bug 修复

  • 修复 BaseTextFormatter,使其不再重新关闭已关闭的输出流。(Myron Marston)
  • 修复元数据中的回归问题,该问题会导致顶级示例组的元数据哈希即使没有父示例组,也包含 :parent_example_group 键。(Myron Marston)

增强功能

  • 更改默认的 spec_helper.rb,不再推荐 config.full_backtrace = true,请参阅 #1536 了解讨论。(Jon Rowe)

3.0.0.rc1 / 2014-05-18

完整变更日志

3.0.0 的重大变更

  • 更改 described_class,使其在类似 describe MyClass 的嵌套组中返回 MyClass 而不是外部组的描述类。(Myron Marston)
  • 重构过滤器管理器,使其不再是 Hash 的子类,并且具有更紧凑、更特定于域的接口。(Sergey Pchelincev)
  • BaseTextFormatter 中删除旧的颜色定义。(Jon Rowe)
  • BaseTextFormatter 中删除控制台颜色定义。(Jon Rowe)
  • 重构示例组元数据,以便计算后的键直接在元数据哈希中公开,而不是在嵌套的 :example_group 子哈希中公开。此外,父示例组元数据现在可作为 [:parent_example_group] 获取,而不是 [:example_group][:example_group]。仍然提供通过旧键结构的弃用访问。(Myron Marston)
  • 删除 :describes 元数据键。它无缘无故地复制了 :described_class。仍然提供通过 :describes 的弃用访问。(Myron Marston)
  • :example_group_block 元数据键重命名为 :block。(Myron Marston)
  • 删除弃用的 RSpec::Core::Example#options。(Myron Marston)
  • BaseTextFormatter#colorize_summary 移至 SummaryNotification#colorize_with (Jon Rowe)。
  • describe some_hash 在 RSpec 2.x 中将 some_hash 视为元数据,但在 RSpec 3.0 中将将其视为描述对象。元数据必须始终在描述参数之后。(Myron Marston)
  • 删除 ExampleGroup.description 的弃用别名 display_name。(Myron Marston)
  • 删除 ExampleGroup.described_class 的弃用别名 describes。(Myron Marston)
  • 删除弃用的 RSpec::Core::ExampleGroup.alias_it_behaves_like_to。使用 RSpec::Core::Configuration#alias_it_behaves_like_to 代替。(Myron Marston)
  • 删除弃用的 RSpec::Core::ExampleGroup.alias_example_to。使用 RSpec::Core::Configuration#alias_example_to 代替。(Myron Marston)
  • 删除 focused 示例别名,并将示例/组别名 fitfocusfcontextfdescribe 更改为不再包含 :focused => true 元数据。它们现在仅包含 :focus => true 元数据。这意味着您需要使用 filter_run :focus 而不是 filter_run :focused 来过滤它们。(Myron Marston)
  • 删除 --line-number 过滤。它在语义上模棱两可,因为它是一个全局过滤器(可能应用于多个文件),但在多个文件中相同行号之间没有有意义的联系。而是使用 rspec path/to/spec.rb:23:46 格式,它更简洁,并且更有意义,因为它限定在单个文件中。(Myron Marston)
  • 删除 --default_path 作为 --default-path 的别名。(Jon Rowe)
  • 删除弃用的 share_examples_for。仍然存在 shared_examplesshared_examples_for。(Myron Marston)
  • RSpec::Core::Configuration#warnings 重命名为 RSpec::Core::Configuration#warnings?,因为它是一个布尔标志。(Myron Marston)
  • RSpec 的全局状态不再在规格运行后重置。这为备用运行器提供了更大的灵活性,可以决定何时以及是否要重置状态。如果备用运行器打算在同一进程中多次运行规格套件,那么现在他们负责调用此方法(或执行类似的重置)。(Sam Phippen)
  • RSpec::Core::CommandLine(从未正式声明为公共)合并到 RSpec::Core::Runner 中。(Myron Marston)
  • 删除 color_enabled 作为 color 的别名。(Jon Rowe)
  • 删除 backtrace_cleaner 作为 backtrace_formatter 的别名。(Jon Rowe)
  • 删除 filename_pattern 作为 pattern 的别名。(Jon Rowe)
  • 将对旧版格式器的支持提取到 rspec-legacy_formatters 中。(Jon Rowe)
  • RSpec::Configuration#formatters 现在返回一个复制,以防止变异。(Jon Rowe)
  • test_unitminitest 替换 stdlib 作为可用的期望框架。(Aaron Kromer)
  • BaseTextFormatter 中删除回溯格式化帮助程序。(Jon Rowe)
  • 将探查器支持提取到 ProfileFormatterProfileNotification 中。如果格式器希望响应 --profile,则应实现 dump_profile。(Jon Rowe)
  • 将剩余的格式器状态提取到报告器和通知中。引入 ExamplesNotification 来共享以前保存在 BaseFormatter 中的有关示例的信息。(Jon Rowe)

增强功能

  • 添加 config.default_formatter 属性,该属性可用于设置仅在未设置其他格式器(例如通过 --formatter)时使用的格式器。(Myron Marston)
  • LegacyFormatterAdaptor 中支持旧版颜色定义。(Jon Rowe)
  • execution_result(由元数据公开)从哈希迁移到具有适当属性的一流对象。status 现在存储并以符号而不是字符串的形式返回。为了向后兼容,它保留了弃用的哈希行为。(Myron Marston)
  • 为格式器提供控制台代码帮助器。(Jon Rowe)
  • 对元数据哈希使用原始 ruby 哈希,而不是哈希的子类。计算后的元数据条目现在预先计算,而不是在首次访问时懒惰地进行。(Myron Marston)
  • 向示例元数据添加 :block 元数据条目,与示例组元数据中的 :block 保持一致。(Myron Marston)
  • 添加 fspecifyfexample 作为 specifyexample 的别名,其中包含 :focus => true 元数据,以与 fit 保持一致。(Myron Marston)
  • 添加对 colorize_summary 的旧版支持。(Jon Rowe)
  • 重构运行器,使其更容易在子类中针对备用运行器进行定制。(Ben Hoskings)
  • RSpec::Core::ConfigurationOptions 文档化,作为官方支持的公共 API。(Myron Marston)
  • 添加 --deprecation-out CLI 选项,该选项将弃用警告定向到指定的文件。(Myron Marston)
  • expect_with :stdlib(现在可作为 expect_with :minitest 获取)对 Minitest 5 的兼容性。(Xavier Shay)
  • 报告器现在通过 StartNotificationSummaryNotification 通知格式器 RSpec 和您的规范的加载时间。(Jon Rowe)
  • 添加 disable_monkey_patching! 配置选项,该选项禁用您使用的任何 RSpec 部分的所有猴子修补。(Alexey Fedorov)
  • 添加对 Pathname 的支持,用于设置所有输出流。(Aaron Kromer)
  • 添加 config.define_derived_metadata,它可用于对与给定过滤器匹配的所有组或示例应用其他元数据。(Myron Marston)
  • 通过 FailedExampleNotification 提供格式化和彩色回溯,并在错误是由于您期望失败的通过规范引起的时发送 PendingExampleFixedNotifications。(Jon Rowe)
  • 向格式器 API 添加 dump_profile,以允许格式器实现对 --profile 的支持。(Jon Rowe)
  • 允许通过 ConsoleCodes 使用 RSpec“状态”(例如 :success:failure)而不是直接颜色代码来为文本着色。(Jon Rowe)
  • 公开格式器通知对象上的 fully_formatted 方法,使自定义格式器能够轻松地生成与 rspec-core 相似的格式化输出。(Myron Marston)

Bug 修复

  • 修复 rspec --init 生成的 spec_helper.rb 文件,以便推荐的设置在运行一个文件时正确使用文档格式器。(Myron Marston)
  • 修复排序问题,其中描述在拆卸模拟后生成,这会导致意外异常。(Bradley Schaefer, Aaron Kromer, Andrey Savchenko)
  • 允许使用符号作为隐式主题(例如 describe :foo)。(Myron Marston)
  • 防止在已经位于上下文内部时创建隔离的上下文(即使用 RSpec.describe)。没有理由这样做,而且它可能会导致意外的错误。(Xavier Shay)
  • 修复共享示例组范围,以便当两个共享示例组在嵌套上下文的不同级别共享相同名称时,使用最近上下文的那个。(Myron Marston)
  • 修复 --warnings 选项,以便它立即启用警告,使其应用于 --require 加载的文件。(Myron Marston)
  • 当您设置 config.deprecation_stream 太晚而无法生效时,因为它会发出警告,因为报告器已经设置。(Myron Marston)
  • 将完整的 RSpec::Core::Example 接口添加到传递给 around 钩子的参数中。(Myron Marston)
  • 行号在使用过滤器运行规范时始终优先。(Xavier Shay)
  • 确保 :if:unless 元数据过滤器被视为特殊情况,并且始终生效。(Bradley Schaefer)
  • 确保即使安装了更新的版本,在 rake 任务退出到 rspec 时,也使用当前正在运行的 RSpec 安装。(Postmodern)
  • 使用旧版格式器作为默认格式器不再导致无限循环。(Xavier Shay)

3.0.0.beta2 / 2014-02-17

完整变更日志

3.0.0 的重大变更

  • 使 mock_with 选项更严格。不再支持字符串(例如 mock_with "mocha") - 使用符号代替。此外,现在无法识别的值将导致错误,而不是回退到空模拟适配器。如果您想使用空模拟适配器,请使用 mock_with :nothing(正如长期以来一直记录的那样)。(Myron Marston)
  • 删除对覆盖 RSpec 内置的 :if:unless 过滤器的支持。(Ashish Dixit)
  • 自定义格式器现在需要调用 RSpec::Core::Formatters.register(formatter_class, *notifications),其中 notifications 是格式器希望接收通知的事件列表。通知由与格式器上的名称匹配的方法处理。这使我们能够添加或删除通知,而不会破坏现有格式器。(Jon Rowe)
  • 更改传递给格式器的参数。我们不再传递多个参数(这限制了我们添加其他参数的能力,因为这样做会导致破坏现有格式器),而是现在传递一个通知值对象,该对象通过属性公开相同的数据。这将使我们能够向通知事件添加新的数据位,而不会破坏现有格式器。(Jon Rowe)
  • 删除对 RSpec.configuration.add_setting 的弃用 :alias 选项的支持。(Myron Marston)
  • 删除对弃用 RSpec.configuration.requires = [...] 的支持。(Myron Marston)
  • 删除对弃用 --formatter CLI 选项的支持。(Myron Marston)
  • 删除对弃用 --configure CLI 选项的支持。(Myron Marston)
  • 删除对弃用 RSpec::Core::RakeTask#spec_opts= 的支持。(Myron Marston)
  • 示例组级别的 pending 块或 :pending 元数据现在将执行示例,如果它通过,则会导致失败,否则如果它失败,则将处于挂起状态。旧的“从不运行”行为仍用于 xexamplexitxspecify,或通过新的 skip 方法或 :skip 元数据选项。(Xavier Shay)
  • 在示例内部调用 pending 后,示例的其余部分现在将运行。如果它通过,则会引发失败,否则示例将标记为挂起。新的 skip 方法提供了旧的“从不运行”行为。(Xavier Shay)
  • 示例内部的挂起块已作为一项功能被删除,没有直接的替代方案。使用 skippending,但不要使用块。(Xavier Shay)
  • before(:all) 钩子中不再允许使用挂起语句。使用 skip 代替。(Xavier Shay)
  • 删除 show_failures_in_pending_blocks 配置选项。(Xavier Shay)
  • 删除对使用“s”、“n”、“spec”或“nested”指定文档格式器的支持。(Jon Rowe)

增强功能

  • 将示例运行时间添加到 JSON 格式器输出中。(Karthik Kastury)
  • rspec --init 生成的文件添加更多建议的设置。(Myron Marston)
  • 添加 `config.alias_example_group_to`,它可以用于定义一个新的方法,该方法使用提供的元数据定义一个示例组。(Michi Huber)
  • 添加 `xdescribe` 和 `xcontext` 作为跳过示例组的快捷方式。(Myron Marston)
  • 添加 `fdescribe` 和 `fcontext` 作为专注示例组的快捷方式。(Myron Marston)
  • 默认情况下,不要通过 `#at_exit` 自动运行规范。`require 'rspec/autorun'` 仅在通过 `ruby` 运行规范时才需要,因为它始终如此。通过 `rake` 或 `rspec` 运行规范不受影响。(Ben Hoskings)
  • 添加 `expose_dsl_globally` 配置选项,默认为 true。禁用它将删除 rspec-core 添加到 `main` 和 `Module` 的猴子补丁(例如 `describe`、`shared_examples_for` 等)。(Jon Rowe)
  • 在 `RSpec` 常量上公开 RSpec DSL 入口点方法(`describe`、`shared_examples_for` 等)。用于 `expose_dsl_globally` 设置为 `false` 的情况。(Jon Rowe)
  • 为了保持一致性,在 `RSpec` 常量上公开所有示例组别名(包括 `context`)。如果 `expose_dsl_globally` 设置为 `true`,也在 `main` 和 `Module` 上公开它们。历史上,只公开了 `describe`。(Jon Rowe,Michi Huber)
  • 添加钩子作用域 `:example` 作为 `:each` 的别名,` :context` 作为 `:all` 的别名。(John Feminella)

Bug 修复

  • 修复当配置 `raise_errors_for_deprecations!` 时,运行结束摘要中的失败(未定义方法 `path`)。(Myron Marston)
  • 尝试在命令行上使用 `-i` 或 `--I` 时,发出错误,因为它与 `-I` 太接近,无法被视为 `--init` 的简写。(Jon Rowe)
  • 如果已将相同格式化程序添加到该输出,则防止将格式化程序添加到输出目标。(Alex Peattie)
  • 允许在示例挂起时使用匹配器生成的示例描述。(Myron Marston)
  • 确保 rake 任务在发生故障时使用配置的 `failure_exit_code`。(Jon Rowe)
  • 恢复系统排除过滤器优先于工作目录的行为(在 beta1 中已损坏)。(Jon Rowe)
  • 防止 RSpec 篡改包含 `line_number` 或 `default_path` 的子字符串的文件名。(Matijs van Zuijlen)
  • 修复失败行检测,使其能够处理相对文件路径(当通过 `ruby` 使用 `rspec/autorun` 运行规范时可能会发生这种情况)。(Myron Marston,#1829)

3.0.0.beta1 / 2013-11-07

完整变更日志

3.0.0 的重大变更

  • 删除对 1.8.6 的显式支持。(Jon Rowe)
  • 删除 `RSpec::Core::ExampleGroup#example` 和 `RSpec::Core::ExampleGroup#running_example` 方法。如果您需要访问示例(例如获取其元数据),请使用块参数代替。(David Chelimsky)
  • 删除 `TextMateFormatter`,它已移至 `rspec-tmbundle`。(Aaron Kromer)
  • 删除 RCov 集成。(Jon Rowe)
  • 删除对 RSpec 1 结构的弃用支持(Myron Marston)
    • 常量 `Spec` 和 `Rspec`(而不是 `RSpec`)。
    • `Spec::Runner.configure` 而不是 `RSpec.configure`。
    • `Rake::SpecTask` 而不是 `RSpec::Core::RakeTask`。
  • 删除对 `share_as` 的弃用支持。(Myron Marston)
  • 删除 `--debug` 选项(以及 `RSpec::Core::Configuration` 上的相应选项)。相反,使用 `-r<debugger gem name>` 加载您希望使用的调试器 gem(例如 `ruby-debug`、`debugger` 或 `pry`)。(Myron Marston)
  • 将 Autotest 支持提取到一个单独的 gem 中。(Jon Rowe)
  • 在 `before(:all)` 或 `after(:all)` 钩子中访问 `let` 或 `subject` 声明时,引发错误。(Myron Marston)
  • 将 `its` 支持提取到一个单独的 gem 中。(Peter Alfvin)
  • 禁止从兄弟上下文中使用共享示例组,使其完全隔离。2.14 和 2.99 允许这样做,但会打印弃用警告。(Jon Rowe)
  • 删除 `RSpec::Core::Configuration#output` 和 `RSpec::Core::Configuration#out` 的 `RSpec::Core::Configuration#output_stream` 别名。(Myron Marston)
  • 删除 2.99.0.beta1 中弃用的旧排序 API。(Myron Marston)

增强功能

  • 用 coderay gem 替换未维护的 syntax gem。(Xavier Shay)
  • 配置文件输出中的时间现在为粗体,而不是 `failure_color`。(Matthew Boedicker)
  • 添加 `--no-fail-fast` 命令行选项。(Gonzalo Rodríguez-Baltanás Díaz)
  • 运行器现在在 Drb 下运行时,会考虑本地系统 IP 地址。(Adrian CB)
  • JsonFormatter 现在包括 `--profile` 信息。(Alex / @MasterLambaster)
  • 始终将作为元数据参数传递的符号视为具有 true 值的哈希键。RSpec 2 支持 `treat_symbols_as_metadata_keys_with_true_values` 这样做,但现在始终启用此行为。(Myron Marston)
  • 添加 `--dry-run` 选项,它会打印套件的格式化程序输出,而不会运行任何示例或钩子。(Thomas Stratmann,Myron Marston)
  • 记录 `spec_helper.rb` 文件中配置选项和默认值,该文件由 RSpec 生成。(Parker Selbert)
  • 为生成的示例组类提供一个友好的名称,该名称源自文档字符串,而不是像 "Nested_2" 这样的名称。(Myron Marston)
  • 避免在打乱示例时影响用户代码的随机化,以便用户可以依靠自己的种子正常工作。(Travis Herrick)
  • 排序不再是测试套件的单个全局属性。每个组可以使用 `:order` 元数据选择一个排序。(Andy Lindeman,Sam Phippen,Myron Marston)
  • 允许注册命名自定义排序策略,然后可以在单个示例组上使用它们。(Andy Lindeman,Sam Phippen,Myron Marston)

弃用

  • `treat_symbols_as_metadata_keys_with_true_values` 已弃用,不再有影响,因为它启用的行为现在始终启用。(Myron Marston)

2.99.2 / 2014-08-19

完整变更日志

增强功能

  • 改进 RSpec 3 中 `describe <a symbol>` 行为变更的弃用警告。(Jon Rowe,#1667)

2.99.1 / 2014-06-19

完整变更日志

Bug 修复

  • 添加缺少的弃用警告,说明在同一个进程中多次使用 `RSpec::Core::Runner` 时的情况。在 2.x 中,RSpec 的全局状态会在运行之间自动清除,但在 3.0 中,您需要在这些情况下手动调用 `RSpec.reset`。(Sam Phippen,#1587)
  • 防止在使用 `be_` 匹配器进行双重处理时,由于自动生成的描述,意外发出弃用警告。(Jon Rowe,#1573)
  • 加载 `rspec/core` 时加载 `rspec/core/rake_task`,以确保我们可以正确地发出弃用警告。(Jon Rowe,#1612)

2.99.0 / 2014-06-01

完整变更日志

Bug 修复

  • 修复 BaseTextFormatter,使其不再重新关闭已关闭的输出流。(Myron Marston)
  • 使用 `RSpec::Configuration#backtrace_exclusion_patterns` 而不是 `RSpec::Configuration#backtrace_clean_patterns`(已弃用)进行 rr 模拟。(David Dollar)

2.99.0.rc1 / 2014-05-18

完整变更日志

增强功能

  • 添加 --deprecation-out CLI 选项,该选项将弃用警告定向到指定的文件。(Myron Marston)
  • 向后移植对元数据中 `skip` 的支持,以跳过示例的执行。(Xavier Shay,#1472)
  • 添加对 Pathname 的支持,用于设置所有输出流。(Aaron Kromer)
  • 添加 `test_unit` 和 `minitest` 期望框架。(Aaron Kromer)

弃用

  • 弃用 `RSpec::Core::Pending::PendingDeclaredInExample`,使用 `SkipDeclaredInExample` 代替。(Xavier Shay)
  • 当从嵌套的 `describe <SomeClass>` 示例组中访问 `described_class` 时,发出弃用警告,因为 `described_class` 将在 RSpec 3 中返回最内层的描述类,而不是最外层的描述类,就像它在 RSpec 2 中的行为一样。(Myron Marston)
  • 弃用 `RSpec::Core::FilterManager::DEFAULT_EXCLUSIONS`、`RSpec::Core::FilterManager::STANDALONE_FILTERS` 以及对这些过滤器使用 `#empty_without_conditional_filters?`。(Sergey Pchelincev)
  • 弃用 `RSpec::Core::Example#options`,支持 `RSpec::Core::Example#metadata`。(Myron Marston)
  • 将符号或哈希作为第一个参数传递给 `describe` 或 `context` 时发出警告。在 RSpec 2.x 中,这将被视为元数据,但在 RSpec 3 中,它将被视为描述的对象。要继续将其视为元数据,请在符号或哈希之前传递描述。(Myron Marston)
  • 弃用 `RSpec::Core::BaseTextFormatter::VT100_COLORS` 和 `RSpec::Core::BaseTextFormatter::VT100_COLOR_CODES`,支持 `RSpec::Core::BaseTextFormatter::ConsoleCodes::VT100_CODES` 和 `RSpec::Core::BaseTextFormatter::ConsoleCodes::VT100_CODE_VALUES`。(Jon Rowe)
  • 弃用 `RSpec::Core::ExampleGroup.display_name`,支持 `RSpec::Core::ExampleGroup.description`。(Myron Marston)
  • 弃用 `RSpec::Core::ExampleGroup.describes`,支持 `RSpec::Core::ExampleGroup.described_class`。(Myron Marston)
  • 弃用 `RSpec::Core::ExampleGroup.alias_example_to`,支持 `RSpec::Core::Configuration#alias_example_to`。(Myron Marston)
  • 弃用 `RSpec::Core::ExampleGroup.alias_it_behaves_like_to`,支持 `RSpec::Core::Configuration#alias_it_behaves_like_to`。(Myron Marston)
  • 弃用 `RSpec::Core::ExampleGroup.focused`,支持 `RSpec::Core::ExampleGroup.focus`。(Myron Marston)
  • 为 `config.filter_run :focused` 添加弃用警告,因为示例别名 `fit` 和 `focus` 将不再包含 `:focused` 元数据,但将继续包含 `:focus`。(Myron Marston)
  • 弃用根据 `:line_number` 进行过滤(例如来自 CLI 的 `--line-number`)。使用位置过滤代替。(Myron Marston)
  • 弃用 `--default_path` 作为 `--default-path` 的替代方法。(Jon Rowe)
  • 弃用 `RSpec::Core::Configuration#warnings`,支持 `RSpec::Core::Configuration#warnings?`。(Myron Marston)
  • 弃用 `share_examples_for`,支持 `shared_examples_for` 或 `shared_examples`。(Myron Marston)
  • 弃用 `RSpec::Core::CommandLine`,支持 `RSpec::Core::Runner`。(Myron Marston)
  • 弃用 `#color_enabled`、`#color_enabled= `和 `#color?`,支持 `#color`、`#color= `和 `#color_enabled? output`。(Jon Rowe)
  • 弃用 `#filename_pattern`,支持 `#pattern`。(Jon Rowe)
  • 弃用 `#backtrace_cleaner`,支持 `#backtrace_formatter`。(Jon Rowe)
  • 弃用 `RSpec::Configuration#formatters` 的变异。(Jon Rowe)
  • 弃用 `stdlib` 作为可用期望框架,支持 `test_unit` 和 `minitest`。(Aaron Kromer)

Bug 修复

  • 当您设置 config.deprecation_stream 太晚而无法生效时,因为它会发出警告,因为报告器已经设置。(Myron Marston)
  • 使用块的 `skip` 不应执行块。(Xavier Shay)

2.99.0.beta2 / 2014-02-17

完整变更日志

增强功能

  • 添加 `is_expected` 用于使用基于 `expect` 的语法的可读性强的单行代码。`is_expected` 只定义为 `expect(subject)`,可以在表达式中使用,例如:`it { is_expected.to read_well }`。(Myron Marston)
  • 向后移植来自 RSpec 3 的 `skip`,当不提供块时,它的行为类似于 RSpec 2 中的 `pending`,因为 `pending` 的行为在 RSpec 3 中正在发生变化。(Xavier Shay)

弃用

  • 弃用不精确的 `mock_with` 配置选项。RSpec 3 将只支持确切的符号 `:rspec`、`:mocha`、`:flexmock`、`:rr` 或 `:nothing`(或任何实现了适配器接口的模块)。RSpec 2 进行了模糊匹配,但这在将来将不再支持。(Myron Marston)
  • 弃用 `show_failures_in_pending_blocks` 配置选项。要实现与启用选项相同的效果,可以使用自定义格式化程序代替。(Xavier Shay)
  • 添加弃用警告,说明 `pending` 的行为在 RSpec 3 中正在发生变化 - 而不是跳过示例(就像它在 2.x 中没有提供块时一样),它会运行示例,如果未引发异常,则将其标记为失败。使用 `skip` 代替以保留旧行为。(Xavier Shay)
  • 弃用 `s`、`n`、`spec` 和 `nested` 作为文档格式化程序的别名。(Jon Rowe)
  • 弃用 `RSpec::Core::Reporter#abort`,支持 `RSpec::Core::Reporter#finish`。(Jon Rowe)

Bug 修复

  • 修复当配置 `raise_errors_for_deprecations!` 时,运行结束摘要中的失败(未定义方法 `path`)。(Myron Marston)
  • 修复从命令行覆盖规范排序无法完全被内部识别的错误。(Jon Rowe)

2.99.0.beta1 / 2013-11-07

完整变更日志

增强功能

  • 在示例上下文中运行的基于块的 DSL 方法(`it`、`before(:each)`、`after(:each)`、`let` 和 `subject`)现在会将示例作为块参数传递。(David Chelimsky)
  • 当将多个示例组的名称提交到 `include_examples` 及其别名时,发出警告。(David Chelimsky)
  • 添加expose_current_running_example_as 配置选项,用于升级过程中,当外部 gem 使用已弃用的RSpec::Core::ExampleGroup#exampleRSpec::Core::ExampleGroup#running_example 方法时。(Myron Marston)
  • 限制弃用消息的频繁程度。(Bradley Schaefer, Loren Segal)
  • 添加config.raise_errors_for_deprecations! 选项,该选项将弃用警告转换为错误,以显示调用点的完整回溯。(Myron Marston)

弃用

  • 弃用RSpec::Core::ExampleGroup#exampleRSpec::Core::ExampleGroup#running_example 方法。如果您需要访问示例(例如,获取其元数据),请改用块参数。(David Chelimsky)
  • 弃用autotest/rspec2,转而使用rspec-autotest。(Jon Rowe)
  • 弃用 RSpec 内置的调试器支持。改用 CLI 选项,例如 -rruby-debug(针对 ruby-debug gem)或 -rdebugger(针对 debugger gem)。(Myron Marston)
  • 弃用RSpec.configuration.treat_symbols_as_metadata_keys_with_true_values = false。RSpec 3 将不支持将此选项设置为false。(Myron Marston)
  • 弃用在after(:all) 钩子中访问letsubject 声明。(Myron Marston, Jon Rowe)
  • 弃用内置的its 使用,转而使用rspec-its gem,因为 RSpec 3 计划将其删除。(Peter Alfvin)
  • 弃用RSpec::Core::PendingExampleFixedError,转而使用RSpec::Core::Pending::PendingExampleFixedError。(Myron Marston)
  • 弃用RSpec::Core::Configuration#outRSpec::Core::Configuration#output,转而使用RSpec::Core::Configuration#output_stream。(Myron Marston)
  • 弃用旧的排序 API。
    • 您应该使用register_ordering(:global),而不是这些
    • RSpec::Core::Configuration#order_examples
    • RSpec::Core::Configuration#order_groups
    • RSpec::Core::Configuration#order_groups_and_examples
    • 这些已被弃用,没有替代方案,因为在 RSpec 3 中,排序是单个示例组的属性,而不仅仅是整个测试套件的全局属性
    • RSpec::Core::Configuration#order
    • RSpec::Core::Configuration#randomize?
    • --order default 已被弃用,转而使用--order defined (Myron Marston)

2.14.8 / 2014-02-27

完整变更日志

Bug 修复

  • 修复了textmateformatter 的回归,该回归阻止了回溯链接被点击。(Stefan Daschek)

2.14.7 / 2013-10-29

完整变更日志

Bug 修复

  • 修复了 2.14.6 中的回归,该回归导致 Fivemat 格式化程序无法正常工作。它依赖于 example.execution_result[:exception].pending_fixed?(在 2.14.6 中被移除,以解决冻结错误对象的问题)或 RSpec::Core::PendingExampleFixedError(在 2.8 中被重命名为 RSpec::Core::Pending::PendingExampleFixedError)。此修复为旧错误名称创建了一个常量别名。(Myron Marston)

2.14.6 / 2013-10-15

完整变更日志

Bug 修复

  • 在加载 mathn 库时,正确格式化字符串化的数字。(Jay Hayes)
  • 修复了阻止使用冻结错误对象的问题。(Lars Gierth)

2.14.5 / 2013-08-13

完整变更日志

Bug 修复

  • 修复了当没有声明共享示例或上下文并且调用RSpec.world.reset 时引发的NoMethodError。(thepoho, Jon Rowe, Myron Marston)
  • 修复了在module 范围中顶层声明shared_examples 时,错误显示的弃用警告。(Jon Rowe)
  • 修复了after(:all) 钩子,因此即使其中一个抛出错误,连续的(相同上下文)范围也会运行。(Jon Rowe, Trejkaz)
  • 如果未定义dump_profile,JsonFormatter 不会再崩溃 (Alex / @MasterLambaster, Jon Rowe)

2.14.4 / 2013-07-21

完整变更日志

Bug 修复

  • 修复了 2.14 中的回归:确保在加载规范文件之前加载配置的 require(通过-r 选项)。这允许规范文件以编程方式更改文件模式 (Jon Rowe)。
  • 如果RSpec::MocksRSpec::Expectations 未加载,则在引用时自动加载它们(RSpec::Matches 已自动加载一段时间)。在rspec gem 中,我们最近将其更改为默认情况下停止加载rspec/mocksrspec/expectations,因为一些用户报告了问题,他们打算使用 mocha,而不是 rspec-mocks,但 rspec-mocks 被加载并导致冲突。rspec-core 在适当的时间加载 mocks 和 expectations,因此这似乎是一个安全的更改——但对一些与 RSpec 集成的库的作者造成了问题。这解决了这个问题。(Myron Marston)
  • 优雅地处理类似rspec --profile path/to/spec.rb 的命令:path/to/spec.rb 参数被错误地视为profile 整数参数,使用to_i 转换为0,导致未打印出任何已分析的示例。(Jon Rowe)

2.14.3 / 2013-07-13

完整变更日志

Bug 修复

  • 修复了来自RSpec::Core::RakeTask 的弃用通知,使其在未加载所有 rspec-core 时正常工作。(这是 2.14 中的回归) (Jon Rowe)

2.14.2 / 2013-07-09

完整变更日志

Bug 修复

  • 修复了由 2.14.1 版本引起的回归:报告它们respond_to? 通知但没有相应方法的格式化程序在注册时会引发错误。新修复是只在弃用格式化程序上实现start,以解决原始的 JRuby/ruby-debug 问题。(Jon Rowe)

2.14.1 / 2013-07-08

完整变更日志

Bug 修复

  • 解决在 JRuby 上使用ruby-debug 时,弃用格式化程序失败的问题:修复RSpec::Core::Reporter 以便在格式化程序的通知方法实现来自Kernel 时不发送通知 (Alex Portnov, Jon Rowe)。

2.14.0 / 2013-07-06

完整变更日志

增强功能

  • 将焦点应用于使用fit 定义的示例(等效于it "description", focus: true)(Michael de Silva)

错误修复

  • 确保let 定义的方法在发生名称冲突时优先于其他方法(例如,来自包含的模块)。(Jon Rowe, Andy Lindeman 和 Myron Marston)

2.14.0.rc1 / 2013-05-27

完整变更日志

增强功能

  • 改进了 Git Bash 中的 Windows 检测,以便更好地处理--color
  • 将最慢的示例组的分析添加到--profile 选项中。输出按最慢的平均示例组排序。
  • 如果存在失败,并且同时使用--fail-fast--profile 选项,则不显示缓慢的示例 (Paweł Gościcki)。
  • 不再总是将spec 添加到加载路径,而是将配置的--default-path 添加到加载路径(默认为spec)。这更好地支持将规范放在不同目录中的人员 (John Feminella)。
  • 添加了一些逻辑来测试时间持续时间的精度。使其成为时间的函数,随着时间的增加而降低精度。(Aaron Kromer)
  • 添加了新的backtrace_inclusion_patterns 配置选项。与这些模式匹配的回溯行将始终包含在回溯中,即使它们也与排除模式匹配 (Sam Phippen)。
  • 使用- 支持解析.rspec 为 ERB 时使用 ERB 修剪模式 (Gabor Garami)。
  • 在没有块的情况下调用 let 和 subject 时,给出更好的错误消息。(Sam Phippen)。
  • 在配置文档中列出.rspec-local 的优先级 (Sam Phippen)
  • --pattern 选项中支持{a,b} shell 扩展语法 (Konstantin Haase)。
  • 添加了针对 --require 命令行选项的 cucumber 文档 (Bradley Schaefer)
  • 通过 config 公开配置选项
    • config.libs 返回配置为添加到加载路径的库
    • full_backtrace? 返回回溯清理程序的状态
    • debug? 当加载调试器时返回 true
    • line_numbers 返回我们正在过滤的行号(如果有)
    • full_description 返回用于过滤描述的正则表达式 (Jon Rowe)
  • 添加 RSpec.world 和 RSpec.configuration 的 setter (Alex Soulim)
  • 使用--warnings 配置 ruby 的警告行为 (Jon Rowe)
  • 修复了旧版本1.8.7 中的一个奇怪问题,在该问题中Time.dup 无法访问Time.now (Jon Rowe)
  • 使shared_examples_for 成为上下文感知的,以便键可以在多个上下文中安全地重复使用,而不会发生冲突。(Jon Rowe)
  • 添加可配置的deprecation_stream (Jon Rowe)
  • 通过格式化程序发布弃用信息 (David Chelimsky)

Bug 修复

  • 使 JSON 格式化程序在--profile 方面与文本格式化程序的行为相同 (Paweł Gościcki)。
  • 修复了命名主题,以便如果内部组定义了一个覆盖命名方法的方法,subject 仍然保留最初声明的值 (Myron Marston)。
  • 修复了随机排序,使其不会导致嵌套的同级上下文中的示例中的rand 返回相同的值 (Max Shytikov)。
  • 使用新的backtrace_inclusion_patterns 配置选项来确保在与默认排除模式之一匹配的目录(例如gems)中开发代码的人员仍然获得正常的回溯过滤 (Sam Phippen)。
  • 修复了before 钩子的排序,以便在RSpec.configure 中声明的before 钩子在共享上下文中声明的before 钩子之前运行 (Michi Huber 和 Tejas Dinkar)。
  • 修复了Example#full_description,以便在未提供文档字符串时,它由最后一个匹配器描述填充(因为Example#description 已经这样做了)(David Chelimsky)。
  • 修复了已记忆方法(letsubject)将define_method 泄漏为public 方法的问题。(Thomas Holmes 和 Jon Rowe) (#873)
  • 修复了来自测试套件的警告。(Pete Higgins)

弃用

  • 为了获得更大的一致性和对称性,弃用Configuration#backtrace_clean_patterns,转而使用Configuration#backtrace_exclusion_patterns,以与新的backtrace_inclusion_patterns 配置选项保持一致 (Sam Phippen)。
  • 弃用Configuration#requires=,转而使用 ruby 的require。命令行指定的 require 仍然可以通过Configuration#require 读取器访问。(Bradley Schaefer)
  • 弃用调用跨同级上下文定义的SharedExampleGroups (Jon Rowe)

2.13.1 / 2013-03-12

完整变更日志

Bug 修复

  • 使用钩子类作为代理,而不是扩展钩子块,以支持 before/after/around 钩子的 lambda。(David Chelimsky)
  • 修复了 2.13.0 中的回归,该回归导致在内部组中用未命名的主题覆盖命名主题,然后引用外部组主题的名称时,出现令人困惑的行为。此修复要求我们不允许在命名主题中使用super(无论如何都很混乱——命名主题创建 2 个方法,因此您正在对父示例组的哪个方法进行super?)但未命名主题中的super 仍然有效 (Myron Marston)。
  • 不允许在before(:all) 中引用的letsubject 导致其他let 声明泄漏到示例中 (Myron Marston)。
  • 解决 ruby 1.9 中的奇怪错误,该错误与String#match 相关联,该错误是通过从let 声明传递正则表达式触发的。有关更多信息,请参阅http://bugs.ruby-lang.org/issues/8059 (Aaron Kromer)。
  • 将缺少的require 'set' 添加到base_text_formatter.rb (Tom Anderson)。

弃用

  • 弃用在before(:all) 中访问letsubject 声明。这些不是为了在before(:all) 钩子中调用,因为它们存在于定义在每个示例之间重置的状态,而before(:all) 存在于定义跨示例组中的示例共享的状态 (Myron Marston)。

2.13.0 / 2013-02-23

完整变更日志

增强功能

  • 允许--profile 选项接受一个计数参数,该参数确定要转储的缓慢示例的数量 (Greggory Rothmeier)。
  • 添加subject!,它是let! 的类似物。它定义了一个显式主题,并设置了一个before 钩子,该钩子将调用主题 (Zubin Henner)。
  • 修复letsubject 声明,以便可以在其中使用superreturn,就像在普通方法中一样。(Myron Marston)
  • 允许分别配置输出颜色。(Charlie Maffitt)
  • 在给出--profile 选项时,始终转储缓慢的示例,即使示例失败 (Myron Marston)。

Bug 修复

  • 在为匿名错误类的实例转储错误输出时,不要爆炸。(Myron Marston)。
  • 修复默认回溯过滤器,以便名称中包含“gems”的项目的行不会被过滤,但已安装的 gem 的行仍然会被过滤 (Myron Marston)。
  • 修复 autotest 命令,使其使用双引号而不是单引号,以实现 Windows 兼容性 (Jonas Tingeborn)。
  • 修复 its,以便在父组中的 beforelet 声明中使用 subject 继续引用父组的主题。(Olek Janiszewski)

2.12.2 / 2012-12-13

完整变更日志

Bug 修复

  • 修复 RSpec::Core::RakeTask,使其与 ruby 1.8.7 上的 rake 0.8.7 兼容。我们在 2.12 版本中不小心将其破坏了(Myron Marston)。
  • 修复 RSpec::Core::RakeTask,使其为了向后兼容性而容忍 Rspec 常量(Patrick Van Stee)。

2.12.1 / 2012-12-01

完整变更日志

Bug 修复

  • 即使另一个 at_exit hook 调用 exit,也会运行规范。这允许 Test::Unit 和 RSpec 一起运行。(Suraj N. Kurapati)
  • 修复完整的文档字符串串联,使其处理方法字符串(例如 "#foo")嵌套在上下文字符串(例如 "when it is tuesday")下的情况,以便我们得到 "when it is tuesday #foo" 而不是 "when it is tuesday#foo"。(Myron Marston)。
  • 恢复我在 2.12.0 中无意中破坏的公共 API:RSpec::Core::Formatters::BaseFormatter#format_backtrce(backtrace, example)(Myron Marston)。

2.12.0 / 2012-11-12

完整变更日志

增强功能

  • 添加对组和示例的自定义排序策略的支持。(Myron Marston)
  • JSON 格式化程序(Alex Chaffee)
  • 重构 rake 任务内部(Sam Phippen)
  • 重构 HtmlFormatter(Pete Hodgson)
  • Autotest 支持包含空格的 Ruby 路径(dsisnero)
  • 当共享示例组被重新定义时提供有用的警告。(Mark Burns)。
  • --default_path 可以指定为 --default-line--line_number 可以指定为 --line-number。连字符是更习惯的命令行参数分隔符(Sam Phippen)。
  • 当使用无效的命令行选项时,会显示更有用的错误消息(Jordi Polo)。
  • 添加 format_docstrings { |str| } 配置选项。它可用于将格式规则应用于示例组和示例文档字符串。(Alex Tan)
  • 添加对 .rspec-local 选项文件支持。这旨在允许各个开发人员在 git 忽略的文件中设置选项,以覆盖 .rspec 中的常见项目选项。(Sam Phippen)
  • 支持 mocha 0.13.0。(Andy Lindeman)

Bug 修复

  • 删除对 ExampleGroup#ancestors 的覆盖。这是一个 RSpec 不应该覆盖的核心 Ruby 方法。相反,定义 ExampleGroup#parent_groups。(Myron Marston)
  • 将共享示例/上下文声明方法(shared_examples_for 等)的猴子修补限制在仅需要它的对象上,而不是系统中的每个对象(Myron Marston)。
  • 修复 Metadata#fetch 以支持计算值(Sam Goldman)。
  • 现在可以从嵌套组中的主题块内引用命名主题(tomykaira)。
  • 修复 fail_fast,使其在 before(:all) hook 中发生错误时正确退出(Bradley Schaefer)。
  • 使规范文件加载顺序一致,无论操作系统返回的文件顺序或命令行传递的顺序如何(Jo Liss 和 Sam Phippen)。
  • 确保 before(:all) 中的实例变量始终从 after(:all) 中公开,即使 before(:all) 中发生错误(Sam Phippen)。
  • rspec --init 不再生成有关 --configure 已被弃用的错误警告(Sam Phippen)。
  • 修复 1 seconds 的复数形式(Odin Dutton)
  • 修复 ANSICON URL(Jarmo Pertman)
  • 使用 Time 的 dup,以便在示例修改 Time 而未正确恢复的情况下,不会破坏报告。(David Chelimsky)

弃用

  • share_as 不再需要。shared_context 和/或 RSpec::SharedContext 提供了更好的机制(Sam Phippen)。
  • 弃用带有块的 RSpec.configuration(使用 RSpec.configure)。

2.11.1 / 2012-07-18

完整变更日志

Bug 修复

  • 修复我们自动加载 RSpec::Matchers 的方式,以便在 rspec-core 配置为肯定使用 rspec-expectations 之前,可以定义自定义匹配器。(Myron Marston)
  • 修复 -e 选项打印的 --help 消息中的拼写错误。(Jo Liss)
  • 修复 Ruby 警告。(Myron Marston)
  • 当示例已失败时,忽略模拟预期失败。模拟预期失败在这种情况下一直被忽略,但由于我在 27059bf1 中的更改,它会打印一条令人困惑的消息。(Myron Marston)。

2.11.0 / 2012-07-07

完整变更日志

增强功能

  • 支持多个 --example 选项。(Daniel Doubrovkine @dblock)
  • 命名主题,例如 subject(:article) { Article.new }
  • config.mock_withconfig.expect_with 如果给出,则将自定义配置对象传递给块
    • 有助于与 rspec-core 的配置分离
  • include_contextinclude_examples 支持一个块,该块将在当前上下文中进行评估(与 it_behaves_like 生成的嵌套上下文相反)。
  • config.order = 'random' 添加到 rspec --init 生成的 spec_helper.rb 中。
  • 延迟加载 DRb(Myron Marston)。
  • describe 的猴子修补限制在仅需要它的对象上,而不是系统中的每个对象(Myron Marston)。

Bug 修复

  • 支持替代路径分隔符。例如,在 Windows 上,您现在可以执行以下操作:rspec spec\subdir。(Jarmo Pertman @jarmo)
  • 当示例引发错误,并且 after 或 around hook 也引发错误时,打印出 hook 错误。以前,错误被静默,用户没有收到有关发生情况的反馈。(Myron Marston)
  • --require-I 在不同的配置源之间合并(Andy Lindeman)
  • 委托给 mocha 方法,而不是在 mocha 适配器中为它们创建别名。

2.10.1 / 2012-05-19

完整变更日志

Bug 修复

  • RSpec.reset 正确地重新初始化配置和世界
  • 在可能不总是字符串的异常消息上,在 split 之前调用 to_s(slyphon)

2.10.0 / 2012-05-03

完整变更日志

增强功能

  • 添加 prepend_beforeappend_after hook(preethiramdev)
    • 专为扩展库而设计
    • 恢复 rspec-1 行为
  • 对已分析示例的报告(moro)
    • 报告最慢示例的总运行时间。
    • 报告最慢示例在总运行时间中占多少百分比。

Bug 修复

  • 正确解析 SPEC_OPTS 选项。
  • example.description 如果没有显式描述或匹配器生成的描述,则返回示例的位置。
  • RDoc 修复(Grzegorz Świrski)
  • 在转储错误时,不要修改示例祖先(Michael Grosser)

2.9.0 / 2012-03-17

完整变更日志

增强功能

  • 支持格式化程序中的“X 分钟 X 秒”规范运行持续时间。(uzzz)
  • 从文档格式化程序中的组和示例名称中去除空格。
  • 删除了 spork-0.9 shim。如果您正在使用 spork-0.8.x,则需要升级到 0.9.0。

Bug 修复

  • 恢复 --full_backtrace 选项
  • 确保在通过 DRb(使用 spork)运行时,传递给 config.filter_run 的值会被尊重。
  • 确保共享示例组在运行后被重置(就像示例组一样)。
  • 从表示为 Proc 的过滤器调用中删除 rescue false
  • 确保 described_class 获取最近的常量(pyromaniac)
  • 在 "autorun" 中,如果存在异常(最可能是由于 SyntaxError),则不要在 at_exit hook 中运行规范。(sunaku)
  • 不要使用已用于扩展祖先组的模块扩展组。
  • its 正确地记忆 nil 或 false 值(Yamada Masaki)

2.8.0 / 2012-01-04

完整变更日志

Bug 修复

  • 对于元数据过滤,恢复将整个数组传递给 proc,而不是传递数组中的每个项目(weidenfreak)
  • 确保每个规范文件只加载一次
    • 修复了导致在命令中使用行号两次引用时,文件中的所有示例都运行的错误,例如:
      • rspec path/to/file:37 path/to/file:42

2.8.0.rc2 / 2011-12-19

完整变更日志

增强功能

  • 新的 --init 命令(Peter Schröder)
    • 生成 spec/spec_helper.rb
    • 删除过时的文件(经确认后)
    • --configure 命令合并,并使其弃用,该命令生成了 .rspec
  • 在可用时使用 require_relative(Ian Leitch)
  • include_contextinclude_examples 接受参数(Calvin Bascom)
  • 在 html 格式化程序中打印每个示例的时间(Richie Vos)
  • 一些美味的重构小片段(Sasha)
  • `it "does something", :x => :foo,'bar',/baz/
    • 支持将 n 个命令行标签值与示例或组匹配

2.8.0.rc1 / 2011-11-06

完整变更日志

增强功能

  • --order(Justin Ko)
    • 以随机顺序运行示例:--order rand
    • 指定种子:--order rand:123
  • --seed SEED
    • 等效于 --order rand:SEED
  • SharedContext 支持 let(David Chelimsky)
  • 过滤改进(David Chelimsky)
    • 覆盖来自命令行的相反标签
    • 覆盖来自命令行的 RSpec.configure 标签
    • --line_number 37 覆盖所有其他过滤器
    • path/to/file.rb:37 覆盖所有其他过滤器
    • 重构:将过滤器管理合并到 FilterManger 对象中
  • 消除 Ruby 警告(Matijs van Zuijlen)
  • 使 reporter.report 成为 API(David Chelimsky)
    • 支持扩展工具,如 interative_rspec

更改

  • config.color_enabled(getter/setter/predicate)更改为 color,以与 --[no]-color CLI 选项保持一致。
    • color_enabled 目前仍受支持,但可能会在 2.x 版本中被弃用,以便我们可以在 3.0 中将其删除。

Bug 修复

  • 确保 --tag foo:bar 中的 bar 传递到 DRb(Aaron Gibralter)
  • 修复嵌套深度为 3 的组的完整描述被重复的错误。
  • 恢复在文件加载后开始运行时间的报告。
    • 修复了运行时间在 spork 中累积的错误
    • 修复了与时间序列指标的兼容性
  • config.mock_withexpect_with 重新指定当前配置时,不要出错(Myron Marston)

  • 弃用

    • configuration.add_setting 上使用 :alias 选项。在原始设置声明中使用 :alias_with 代替。

2.7.1 / 2011-10-20

完整变更日志

Bug 修复

  • 告诉 autotest 在哪里找到 rspec 可执行文件

2.7.0 / 2011-10-16

完整变更日志

注意:RSpec 的发布策略规定次要版本中不应有任何向后不兼容的更改,但我们正在进行一项例外更改,以发布 RSpec 如何与其他命令行工具交互的更改。

从 2.7.0 开始,您必须显式 require "rspec/autorun",除非您使用 rspec 命令(该命令已经为您执行了此操作)。

增强功能

  • 添加 example.exception(David Chelimsky)
  • --default_path 命令行选项(Justin Ko)
  • 支持多个 --line_number 选项(David J. Hamilton)
    • 还支持 path/to/file.rb:5:9(运行第 5 行和第 9 行的示例)
  • 允许使用类/模块作为共享示例组标识符(Arthur Gunn)
  • 当找不到共享上下文时,显示友好的错误消息(Sławosz Sławiński)
  • 在重置配置时清除格式化程序(John Bintz)
  • 添加 xspecify 和 xexample 作为临时待处理方法(David Chelimsky)
  • 添加 --no-drb 选项(Iain Hecker)
  • 通过在加载代码之前注册开始时间,提供更准确的运行时间(David Chelimsky)
    • 在 2.8.0 中恢复
  • Rake 任务默认模式在符号链接目录中查找规范(Kelly Felkins)
  • Rake 任务不再做任何事情来调用 bundler,因为 Bundler 已经为我们处理了它。感谢 Andre Arko 的提示。
  • 添加 --failure-exit-code 选项(Chris Griego)

Bug 修复

  • 包含 Rake::DSL 以消除 Rake > 0.8.7 中的弃用警告(Pivotal Casebook)
  • 即使 let 块返回 nil,也只评估一次(Adam Meehan)
  • 修复 --pattern 选项(未被识别)(David Chelimsky)
  • 只使用 rspec 命令隐式 require "rspec/autorun"(David Chelimsky)
  • 确保 rspec 的 at_exit 定义退出代码(Daniel Doubrovkine)
  • 在 HTML 和 TextMate 格式化程序中显示正确的代码片段(Brian Faherty)

2.6.4 / 2011-06-06

完整变更日志

注意:RSpec 的发布策略规定补丁版本不应该包含新功能,但此项微小的增强功能意外地混入了。由于它没有添加新的 API,我们决定保留它,而不是回滚此版本。

增强功能

  • 添加运行单个失败示例的命令摘要。

Bug 修复

  • 在 DRb 中支持排除过滤器。(Yann Lugrin)
  • 修复通过 DRb 运行时 --example 的转义问题。(Elliot Winkler)
  • 使用标准 ANSI 代码进行颜色格式化,以便颜色在更广泛的颜色方案中工作。

2.6.3 / 2011-05-24

完整变更日志

Bug 修复

  • 显式地将退出代码转换为整数,避免在运行的返回值为由 DRb::DRbObject 代理的 IO 对象时出现 TypeError(Julian Scheid)
  • 阐明 --example 命令行选项的行为
  • 使用 rubygems-1.6.2 构建,以避免下游 yaml 解析错误

2.6.2 / 2011-05-21

完整变更日志

Bug 修复

  • 当 HOME 环境变量未定义时,发出警告而不是引发异常
  • 正确地将命令行排除与默认的 :if 和 :unless 合并(joshcooper)

2.6.1 / 2011-05-19

完整变更日志

Bug 修复

  • 当过滤器为 nil 时,不要扩展 nil
  • 运行 rcov 时,require 'rspec/autorun'

2.6.0 / 2011-05-12

完整变更日志

增强功能

  • shared_context(Damian Nurzynski)
    • 扩展与特定元数据匹配的组,使用
      • 方法定义
      • 主题声明
      • let/let! 声明
      • 等等(您可以在组中执行的任何操作)
  • 对于具有 #[] 的任何主题,its([:key]) 都有效。(Peter Jaros)
  • treat_symbols_as_metadata_keys_with_true_values(Myron Marston)
  • 在您定义示例后配置 RSpec 时,打印弃用警告。所有配置都应该在定义任何示例之前进行。(Myron Marston)
  • 将 DRb 运行的退出状态传递给调用进程。这会导致通过 DRb 运行的规范不仅返回 true 或 false。(Ilkka Laukkanen)
  • ConfigurationOptions#parse_options 的重构(Rodrigo Rosenfeld Rosas)
  • 在运行器输出中报告被排除的过滤器(来自 andyl 的提示)
  • 清理过滤器/标签的消息。
  • 从 rspec-1 还原 --pattern/-P 命令行选项
  • 在 config.full_backtrace= 中支持 false 和 true(Andreas Tolf Tolfsen)

Bug 修复

  • 不要因为没有消息的异常而绊倒(Hans Hasselberg)
  • 从导致 rcov 窒息的注释中删除非 ASCII 字符(Geoffrey Byers)
  • 修复了回溯,使其不再包含 autorun at_exit 钩子之前的行(Myron Marston)
  • 在定义第一个示例组时包含 RSpec::Matchers,而不仅仅是在运行示例之前。这解决了 ruby 1.9 中的一个难以捉摸的错误,该错误会导致无限递归。(Myron Marston)
  • 不要将 example_group_[started|finished] 发送到空组的格式化程序。
  • 让规范在 jruby 上通过(Sidu Ponnappa)
  • 修复了混合嵌套组和外部级别示例会导致不可预测的 :line_number 行为的错误(Artur Małecki)
  • 使用正则表达式转义 --example 的参数(来自 Elliot Winkler 的提示)
  • 正确地传递/失败具有消息期望的挂起块
  • CommandLine 返回退出状态 (0/1) 而不是 true/false
  • 如果不存在,则创建到格式化程序输出文件的路径(marekj)。

2.5.1 / 2011-02-06

完整变更日志

注意:此版本破坏了与 rspec/autotest/bundler 集成的兼容性,但这样做是为了大大简化它。

在此版本中,如果您希望生成的 autotest 命令包含 'bundle exec',请在项目根目录或您的主目录中的 .autotest 文件中要求 Autotest 的 bundler 插件

require "autotest/bundler"

现在,您只需在命令行中键入 'autotest',它就会按预期工作。

如果您不想要 'bundle exec',则无需执行任何操作。

2.5.0 / 2011-02-05

完整变更日志

增强功能

  • Autotest::Rspec2 解析传递给 autotest 的命令行参数,这些参数在 '--' 之后
  • autotest 命令的 --skip-bundler 选项
  • Autotest 正则表达式修复(Jon Rowe)
  • 将过滤器添加到 html 和 textmate 格式化程序(Daniel Quimper)
  • 显式传递块(JRuby 1.6 的需要)(John Firebaugh)

Bug 修复

  • 修复 HTML 格式化程序中的 dom ID(Brian Faherty)
  • 修复了 --drb + 格式化程序在不使用 drb 运行时的错误
  • 在 drb 参数中包含 --tag 选项(monocle)
  • 修复回归,因此 SPEC_OPTS 现在再次优先于 CLI 选项(Roman Chernyatchik)
  • 只调用一次 its(:attribute)(来自 Brian Dunn 的失败示例)
  • 修复了 rspec 在 String.alias :to_int :to_i 之后挂起的奇怪错误(Damian Nurzynski)

弃用

  • 在 Gemfile 存在时隐式包含 'bundle exec'(使用 autotest 的 bundler 插件代替)

2.4.0 / 2011-01-02

完整变更日志

增强功能

  • 在 -d 上启动调试器,以便在它停止时堆栈跟踪可见(Clifford Heath)
  • 将钩子过滤应用于示例和组(Myron Marston)
  • 支持多个格式化程序,每个格式化程序都有自己的输出
  • 在失败消息中显示异常类,除非它们来自 RSpec 匹配器或消息期望
  • before(:all) { pending } 将所有示例设置为挂起

Bug 修复

  • 修复了由于 Ruby 1.9.3-dev 中 reject 行为变化而导致的错误(Shota Fukumori)
  • 修复了在 jruby 中运行时的错误:明确地将块传递给 super(John Firebaugh)
  • rake 任务不会因为带有引号的路径而窒息(Janmejay Singh)
  • 从 rspec-1 还原 --options 选项
  • require 'ostruct' 以修复 its([key]) 的错误(Kim Burgestrand)
  • --configure 选项生成 .rspec 文件而不是 autotest/discover.rb

2.3.1 / 2010-12-16

完整变更日志

Bug 修复

  • 如果尚未定义 RSpec.configuration.error_stream,则将调试器警告消息发送到 $stdout。
  • HTML 格式化程序 *终于* 正确地显示嵌套组(Jarmo Pertman)
  • 消除运行 RSpec 自身套件时的一些警告(Jarmo Pertman)

2.3.0 / 2010-12-12

完整变更日志

增强功能

  • 告诉 autotest 在项目根目录中看到 .rspec 文件时使用 "rspec2"
    • 取代了对 ./autotest/discover.rb 的需求,后者不适用于所有版本的 ZenTest 和/或 autotest
  • config.expect_with
    • :rspec # => rspec/expectations
    • :stdlib # => test/unit/assertions
    • :rspec, :stdlib # => 两者都有

Bug 修复

  • 修复 dev Gemfile 以在非 mac-os 机器上工作(Lake Denman)
  • 确保显式主题只评估一次(Laszlo Bacsi)

2.2.1 / 2010-11-28

完整变更日志

Bug 修复

  • 使用 alias_method 而不是覆盖 Kernel#method_missing(John Wilger)
  • 将 --autotest 更改为 --tty 在生成的命令中(MIKAMI Yoshiyuki)
  • 恢复对调试器的更改(它引入了与 Rails 的冲突)
    • 还恢复了 --debugger/-debug 选项

2.2.0 / 2010-11-28

完整变更日志

弃用/更改

  • 命令行上的 --debug/-d 已弃用,现在无效
  • win32console 现在被忽略;Windows 用户必须使用 ANSICON 来获得颜色支持(Bosko Ivanisevic)

增强功能

  • 在本地开发时,rspec-core 现在可以使用 rspec-dev 设置或您的本地 gem
  • 当 rspec-1 与 rspec-2 一起加载时,引发带有有用消息的异常(Justin Ko)
  • 调试器语句 *只要安装了 ruby-debug,就可以正常工作*
    • 否则你会收到警告,但不会被解雇
  • 在 around 钩子中公开 example.metadata
  • 性能改进(现在快得多)

Bug 修复

  • 确保 --fail-fast 在 drb 中生效
  • 将 -Ilib:spec 传递给 rcov

2.1.0 / 2010-11-07

完整变更日志

增强功能

  • 在 rake 任务中添加 skip_bundler 选项,以告诉 rake 任务忽略 Gemfile 的存在(jfelchner)
  • 在 rake 任务中添加 gemfile 选项,以告诉 rake 任务要查找哪个 Gemfile(默认为 'Gemfile')
  • 允许将调用者跟踪传递到 Metadata 以支持扩展(Glenn Vanderburg)
  • 添加 Spec::Runner.configure 的弃用警告,以帮助从 RSpec-1 升级
  • 添加已弃用的 Spec::Rake::SpecTask 以帮助从 RSpec-1 升级
  • 添加 'autospec' 命令,带有帮助信息,以帮助从 RSpec-1 升级
  • 添加对 CLI 上使用标签进行过滤的支持(Lailson Bandeira)
  • 在 bin/rspec 中 require 失败时,添加有关 RUBYOPT 的有用消息(slyphon)
  • 将 "-Ilib" 添加到默认的 rcov 选项中(Tianyi Cui)
  • 使期望框架可配置(默认当然为 rspec)(Justin Ko)
  • 添加 'pending' 以使其成为条件(Myron Marston)
  • 添加对 :if 和 :unless 作为元数据键的显式支持,用于有条件地运行示例(Myron Marston)
  • 添加 --fail-fast 命令行选项(Jeff Kreeftmeijer)

Bug 修复

  • 消除使用 "subject { self }" 时的堆栈溢出
  • 在 Raketask 中 require 'rspec/core'(确保在运行 rcov 时已 require 它)

2.0.1 / 2010-10-18

完整变更日志

Bug 修复

  • 在使用 spork + autotest 时恢复颜色
  • 没有文档字符串的挂起示例会渲染正确的消息(Josep M. Bach)
  • 修复了以除 _spec.rb 之外的任何内容结尾的规范文件中的失败会在令人困惑的方式下失败的错误。
  • 在 html 格式化程序中支持来自 erb 模板的回溯行(Alex Crichton)

2.0.0 / 2010-10-10

完整变更日志

RSpec-1 兼容性

  • 如果存在,Rake 任务将使用 ENV["SPEC"] 作为文件列表

Bug 修复

  • 错误修复:optparse --out foo.txt(Leonardo Bessa)
  • 抑制非 tty 输出的颜色代码(autotest 除外)

2.0.0.rc / 2010-10-05

完整变更日志

增强功能

  • 隐式地 require 未知的格式化程序,这样您就不必在命令行中显式地 require 该文件(Michael Grosser)
  • 添加 --out/-o 选项以分配输出目标
  • 添加了 fail_fast 配置选项,以便在第一次失败时中止
  • 支持 Hash 主题(its([:key]) { should == value })(Josep M. Bach)

Bug 修复

  • 显式地 require rspec 版本以修复损坏的 rdoc 任务(Hans de Graaff)
  • 忽略来自其他语言(如 Java 或 Javascript)的回溯行(Charles Lowell)
  • Rake 任务现在在设置(或不设置)fail_on_error 和 verbose 时执行预期操作
  • 修复了在排除的嵌套组上运行 before/after(:all) 钩子的错误(Myron Marston)
  • 修复了 before(:all) 错误处理,使其也使嵌套组中的示例失败(Myron Marston)

2.0.0.beta.22 / 2010-09-12

完整变更日志

增强功能

  • 删除了 at_exit 钩子
  • CTRL-C 几乎立即停止运行
    • 首先,它通过运行适当的 after(:all) 和 after(:suite) 钩子来清理事物
    • 然后,它报告已经运行的任何示例
  • 清理了 rake 任务
    • 在各种条件下生成正确的任务
    • 选项更加一致
    • 弃用冗余选项
  • 当 Gemfile 存在时,运行 'bundle exec autotest'
  • 在 .rspec 选项文件中支持 ERB(Justin Ko)
  • 依赖 bundler 来完成开发任务(Myron Marston)
  • 将 example_group_finished 添加到格式化程序和报告器(Roman Chernyatchik)

Bug 修复

  • 在使用 autotest 时支持包含空格的路径(Andreas Neuhaus)
  • 修复 ruby 1.8.6 中的 module_exec(Myron Marston)
  • 从顶层删除 context 方法
    • 例如,与 irb 冲突
  • before(:all) 中的错误现在被正确报告(Chad Humphries)

删除

  • 删除了 -o --options-file 命令行选项
    • 使用 ./.rspec 和 ~/.rspec