1
0
Fork 0
mirror of https://github.com/pry/pry.git synced 2022-11-09 12:35:05 -05:00
pry--pry/spec/commands/cat/file_formatter_spec.rb
Kyrylo Silin e61354693f Add .rspec and require 'helper' from there
Just discovered this nice feature of RSpec where it can load all files for
us. Works with `bundle exec rake` and `bundle exec rspec spec/file_spec.rb`,
which covers all use cases.
2018-11-18 14:04:44 +08:00

92 lines
3.2 KiB
Ruby

describe Pry::Command::Cat::FileFormatter do
before do
@p = Pry.new
@opt = Pry::Slop.new
end
describe "#file_and_line" do
before do
expect(Pry::Code).to receive(:from_file)
end
describe "windows filesystem" do
it "parses '/'style absolute path without line_num" do
file_with_embedded_line = "C:/Ruby193/pry_instance.rb"
ff = described_class.new(file_with_embedded_line, @p, @opt)
file_name, line_num = ff.file_and_line
expect(file_name).to eq "C:/Ruby193/pry_instance.rb"
expect(line_num).to eq nil
end
it "parses '/'style absolute path with line_num" do
file_with_embedded_line = "C:/Ruby193/pry_instance.rb:2"
ff = described_class.new(file_with_embedded_line, @p, @opt)
file_name, line_num = ff.file_and_line
expect(file_name).to eq "C:/Ruby193/pry_instance.rb"
expect(line_num).to eq 2
end
it "parses '\\'style absolute path without line_num" do
file_with_embedded_line = "C:\\Ruby193\\pry_instance.rb"
ff = described_class.new(file_with_embedded_line, @p, @opt)
file_name, line_num = ff.file_and_line
expect(file_name).to eq "C:\\Ruby193\\pry_instance.rb"
expect(line_num).to eq nil
end
it "parses '\\'style absolute path with line_num" do
file_with_embedded_line = "C:\\Ruby193\\pry_instance.rb:2"
ff = described_class.new(file_with_embedded_line, @p, @opt)
file_name, line_num = ff.file_and_line
expect(file_name).to eq "C:\\Ruby193\\pry_instance.rb"
expect(line_num).to eq 2
end
end
describe "UNIX-like filesystem" do
it "parses absolute path without line_num" do
file_with_embedded_line = "/Ruby193/pry_instance.rb"
ff = described_class.new(file_with_embedded_line, @p, @opt)
file_name, line_num = ff.file_and_line
expect(file_name).to eq "/Ruby193/pry_instance.rb"
expect(line_num).to eq nil
end
it "parses absolute path with line_num" do
file_with_embedded_line = "/Ruby193/pry_instance.rb:2"
ff = described_class.new(file_with_embedded_line, @p, @opt)
file_name, line_num = ff.file_and_line
expect(file_name).to eq "/Ruby193/pry_instance.rb"
expect(line_num).to eq 2
end
end
it "parses relative path without line_num" do
file_with_embedded_line = "pry_instance.rb"
ff = described_class.new(file_with_embedded_line, @p, @opt)
file_name, line_num = ff.file_and_line
expect(file_name).to eq "pry_instance.rb"
expect(line_num).to eq nil
end
it "parses relative path with line_num" do
file_with_embedded_line = "pry_instance.rb:2"
ff = described_class.new(file_with_embedded_line, @p, @opt)
file_name, line_num = ff.file_and_line
expect(file_name).to eq "pry_instance.rb"
expect(line_num).to eq 2
end
end
describe "#format" do
it "formats given files" do
ff = described_class.new(__FILE__, @p, @opt)
expect(ff.format).to match(/it "formats given files" do/)
end
it "formats given files with line number" do
ff = described_class.new(__FILE__ + ':83', @p, @opt)
expect(ff.format).to match(/it "formats given files" do/)
end
end
end