adapt collector tests to igore trailing content

This commit is contained in:
mmacia committed 2026-07-29 22:23:02 +00:00
1 parent 410db12198
commit d82fb4fa47
4 files changed
+11 -8

No files matched your search

+3 -2
View File
@@ -51,8 +51,9 @@ defmodule FeedReader.CollectorTest do
assert {:error, {:max_items_exceeded, 1}} = FeedReader.parse_binary(@xml, max_items: 1) assert {:error, {:max_items_exceeded, 1}} = FeedReader.parse_binary(@xml, max_items: 1)
end end
test "continues to the terminal parser event before returning a malformed-tail error" do test "ignores malformed content after the root element" do
assert {:error, _reason} = FeedReader.parse_binary(@xml <> "<broken", max_items: 2) assert {:ok, %ParseResult{items: [%Item{uuid: "one"}, %Item{uuid: "two"}]}} =
FeedReader.parse_binary(@xml <> "<broken", max_items: 2)
end end
test "rejects invalid chunks and binary arguments" do test "rejects invalid chunks and binary arguments" do
+3 -1
View File
@@ -47,7 +47,9 @@ defmodule FeedReader.RemoteSessionTest do
assert {:error, {:max_items_exceeded, 1}} = fetch_and_parse(@xml, max_items: 1) assert {:error, {:max_items_exceeded, 1}} = fetch_and_parse(@xml, max_items: 1)
assert download_files() == before assert download_files() == before
assert {:error, _reason} = fetch_and_parse(@xml <> "<broken", max_items: 2) assert {:ok, %RemoteResult{items: [%Item{uuid: "one"}, %Item{uuid: "two"}]}} =
fetch_and_parse(@xml <> "<broken", max_items: 2)
assert download_files() == before assert download_files() == before
end end
+2 -3
View File
@@ -24,7 +24,7 @@ defmodule FeedReader.StreamingTest do
assert File.read!(path) == @xml assert File.read!(path) == @xml
end end
test "delivers a malformed tail as a terminal error after earlier events" do test "stops at the root and ignores trailing content" do
xml = @xml <> "<broken" xml = @xml <> "<broken"
path = write_temp(xml) path = write_temp(xml)
on_exit(fn -> File.rm(path) end) on_exit(fn -> File.rm(path) end)
@@ -35,8 +35,7 @@ defmodule FeedReader.StreamingTest do
assert {:feed, %Feed{}} = Enum.at(events, 0) assert {:feed, %Feed{}} = Enum.at(events, 0)
assert {:item, %Item{uuid: "one"}} = Enum.at(events, 1) assert {:item, %Item{uuid: "one"}} = Enum.at(events, 1)
assert {:item, %Item{uuid: "two"}} = Enum.at(events, 2) assert {:item, %Item{uuid: "two"}} = Enum.at(events, 2)
assert {:error, _reason} = Enum.at(events, 3) assert length(events) == 3
assert length(events) == 4
assert File.read!(path) == xml assert File.read!(path) == xml
end end
+3 -2
View File
@@ -18,11 +18,12 @@ defmodule FeedReader.VerifiedParserTest do
assert File.read!(path) == @xml assert File.read!(path) == @xml
end end
test "does not return a session for malformed tails or an insufficient pass budget" do test "ignores trailing content but rejects an insufficient pass budget" do
path = write_temp(@xml <> "<broken") path = write_temp(@xml <> "<broken")
on_exit(fn -> File.rm(path) end) on_exit(fn -> File.rm(path) end)
assert {:error, %Saxy.ParseError{}} = FeedReader.stream_file_verified(path) assert {:ok, %{events: events}} = FeedReader.stream_file_verified(path)
assert length(Enum.to_list(events)) == 2
valid_path = write_temp(@xml) valid_path = write_temp(@xml)
on_exit(fn -> File.rm(valid_path) end) on_exit(fn -> File.rm(valid_path) end)