From 400cc609fc4e4ca83b769a12e6a2842e18c1129e Mon Sep 17 00:00:00 2001 From: Sam Livingston-Gray Date: Thu, 24 Apr 2025 11:31:54 -0700 Subject: [PATCH 01/11] . r characterize #default_launcher --- spec/reporters/default_launcher_spec.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 spec/reporters/default_launcher_spec.rb diff --git a/spec/reporters/default_launcher_spec.rb b/spec/reporters/default_launcher_spec.rb new file mode 100644 index 0000000..c057610 --- /dev/null +++ b/spec/reporters/default_launcher_spec.rb @@ -0,0 +1,19 @@ +require 'spec_helper' + +describe "#default_launcher" do + def default_launcher_for(reporter_name) + klass = ::Approvals::Reporters.const_get(reporter_name) + reporter = klass.ancestors.include?(Singleton) ? klass.instance : klass.new + reporter.default_launcher + end + + def launcher(name) + Approvals::Reporters::Launcher.send(name) + end + + it { expect( default_launcher_for(:DiffmergeReporter) ).to eq launcher(:diffmerge) } + it { expect( default_launcher_for(:FilelauncherReporter) ).to eq launcher(:filelauncher) } + it { expect( default_launcher_for(:OpendiffReporter) ).to eq launcher(:opendiff) } + it { expect( default_launcher_for(:TortoisediffReporter) ).to eq launcher(:tortoisediff) } + it { expect( default_launcher_for(:VimdiffReporter) ).to eq launcher(:vimdiff) } +end From 50717350614d2b279c11f9b77dca913127b4e839 Mon Sep 17 00:00:00 2001 From: Sam Livingston-Gray Date: Thu, 24 Apr 2025 11:07:55 -0700 Subject: [PATCH 02/11] . r Extract Superclass --- lib/approvals/reporters/diffmerge_reporter.rb | 8 +------- lib/approvals/reporters/filelauncher_reporter.rb | 8 +------- lib/approvals/reporters/opendiff_reporter.rb | 8 +------- lib/approvals/reporters/singleton_reporter.rb | 11 +++++++++++ lib/approvals/reporters/tortoisediff_reporter.rb | 8 +------- lib/approvals/reporters/vimdiff_reporter.rb | 8 +------- 6 files changed, 16 insertions(+), 35 deletions(-) create mode 100644 lib/approvals/reporters/singleton_reporter.rb diff --git a/lib/approvals/reporters/diffmerge_reporter.rb b/lib/approvals/reporters/diffmerge_reporter.rb index dee1351..117824b 100644 --- a/lib/approvals/reporters/diffmerge_reporter.rb +++ b/lib/approvals/reporters/diffmerge_reporter.rb @@ -1,12 +1,6 @@ module Approvals module Reporters - class DiffmergeReporter < Reporter - include Singleton - - def self.report(received, approved) - instance.report(received, approved) - end - + class DiffmergeReporter < SingletonReporter def default_launcher Launcher.diffmerge end diff --git a/lib/approvals/reporters/filelauncher_reporter.rb b/lib/approvals/reporters/filelauncher_reporter.rb index 0133779..44e81a5 100644 --- a/lib/approvals/reporters/filelauncher_reporter.rb +++ b/lib/approvals/reporters/filelauncher_reporter.rb @@ -1,12 +1,6 @@ module Approvals module Reporters - class FilelauncherReporter < Reporter - include Singleton - - def self.report(received, approved = nil) - instance.report(received, approved) - end - + class FilelauncherReporter < SingletonReporter def default_launcher Launcher.filelauncher end diff --git a/lib/approvals/reporters/opendiff_reporter.rb b/lib/approvals/reporters/opendiff_reporter.rb index 0c96e1e..6033135 100644 --- a/lib/approvals/reporters/opendiff_reporter.rb +++ b/lib/approvals/reporters/opendiff_reporter.rb @@ -1,12 +1,6 @@ module Approvals module Reporters - class OpendiffReporter < Reporter - include Singleton - - def self.report(received, approved) - instance.report(received, approved) - end - + class OpendiffReporter < SingletonReporter def default_launcher Launcher.opendiff end diff --git a/lib/approvals/reporters/singleton_reporter.rb b/lib/approvals/reporters/singleton_reporter.rb new file mode 100644 index 0000000..1479153 --- /dev/null +++ b/lib/approvals/reporters/singleton_reporter.rb @@ -0,0 +1,11 @@ +module Approvals + module Reporters + class SingletonReporter + include Singleton + + def self.report(received, approved) + instance.report(received, approved) + end + end + end +end diff --git a/lib/approvals/reporters/tortoisediff_reporter.rb b/lib/approvals/reporters/tortoisediff_reporter.rb index 7298755..e1fdcb3 100644 --- a/lib/approvals/reporters/tortoisediff_reporter.rb +++ b/lib/approvals/reporters/tortoisediff_reporter.rb @@ -1,12 +1,6 @@ module Approvals module Reporters - class TortoisediffReporter < Reporter - include Singleton - - def self.report(received, approved) - instance.report(received, approved) - end - + class TortoisediffReporter < SingletonReporter def default_launcher Launcher.tortoisediff end diff --git a/lib/approvals/reporters/vimdiff_reporter.rb b/lib/approvals/reporters/vimdiff_reporter.rb index d23cf75..5c0f2e0 100644 --- a/lib/approvals/reporters/vimdiff_reporter.rb +++ b/lib/approvals/reporters/vimdiff_reporter.rb @@ -1,12 +1,6 @@ module Approvals module Reporters - class VimdiffReporter < Reporter - include Singleton - - def self.report(received, approved) - instance.report(received, approved) - end - + class VimdiffReporter < SingletonReporter def default_launcher Launcher.vimdiff end From f711fb6522a085f0ebd2f3235670dc0585e4fa7d Mon Sep 17 00:00:00 2001 From: Sam Livingston-Gray Date: Thu, 24 Apr 2025 11:32:46 -0700 Subject: [PATCH 03/11] . r pull up method --- lib/approvals/reporters/diffmerge_reporter.rb | 3 --- lib/approvals/reporters/filelauncher_reporter.rb | 3 --- lib/approvals/reporters/opendiff_reporter.rb | 3 --- lib/approvals/reporters/singleton_reporter.rb | 16 ++++++++++++++++ lib/approvals/reporters/tortoisediff_reporter.rb | 3 --- lib/approvals/reporters/vimdiff_reporter.rb | 3 --- 6 files changed, 16 insertions(+), 15 deletions(-) diff --git a/lib/approvals/reporters/diffmerge_reporter.rb b/lib/approvals/reporters/diffmerge_reporter.rb index 117824b..fa68674 100644 --- a/lib/approvals/reporters/diffmerge_reporter.rb +++ b/lib/approvals/reporters/diffmerge_reporter.rb @@ -1,9 +1,6 @@ module Approvals module Reporters class DiffmergeReporter < SingletonReporter - def default_launcher - Launcher.diffmerge - end end end end diff --git a/lib/approvals/reporters/filelauncher_reporter.rb b/lib/approvals/reporters/filelauncher_reporter.rb index 44e81a5..e4749ef 100644 --- a/lib/approvals/reporters/filelauncher_reporter.rb +++ b/lib/approvals/reporters/filelauncher_reporter.rb @@ -1,9 +1,6 @@ module Approvals module Reporters class FilelauncherReporter < SingletonReporter - def default_launcher - Launcher.filelauncher - end end end end diff --git a/lib/approvals/reporters/opendiff_reporter.rb b/lib/approvals/reporters/opendiff_reporter.rb index 6033135..b5299a4 100644 --- a/lib/approvals/reporters/opendiff_reporter.rb +++ b/lib/approvals/reporters/opendiff_reporter.rb @@ -1,9 +1,6 @@ module Approvals module Reporters class OpendiffReporter < SingletonReporter - def default_launcher - Launcher.opendiff - end end end end diff --git a/lib/approvals/reporters/singleton_reporter.rb b/lib/approvals/reporters/singleton_reporter.rb index 1479153..4cbfb15 100644 --- a/lib/approvals/reporters/singleton_reporter.rb +++ b/lib/approvals/reporters/singleton_reporter.rb @@ -6,6 +6,22 @@ class SingletonReporter def self.report(received, approved) instance.report(received, approved) end + + def default_launcher + Launcher.send(launcher_name) + end + + private + + def launcher_name + self + .class + .name + .split("::") + .last + .gsub(/Reporter$/, '') + .downcase + end end end end diff --git a/lib/approvals/reporters/tortoisediff_reporter.rb b/lib/approvals/reporters/tortoisediff_reporter.rb index e1fdcb3..d9dfc27 100644 --- a/lib/approvals/reporters/tortoisediff_reporter.rb +++ b/lib/approvals/reporters/tortoisediff_reporter.rb @@ -1,9 +1,6 @@ module Approvals module Reporters class TortoisediffReporter < SingletonReporter - def default_launcher - Launcher.tortoisediff - end end end end diff --git a/lib/approvals/reporters/vimdiff_reporter.rb b/lib/approvals/reporters/vimdiff_reporter.rb index 5c0f2e0..2001bf0 100644 --- a/lib/approvals/reporters/vimdiff_reporter.rb +++ b/lib/approvals/reporters/vimdiff_reporter.rb @@ -1,9 +1,6 @@ module Approvals module Reporters class VimdiffReporter < SingletonReporter - def default_launcher - Launcher.vimdiff - end end end end From 38a70aa8c30b960313b9d49f08fea4a4e88b3460 Mon Sep 17 00:00:00 2001 From: Sam Livingston-Gray Date: Thu, 24 Apr 2025 11:40:12 -0700 Subject: [PATCH 04/11] . r Remove Singleton from SingletonReporter --- lib/approvals/reporters/singleton_reporter.rb | 6 ------ 1 file changed, 6 deletions(-) diff --git a/lib/approvals/reporters/singleton_reporter.rb b/lib/approvals/reporters/singleton_reporter.rb index 4cbfb15..02d7e32 100644 --- a/lib/approvals/reporters/singleton_reporter.rb +++ b/lib/approvals/reporters/singleton_reporter.rb @@ -1,12 +1,6 @@ module Approvals module Reporters class SingletonReporter - include Singleton - - def self.report(received, approved) - instance.report(received, approved) - end - def default_launcher Launcher.send(launcher_name) end From 1bfe121b2a09e750c45c9a1fbc73bec13984e266 Mon Sep 17 00:00:00 2001 From: Sam Livingston-Gray Date: Thu, 24 Apr 2025 11:40:21 -0700 Subject: [PATCH 05/11] . r simplify test helper --- spec/reporters/default_launcher_spec.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/spec/reporters/default_launcher_spec.rb b/spec/reporters/default_launcher_spec.rb index c057610..46739eb 100644 --- a/spec/reporters/default_launcher_spec.rb +++ b/spec/reporters/default_launcher_spec.rb @@ -3,8 +3,7 @@ describe "#default_launcher" do def default_launcher_for(reporter_name) klass = ::Approvals::Reporters.const_get(reporter_name) - reporter = klass.ancestors.include?(Singleton) ? klass.instance : klass.new - reporter.default_launcher + klass.new.default_launcher end def launcher(name) From 6aaa9779415a041ae91ca4ff623a77b40826fb67 Mon Sep 17 00:00:00 2001 From: Sam Livingston-Gray Date: Thu, 24 Apr 2025 11:41:55 -0700 Subject: [PATCH 06/11] . r Naming Things --- lib/approvals/reporters/diffmerge_reporter.rb | 2 +- lib/approvals/reporters/filelauncher_reporter.rb | 2 +- .../reporters/{singleton_reporter.rb => named_reporter.rb} | 2 +- lib/approvals/reporters/opendiff_reporter.rb | 2 +- lib/approvals/reporters/tortoisediff_reporter.rb | 2 +- lib/approvals/reporters/vimdiff_reporter.rb | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) rename lib/approvals/reporters/{singleton_reporter.rb => named_reporter.rb} (91%) diff --git a/lib/approvals/reporters/diffmerge_reporter.rb b/lib/approvals/reporters/diffmerge_reporter.rb index fa68674..d2e8d44 100644 --- a/lib/approvals/reporters/diffmerge_reporter.rb +++ b/lib/approvals/reporters/diffmerge_reporter.rb @@ -1,6 +1,6 @@ module Approvals module Reporters - class DiffmergeReporter < SingletonReporter + class DiffmergeReporter < NamedReporter end end end diff --git a/lib/approvals/reporters/filelauncher_reporter.rb b/lib/approvals/reporters/filelauncher_reporter.rb index e4749ef..02506b1 100644 --- a/lib/approvals/reporters/filelauncher_reporter.rb +++ b/lib/approvals/reporters/filelauncher_reporter.rb @@ -1,6 +1,6 @@ module Approvals module Reporters - class FilelauncherReporter < SingletonReporter + class FilelauncherReporter < NamedReporter end end end diff --git a/lib/approvals/reporters/singleton_reporter.rb b/lib/approvals/reporters/named_reporter.rb similarity index 91% rename from lib/approvals/reporters/singleton_reporter.rb rename to lib/approvals/reporters/named_reporter.rb index 02d7e32..22a8b22 100644 --- a/lib/approvals/reporters/singleton_reporter.rb +++ b/lib/approvals/reporters/named_reporter.rb @@ -1,6 +1,6 @@ module Approvals module Reporters - class SingletonReporter + class NamedReporter def default_launcher Launcher.send(launcher_name) end diff --git a/lib/approvals/reporters/opendiff_reporter.rb b/lib/approvals/reporters/opendiff_reporter.rb index b5299a4..cd74d34 100644 --- a/lib/approvals/reporters/opendiff_reporter.rb +++ b/lib/approvals/reporters/opendiff_reporter.rb @@ -1,6 +1,6 @@ module Approvals module Reporters - class OpendiffReporter < SingletonReporter + class OpendiffReporter < NamedReporter end end end diff --git a/lib/approvals/reporters/tortoisediff_reporter.rb b/lib/approvals/reporters/tortoisediff_reporter.rb index d9dfc27..2df9e0a 100644 --- a/lib/approvals/reporters/tortoisediff_reporter.rb +++ b/lib/approvals/reporters/tortoisediff_reporter.rb @@ -1,6 +1,6 @@ module Approvals module Reporters - class TortoisediffReporter < SingletonReporter + class TortoisediffReporter < NamedReporter end end end diff --git a/lib/approvals/reporters/vimdiff_reporter.rb b/lib/approvals/reporters/vimdiff_reporter.rb index 2001bf0..571638a 100644 --- a/lib/approvals/reporters/vimdiff_reporter.rb +++ b/lib/approvals/reporters/vimdiff_reporter.rb @@ -1,6 +1,6 @@ module Approvals module Reporters - class VimdiffReporter < SingletonReporter + class VimdiffReporter < NamedReporter end end end From 860a4e28136167ddc299fe0cea2e3d36b3638d8b Mon Sep 17 00:00:00 2001 From: Sam Livingston-Gray Date: Thu, 24 Apr 2025 12:07:01 -0700 Subject: [PATCH 07/11] . r Extract Method x5 --- lib/approvals/reporters/diffmerge_reporter.rb | 3 +++ lib/approvals/reporters/filelauncher_reporter.rb | 3 +++ lib/approvals/reporters/launcher.rb | 10 +++++----- lib/approvals/reporters/opendiff_reporter.rb | 3 +++ lib/approvals/reporters/tortoisediff_reporter.rb | 3 +++ lib/approvals/reporters/vimdiff_reporter.rb | 3 +++ 6 files changed, 20 insertions(+), 5 deletions(-) diff --git a/lib/approvals/reporters/diffmerge_reporter.rb b/lib/approvals/reporters/diffmerge_reporter.rb index d2e8d44..1fc304e 100644 --- a/lib/approvals/reporters/diffmerge_reporter.rb +++ b/lib/approvals/reporters/diffmerge_reporter.rb @@ -1,6 +1,9 @@ module Approvals module Reporters class DiffmergeReporter < NamedReporter + def self.command(received, approved) + "/Applications/DiffMerge.app/Contents/MacOS/DiffMerge --nosplash \"#{received}\" \"#{approved}\"" + end end end end diff --git a/lib/approvals/reporters/filelauncher_reporter.rb b/lib/approvals/reporters/filelauncher_reporter.rb index 02506b1..50ca7b5 100644 --- a/lib/approvals/reporters/filelauncher_reporter.rb +++ b/lib/approvals/reporters/filelauncher_reporter.rb @@ -1,6 +1,9 @@ module Approvals module Reporters class FilelauncherReporter < NamedReporter + def self.command(received, _) + "open #{received}" + end end end end diff --git a/lib/approvals/reporters/launcher.rb b/lib/approvals/reporters/launcher.rb index 3fe3b1f..000de02 100644 --- a/lib/approvals/reporters/launcher.rb +++ b/lib/approvals/reporters/launcher.rb @@ -24,23 +24,23 @@ def memoized(instance_variable) end def opendiff_command(received, approved) - "opendiff #{received} #{approved}" + OpendiffReporter.command(received, approved) end def diffmerge_command(received, approved) - "/Applications/DiffMerge.app/Contents/MacOS/DiffMerge --nosplash \"#{received}\" \"#{approved}\"" + DiffmergeReporter.command(received, approved) end def vimdiff_command(received, approved) - "vimdiff #{received} #{approved}" + VimdiffReporter.command(received, approved) end def tortoisediff_command(received, approved) - "C:\\Program Files\\TortoiseSVN\\bin\\TortoiseMerge.exe #{received} #{approved}" + TortoisediffReporter.command(received, approved) end def filelauncher_command(received, approved) - "open #{received}" + FilelauncherReporter.command(received, approved) end end end diff --git a/lib/approvals/reporters/opendiff_reporter.rb b/lib/approvals/reporters/opendiff_reporter.rb index cd74d34..2b004f5 100644 --- a/lib/approvals/reporters/opendiff_reporter.rb +++ b/lib/approvals/reporters/opendiff_reporter.rb @@ -1,6 +1,9 @@ module Approvals module Reporters class OpendiffReporter < NamedReporter + def self.command(received, approved) + "opendiff #{received} #{approved}" + end end end end diff --git a/lib/approvals/reporters/tortoisediff_reporter.rb b/lib/approvals/reporters/tortoisediff_reporter.rb index 2df9e0a..6d3c0b3 100644 --- a/lib/approvals/reporters/tortoisediff_reporter.rb +++ b/lib/approvals/reporters/tortoisediff_reporter.rb @@ -1,6 +1,9 @@ module Approvals module Reporters class TortoisediffReporter < NamedReporter + def self.command(received, approved) + "C:\\Program Files\\TortoiseSVN\\bin\\TortoiseMerge.exe #{received} #{approved}" + end end end end diff --git a/lib/approvals/reporters/vimdiff_reporter.rb b/lib/approvals/reporters/vimdiff_reporter.rb index 571638a..e94fe7b 100644 --- a/lib/approvals/reporters/vimdiff_reporter.rb +++ b/lib/approvals/reporters/vimdiff_reporter.rb @@ -1,6 +1,9 @@ module Approvals module Reporters class VimdiffReporter < NamedReporter + def self.command(received, approved) + "vimdiff #{received} #{approved}" + end end end end From 85120022e5fec2e0db07a01ffa49fdd9fa282ab3 Mon Sep 17 00:00:00 2001 From: Sam Livingston-Gray Date: Thu, 24 Apr 2025 12:10:33 -0700 Subject: [PATCH 08/11] . r simplify Launcher --- lib/approvals/reporters/launcher.rb | 34 +++++++++-------------------- 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/lib/approvals/reporters/launcher.rb b/lib/approvals/reporters/launcher.rb index 000de02..3cca879 100644 --- a/lib/approvals/reporters/launcher.rb +++ b/lib/approvals/reporters/launcher.rb @@ -1,7 +1,13 @@ module Approvals module Reporters module Launcher - REPORTERS = [:opendiff, :diffmerge, :vimdiff, :tortoisediff, :filelauncher] + REPORTERS = { + opendiff: OpendiffReporter, + diffmerge: DiffmergeReporter, + vimdiff: VimdiffReporter, + tortoisediff: TortoisediffReporter, + filelauncher: FilelauncherReporter, + } module_function @@ -13,35 +19,15 @@ def memoized(instance_variable) self.instance_variable_get(instance_variable) end - REPORTERS.each do |name| + REPORTERS.each do |name, klass| define_method name do memoized(:"@#{name}") do - lambda {|received, approved| - self.send("#{name}_command".to_sym, received, approved) + lambda { |received, approved| + klass.command(received, approved) } end end end - - def opendiff_command(received, approved) - OpendiffReporter.command(received, approved) - end - - def diffmerge_command(received, approved) - DiffmergeReporter.command(received, approved) - end - - def vimdiff_command(received, approved) - VimdiffReporter.command(received, approved) - end - - def tortoisediff_command(received, approved) - TortoisediffReporter.command(received, approved) - end - - def filelauncher_command(received, approved) - FilelauncherReporter.command(received, approved) - end end end end From 1bda78c039e891d895e111f535d39bb33303c488 Mon Sep 17 00:00:00 2001 From: Sam Livingston-Gray Date: Thu, 24 Apr 2025 12:28:26 -0700 Subject: [PATCH 09/11] . r tweak & comment for readability --- lib/approvals/reporters/launcher.rb | 38 ++++++++++++++++++----------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/lib/approvals/reporters/launcher.rb b/lib/approvals/reporters/launcher.rb index 3cca879..2c19a86 100644 --- a/lib/approvals/reporters/launcher.rb +++ b/lib/approvals/reporters/launcher.rb @@ -1,32 +1,42 @@ module Approvals module Reporters module Launcher + module_function + REPORTERS = { - opendiff: OpendiffReporter, diffmerge: DiffmergeReporter, - vimdiff: VimdiffReporter, - tortoisediff: TortoisediffReporter, filelauncher: FilelauncherReporter, + opendiff: OpendiffReporter, + tortoisediff: TortoisediffReporter, + vimdiff: VimdiffReporter, } - module_function - - def memoized(instance_variable) - unless self.instance_variable_get(instance_variable) - value = yield - self.instance_variable_set(instance_variable, value) - end - self.instance_variable_get(instance_variable) - end - + # Metaprogramming: create a method for each key in REPORTERS. + # (NB: these will become class [AKA "static"] methods due to the + # module_function keyword above.) + # + # Those methods return a lambda that can be invoked (with args `received, + # approved` to return a command. + # + # They also memoize their results (which seems unnecessary?). + # + # See usage examples in: spec/reporters/launcher_spec.rb REPORTERS.each do |name, klass| - define_method name do + define_method name do # method body starts here memoized(:"@#{name}") do lambda { |received, approved| klass.command(received, approved) } end + end # method body ends here + end + + def memoized(instance_variable) + unless self.instance_variable_get(instance_variable) + value = yield + self.instance_variable_set(instance_variable, value) end + self.instance_variable_get(instance_variable) end end end From a2dd41f133a391cf5b9487473185191ee39da0f7 Mon Sep 17 00:00:00 2001 From: Sam Livingston-Gray Date: Thu, 24 Apr 2025 12:38:55 -0700 Subject: [PATCH 10/11] . r leave some TODO comments --- lib/approvals/reporters/launcher.rb | 2 ++ lib/approvals/reporters/named_reporter.rb | 1 + spec/reporters/default_launcher_spec.rb | 2 ++ 3 files changed, 5 insertions(+) diff --git a/lib/approvals/reporters/launcher.rb b/lib/approvals/reporters/launcher.rb index 2c19a86..62f4826 100644 --- a/lib/approvals/reporters/launcher.rb +++ b/lib/approvals/reporters/launcher.rb @@ -1,5 +1,7 @@ module Approvals module Reporters + # TODO: this module doesn't appear to be adding much value, + # and could possibly go away? module Launcher module_function diff --git a/lib/approvals/reporters/named_reporter.rb b/lib/approvals/reporters/named_reporter.rb index 22a8b22..4356111 100644 --- a/lib/approvals/reporters/named_reporter.rb +++ b/lib/approvals/reporters/named_reporter.rb @@ -1,6 +1,7 @@ module Approvals module Reporters class NamedReporter + # TODO: remove this if/when Launcher goes away def default_launcher Launcher.send(launcher_name) end diff --git a/spec/reporters/default_launcher_spec.rb b/spec/reporters/default_launcher_spec.rb index 46739eb..56c28ef 100644 --- a/spec/reporters/default_launcher_spec.rb +++ b/spec/reporters/default_launcher_spec.rb @@ -1,5 +1,7 @@ require 'spec_helper' +# TODO: delete these tests when Launcher goes away + describe "#default_launcher" do def default_launcher_for(reporter_name) klass = ::Approvals::Reporters.const_get(reporter_name) From e77b70923835ed92d40a0f79bb587d6d7a355bfa Mon Sep 17 00:00:00 2001 From: Sam Livingston-Gray Date: Thu, 24 Apr 2025 12:34:20 -0700 Subject: [PATCH 11/11] ^ F always quote file params in diff commands --- lib/approvals/reporters/filelauncher_reporter.rb | 2 +- lib/approvals/reporters/opendiff_reporter.rb | 2 +- lib/approvals/reporters/tortoisediff_reporter.rb | 2 +- lib/approvals/reporters/vimdiff_reporter.rb | 2 +- spec/reporters/launcher_spec.rb | 8 ++++---- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/approvals/reporters/filelauncher_reporter.rb b/lib/approvals/reporters/filelauncher_reporter.rb index 50ca7b5..ee5b047 100644 --- a/lib/approvals/reporters/filelauncher_reporter.rb +++ b/lib/approvals/reporters/filelauncher_reporter.rb @@ -2,7 +2,7 @@ module Approvals module Reporters class FilelauncherReporter < NamedReporter def self.command(received, _) - "open #{received}" + "open \"#{received}\"" end end end diff --git a/lib/approvals/reporters/opendiff_reporter.rb b/lib/approvals/reporters/opendiff_reporter.rb index 2b004f5..9cf2da2 100644 --- a/lib/approvals/reporters/opendiff_reporter.rb +++ b/lib/approvals/reporters/opendiff_reporter.rb @@ -2,7 +2,7 @@ module Approvals module Reporters class OpendiffReporter < NamedReporter def self.command(received, approved) - "opendiff #{received} #{approved}" + "opendiff \"#{received}\" \"#{approved}\"" end end end diff --git a/lib/approvals/reporters/tortoisediff_reporter.rb b/lib/approvals/reporters/tortoisediff_reporter.rb index 6d3c0b3..c40f5e5 100644 --- a/lib/approvals/reporters/tortoisediff_reporter.rb +++ b/lib/approvals/reporters/tortoisediff_reporter.rb @@ -2,7 +2,7 @@ module Approvals module Reporters class TortoisediffReporter < NamedReporter def self.command(received, approved) - "C:\\Program Files\\TortoiseSVN\\bin\\TortoiseMerge.exe #{received} #{approved}" + "C:\\Program Files\\TortoiseSVN\\bin\\TortoiseMerge.exe \"#{received}\" \"#{approved}\"" end end end diff --git a/lib/approvals/reporters/vimdiff_reporter.rb b/lib/approvals/reporters/vimdiff_reporter.rb index e94fe7b..30801c8 100644 --- a/lib/approvals/reporters/vimdiff_reporter.rb +++ b/lib/approvals/reporters/vimdiff_reporter.rb @@ -2,7 +2,7 @@ module Approvals module Reporters class VimdiffReporter < NamedReporter def self.command(received, approved) - "vimdiff #{received} #{approved}" + "vimdiff \"#{received}\" \"#{approved}\"" end end end diff --git a/spec/reporters/launcher_spec.rb b/spec/reporters/launcher_spec.rb index 599cbb5..7574bfd 100644 --- a/spec/reporters/launcher_spec.rb +++ b/spec/reporters/launcher_spec.rb @@ -2,11 +2,11 @@ describe Approvals::Reporters::Launcher do it "has a vimdiff launcher" do - expect(described_class.vimdiff.call('one', 'two')).to eq("vimdiff one two") + expect(described_class.vimdiff.call('one', 'two')).to eq('vimdiff "one" "two"') end it "has an opendiff launcher" do - expect(described_class.opendiff.call('one', 'two')).to eq("opendiff one two") + expect(described_class.opendiff.call('one', 'two')).to eq('opendiff "one" "two"') end it "has a diffmerge launcher" do @@ -14,10 +14,10 @@ end it "has a tortoisediff launcher" do - expect(described_class.tortoisediff.call('one', 'two')).to match(/TortoiseMerge.exe.*one.*two/) + expect(described_class.tortoisediff.call('one', 'two')).to match(/TortoiseMerge.exe.*\"one\".*\"two\"/) end it "has a filelauncher launcher" do - expect(described_class.filelauncher.call('one', 'two')).to eq("open one") + expect(described_class.filelauncher.call('one', 'two')).to eq('open "one"') end end