You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

deprecate.rb 1.5 kB

2 years ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # frozen_string_literal: true
  2. require 'cucumber/platform'
  3. require 'cucumber/gherkin/formatter/ansi_escapes'
  4. module Cucumber
  5. module Deprecate
  6. class AnsiString
  7. include Cucumber::Gherkin::Formatter::AnsiEscapes
  8. def self.failure_message(message)
  9. AnsiString.new.failure_message(message)
  10. end
  11. def failure_message(message)
  12. failed + message + reset
  13. end
  14. end
  15. class CliOption
  16. def self.deprecate(stream, option, message, remove_after_version)
  17. return if stream.nil?
  18. stream.puts(
  19. AnsiString.failure_message(
  20. "\nWARNING: #{option} is deprecated" \
  21. " and will be removed after version #{remove_after_version}.\n#{message}.\n"
  22. )
  23. )
  24. end
  25. end
  26. module ForUsers
  27. def self.call(message, method, remove_after_version)
  28. $stderr.puts AnsiString.failure_message(
  29. "\nWARNING: ##{method} is deprecated" \
  30. " and will be removed after version #{remove_after_version}. #{message}.\n" \
  31. "(Called from #{caller(3..3).first})"
  32. )
  33. end
  34. end
  35. module ForDevelopers
  36. def self.call(_message, _method, remove_after_version)
  37. raise "This method is due for removal after version #{remove_after_version}" if Cucumber::VERSION >= remove_after_version
  38. end
  39. end
  40. STRATEGY = $PROGRAM_NAME =~ /rspec$/ ? ForDevelopers : ForUsers
  41. end
  42. def self.deprecate(*args)
  43. Deprecate::STRATEGY.call(*args)
  44. end
  45. end

No Description

Contributors (1)