Fix three bugs found reviewing this session's changes
- notes.js's ICON_LABELS wasn't extended for the shop_supermarket/ shop_convenience keys icons.js added — the note icon picker showed the raw internal key as the title instead of a real label. - Plugins.run mislabeled a malformed plugin.json as "plugin did not print valid JSON" — a message written for bad script stdout, not a bad manifest, since both paths shared one rescue. - overpass_pois.rb's description_for joined raw OSM tag values with "\n" — an operator/opening_hours tag with an embedded newline could inject an extra line into the popup that gpx.js's formatDescription (built for p4n2gpx's own well-formed lines) would render as its own independent, legitimate-looking link. Tag values are stripped of embedded newlines before joining.
This commit is contained in:
1 parent
7c664578af
commit
ea9cd5fc40
5 files changed
+48
-3
No files matched your search
@@ -56,6 +56,23 @@ class OverpassPoisTest < Minitest::Test
|
||||
assert_equal "Opening hours: 24/7\nOperator: Town Council\nhttps://example.com", description
|
||||
end
|
||||
|
||||
def test_to_geojson_strips_embedded_newlines_from_tag_values
|
||||
response = {
|
||||
"elements" => [
|
||||
{
|
||||
"type" => "node",
|
||||
"lat" => 48.1,
|
||||
"lon" => 17.2,
|
||||
"tags" => { "amenity" => "toilets", "operator" => "Acme Co\nhttps://evil.example" },
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
description = Maptool::OverpassPois.to_geojson(response)["features"].first["properties"]["description"]
|
||||
|
||||
assert_equal "Operator: Acme Co https://evil.example", description, "an embedded newline must not inject a second, independently-rendered line"
|
||||
end
|
||||
|
||||
def test_to_geojson_omits_description_when_no_recognized_tags_are_present
|
||||
response = { "elements" => [{ "type" => "node", "lat" => 48.1, "lon" => 17.2, "tags" => { "amenity" => "toilets" } }] }
|
||||
|
||||
|
||||
Reference in new issue
Block a user