# frozen_string_literal: true require "tempfile" require "utils/inreplace" describe Utils::Inreplace do let(:file) { Tempfile.new("test") } before do file.write <<~EOS a b c EOS end after { file.unlink } it "raises error if there are no files given to replace" do expect do described_class.inreplace [], "d", "f" end.to raise_error(Utils::Inreplace::Error) end it "raises error if there is nothing to replace" do expect do described_class.inreplace file.path, "d", "f" end.to raise_error(Utils::Inreplace::Error) end it "raises error if there is nothing to replace in block form" do expect do described_class.inreplace(file.path) do |s| s.gsub!("d", "f") # rubocop:disable Performance/StringReplacement end end.to raise_error(Utils::Inreplace::Error) end it "raises error if there is no make variables to replace" do expect do described_class.inreplace(file.path) do |s| s.change_make_var! "VAR", "value" s.remove_make_var! "VAR2" end end.to raise_error(Utils::Inreplace::Error) end describe "#inreplace_pairs" do it "raises error if there is no old value" do expect do described_class.inreplace_pairs(file.path, [[nil, "f"]]) end.to raise_error(Utils::Inreplace::Error) end end end