Trailing string
Closed this issue · 5 comments
require "rails_helper"
RSpec.describe TelehealthAppointment, type: :model do
describe "#participants_state" do
context "timezones workaround" do
it "should receive a time in UTC format and return the time with the"\
"office's UTC offset substracted from it" do
travel_to DateTime.new(2020, 10, 1, 10, 0, 0) do
office = build(:office)
end
end
end
end
describe "#past?" do
context "more than 15 min have passed since appointment start time" do
it "returns true" do # <== HERE
end
end
end
The it "returns true" do
is the problem but due to the indentation it says:
1 require "rails_helper"
2 RSpec.describe TelehealthAppointment, type: :model do
3 describe "#participants_state" do
4 context "timezones workaround" do
5 it "should receive a time in UTC format and return the time with the"\
❯ 6 "office's UTC offset substracted from it" do
❯ 7 travel_to DateTime.new(2020, 10, 1, 10, 0, 0) do
❯ 9 end
10 end
11 end
12 end
13 describe "#past?" do
14 context "more than 15 min have passed since appointment start time" do
15 it "returns true" do # <== HERE
16 end
17 end
18 end
Which is incorrect
I'm thinking that when i'm creating code_lines, I could check to see if a line ends in a slash \
and if it does, group it with the next line so this:
5 it "should receive a time in UTC format and return the time with the"\
6 "office's UTC offset substracted from it" do
Would become
5 it "should receive a time in UTC format and return the time with the" "office's UTC offset substracted from it" do
6 # Make invisible
It's a bit of a special case, but re-formatting the document in this way would allow us to handle this case without any changes to the search logic.
Consequences: It would be confusing if this line ends up being in the error output for the end user. So it's not ideal. I could maybe record the modification, and then un-do it later if it's seen that this line is part of the output. That might not be too difficult
Alternatively I could try to add logic that says every "do" must be paired with a method i.e. do; end
is not valid syntax you need thing do; end
, this is tricky because right now code lines only know about themselves while trailing do
can be on a newline
Dir.chdir("/tmp") \
do
end
Handling these cases with the current implementation would be more difficult. It would be easier to handle this special case as a pre/post processing step.
It now returns:
2 RSpec.describe TelehealthAppointment, type: :model do
3 describe "#participants_state" do
4 context "timezones workaround" do
5 it "should receive a time in UTC format and return the time with the"\
❯ 6 "office's UTC offset substracted from it" do
10 end
11 end
12 end
18 end
Which is still wrong, but it's a different wrong
Update, this is not an issue because
Foo.call "a", \"b",
is not syntatical valid due to the trailing comma
You can have a trailing do without a \
Foo.call "a",
"b",
"c" do
end
Syntax OK
Possibility to detect trailing do
: appending an end
and seeing if it becomes valid.
- Yes: Not a trailing do
- No: Needs more than an end, might be missing the initial
on_ident
"c" do ; end # Still invalid even with an end