From 1338a734b54239b0e6b4af5ff46ec7d91c1a6afb Mon Sep 17 00:00:00 2001 From: David Balatero Date: Thu, 25 Mar 2021 18:55:40 -0400 Subject: [PATCH] Remove dependency on colorize --- Gemfile.lock | 10 ++--- capybara-chromedriver-logger.gemspec | 1 - lib/capybara/chromedriver/logger/message.rb | 37 +++++++++++++++++-- .../chromedriver/logger/collector_spec.rb | 2 + 4 files changed, 39 insertions(+), 11 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index cfcf84f..ef60500 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,25 +3,23 @@ PATH specs: capybara-chromedriver-logger (0.3.0) capybara - colorize GEM remote: https://rubygems.org/ specs: addressable (2.7.0) public_suffix (>= 2.0.2, < 5.0) - capybara (3.31.0) + capybara (3.35.3) addressable mini_mime (>= 0.1.3) nokogiri (~> 1.8) rack (>= 1.6.0) rack-test (>= 0.6.3) - regexp_parser (~> 1.5) + regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) childprocess (0.8.0) ffi (~> 1.0, >= 1.0.11) coderay (1.1.2) - colorize (0.8.1) diff-lcs (1.3) ffi (1.12.2) gem-release (2.0.1) @@ -33,12 +31,12 @@ GEM pry (0.11.3) coderay (~> 1.1.0) method_source (~> 0.9.0) - public_suffix (4.0.3) + public_suffix (4.0.6) rack (2.0.8) rack-test (1.1.0) rack (>= 1.0, < 3) rake (13.0.1) - regexp_parser (1.7.0) + regexp_parser (2.1.1) rspec (3.7.0) rspec-core (~> 3.7.0) rspec-expectations (~> 3.7.0) diff --git a/capybara-chromedriver-logger.gemspec b/capybara-chromedriver-logger.gemspec index 48b3949..7939646 100644 --- a/capybara-chromedriver-logger.gemspec +++ b/capybara-chromedriver-logger.gemspec @@ -30,7 +30,6 @@ Gem::Specification.new do |spec| spec.require_paths = ["lib"] spec.add_dependency "capybara" - spec.add_dependency "colorize" spec.add_development_dependency "bundler", "~> 1.16" spec.add_development_dependency "gem-release" diff --git a/lib/capybara/chromedriver/logger/message.rb b/lib/capybara/chromedriver/logger/message.rb index 64140f7..065ddd3 100644 --- a/lib/capybara/chromedriver/logger/message.rb +++ b/lib/capybara/chromedriver/logger/message.rb @@ -1,5 +1,3 @@ -require 'colorize' - module Capybara module Chromedriver module Logger @@ -33,6 +31,15 @@ def error? private + COLOR_CODES = { + default: 49, + light_red: 101, + light_green: 102, + light_blue: 103, + light_magenta: 105, + light_cyan: 106, + }.freeze + COLORS = { 'SEVERE' => :light_red, 'INFO' => :light_green, @@ -40,6 +47,11 @@ def error? 'DEBUG' => :light_blue }.freeze + COLOR_MODES = { + default: 0, + bold: 1, + }.freeze + LEADING_SPACES = ' ' * 5 def formatted_message @@ -56,13 +68,20 @@ def level_color end def log_level - " #{level.downcase} ".colorize(color: :white, background: level_color).bold + colorize( + " #{level.downcase} ", + mode: :bold, + background: level_color, + ) end def file_and_location return unless file && location - "#{file} #{location}".colorize(color: :white, background: :light_magenta) + colorize( + "#{file} #{location}", + background: :light_magenta + ) end def extract_file_and_location! @@ -73,6 +92,16 @@ def extract_file_and_location! _, @file, @location, message = match.to_a @message = message.gsub(/^"(.+?)"$/, '\1') end + + def colorize(msg, background: :default, mode: :default) + mode_code = COLOR_MODES.fetch(mode) + color_code = 97 # white + background_code = COLOR_CODES.fetch(background) + + str = "\033[#{mode_code};#{color_code};#{background_code}m" + str += msg + str + "\033[0m" + end end end end diff --git a/spec/capybara/chromedriver/logger/collector_spec.rb b/spec/capybara/chromedriver/logger/collector_spec.rb index 4e4118f..6de41dd 100644 --- a/spec/capybara/chromedriver/logger/collector_spec.rb +++ b/spec/capybara/chromedriver/logger/collector_spec.rb @@ -35,6 +35,7 @@ expect_to_have_inserted_element expect { logger.flush_and_check_errors! } .to raise_error(Capybara::Chromedriver::Logger::JsError, /A console error/) + expect_log_message("A console error") end @@ -52,6 +53,7 @@ expect_to_have_inserted_element logger.flush_and_check_errors! + expect_log_message("A console log") end