mirror of https://github.com/discourse/pups.git
110 lines
2.1 KiB
Ruby
110 lines
2.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "test_helper"
|
|
require "tempfile"
|
|
|
|
module Pups
|
|
class ReplaceCommandTest < ::Minitest::Test
|
|
def test_simple
|
|
command = ReplaceCommand.new({})
|
|
command.text = "hello world"
|
|
command.from = /he[^o]+o/
|
|
command.to = "world"
|
|
|
|
assert_equal("world world", command.replaced_text)
|
|
end
|
|
|
|
def test_reverse
|
|
source = <<~SCR
|
|
1 one thousand 1
|
|
1 one thousand 1
|
|
1 one thousand 1
|
|
SCR
|
|
|
|
f = Tempfile.new("test")
|
|
f.write source
|
|
f.close
|
|
|
|
hash = {
|
|
"filename" => f.path,
|
|
"from" => "/one t.*d/",
|
|
"to" => "hello world",
|
|
"direction" => "reverse"
|
|
}
|
|
|
|
command = ReplaceCommand.from_hash(hash, {})
|
|
|
|
assert_equal(
|
|
"1 one thousand 1\n1 one thousand 1\n1 hello world 1\n",
|
|
command.replaced_text
|
|
)
|
|
ensure
|
|
f.unlink
|
|
end
|
|
|
|
def test_global
|
|
source = <<~SCR
|
|
one
|
|
one
|
|
one
|
|
SCR
|
|
|
|
f = Tempfile.new("test")
|
|
f.write source
|
|
f.close
|
|
|
|
hash = {
|
|
"filename" => f.path,
|
|
"from" => "/one/",
|
|
"to" => "two",
|
|
"global" => "true"
|
|
}
|
|
|
|
command = ReplaceCommand.from_hash(hash, {})
|
|
|
|
assert_equal("two\ntwo\ntwo\n", command.replaced_text)
|
|
ensure
|
|
f.unlink
|
|
end
|
|
|
|
def test_replace_with_env
|
|
source = "123"
|
|
|
|
f = Tempfile.new("test")
|
|
f.write source
|
|
f.close
|
|
|
|
hash = { "filename" => f.path, "from" => "123", "to" => "hello $hellos" }
|
|
|
|
command = ReplaceCommand.from_hash(hash, { "hello" => "world" })
|
|
assert_equal("hello worlds", command.replaced_text)
|
|
ensure
|
|
f.unlink
|
|
end
|
|
|
|
def test_parse
|
|
source = <<~SCR
|
|
this {
|
|
is a test
|
|
}
|
|
SCR
|
|
|
|
f = Tempfile.new("test")
|
|
f.write source
|
|
f.close
|
|
|
|
hash = {
|
|
"filename" => f.path,
|
|
"from" => "/this[^\}]+\}/m",
|
|
"to" => "hello world"
|
|
}
|
|
|
|
command = ReplaceCommand.from_hash(hash, {})
|
|
|
|
assert_equal("hello world", command.replaced_text.strip)
|
|
ensure
|
|
f.unlink
|
|
end
|
|
end
|
|
end
|