Skip to content

Commit 26e448c

Browse files
committed
Add coverage reporting and zone boundary repro fixture
- Add coverage configuration - Add Codecov badge and coverage upload workflow - Add zone boundary XML fixture for _w_id validation repro
1 parent 45e70c0 commit 26e448c

4 files changed

Lines changed: 39 additions & 133 deletions

File tree

.coveragerc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
[run]
2+
source = src
3+
omit =
4+
src/example.py
5+
src/osm_osw_reformatter/version.py

.github/workflows/unit_tests.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,14 @@ jobs:
6060
python -m coverage run --source=src/osm_osw_reformatter -m unittest discover -v tests/unit_tests >> $log_file 2>&1
6161
echo -e "\nCoverage Report\n" >> $log_file
6262
coverage report >> $log_file
63+
coverage xml
64+
65+
- name: Upload coverage to Codecov
66+
uses: codecov/codecov-action@v5
67+
with:
68+
token: ${{ secrets.CODECOV_TOKEN }}
69+
files: ./coverage.xml
70+
fail_ci_if_error: false
6371

6472
- name: Check coverage
6573
run: |
@@ -73,4 +81,4 @@ jobs:
7381
connection_string: ${{ secrets.AZURE_STORAGE_CONNECTION_STRING }}
7482
container_name: 'osm-osw-reformatter-package'
7583
clean_destination_folder: false
76-
delete_if_exists: false
84+
delete_if_exists: false

README.md

Lines changed: 6 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11

22

33
# TDEI python lib formatter library
4+
5+
[![codecov](https://codecov.io/gh/TaskarCenterAtUW/TDEI-python-lib-osw-formatter/branch/main/graph/badge.svg)](https://codecov.io/gh/TaskarCenterAtUW/TDEI-python-lib-osw-formatter)
46

57
This python package designed to convert geospatial data from one format to another. In this case, it converts data from OpenStreetMap (OSM) format to OpenSideWalks (OSW) format and OpenSideWalks (OSW) format to OpenStreetMap (OSM) format. Let's break down the key components and processes involved in this converter:
68

@@ -142,103 +144,12 @@ folder.
142144
- The terminal will show the output of coverage like this
143145
144146
```shell
145-
> coverage run --source=src -m unittest discover -v tests/unit_tests
146-
test_construct_geometries (helpers.test_osm.TestOSMHelper) ... ok
147-
test_count_entities_with_nodes_counter (helpers.test_osm.TestOSMHelper) ... ok
148-
test_count_entities_with_points_counter (helpers.test_osm.TestOSMHelper) ... ok
149-
test_count_entities_with_ways_counter (helpers.test_osm.TestOSMHelper) ... ok
150-
test_get_osm_graph (helpers.test_osm.TestOSMHelper) ... ok
151-
test_osw_node_filter (helpers.test_osm.TestOSMHelper) ... ok
152-
test_osw_point_filter (helpers.test_osm.TestOSMHelper) ... ok
153-
test_osw_way_filter (helpers.test_osm.TestOSMHelper) ... ok
154-
test_simplify_og (helpers.test_osm.TestOSMHelper) ... ok
155-
test_cleanup_of_temp_files (helpers.test_osw.TestOSWHelper) ... ok
156-
test_construct_geometries (helpers.test_osw.TestOSWHelper) ... ok
157-
test_count_entities_with_nodes_counter (helpers.test_osw.TestOSWHelper) ... ok
158-
test_count_entities_with_points_counter (helpers.test_osw.TestOSWHelper) ... ok
159-
test_count_entities_with_ways_counter (helpers.test_osw.TestOSWHelper) ... ok
160-
test_count_lines (helpers.test_osw.TestOSWHelper) ... ok
161-
test_count_nodes (helpers.test_osw.TestOSWHelper) ... ok
162-
test_count_points (helpers.test_osw.TestOSWHelper) ... ok
163-
test_count_polygons (helpers.test_osw.TestOSWHelper) ... ok
164-
test_count_ways (helpers.test_osw.TestOSWHelper) ... ok
165-
test_count_zones (helpers.test_osw.TestOSWHelper) ... ok
166-
test_get_osm_graph (helpers.test_osw.TestOSWHelper) ... ok
167-
test_merge (helpers.test_osw.TestOSWHelper) ... ok
168-
test_missing_files (helpers.test_osw.TestOSWHelper) ... ok
169-
test_osw_node_filter (helpers.test_osw.TestOSWHelper) ... ok
170-
test_osw_point_filter (helpers.test_osw.TestOSWHelper) ... ok
171-
test_osw_way_filter (helpers.test_osw.TestOSWHelper) ... ok
172-
test_simplify_og (helpers.test_osw.TestOSWHelper) ... ok
173-
test_unzip (helpers.test_osw.TestOSWHelper) ... ok
174-
test_unzip_should_return_3_files (helpers.test_osw.TestOSWHelper) ... ok
175-
test_custom_values (helpers.test_response.TestResponseClass) ... ok
176-
test_default_values (helpers.test_response.TestResponseClass) ... ok
177-
test_error_none (helpers.test_response.TestResponseClass) ... ok
178-
test_error_string (helpers.test_response.TestResponseClass) ... ok
179-
test_generated_files_list (helpers.test_response.TestResponseClass) ... ok
180-
test_generated_files_string (helpers.test_response.TestResponseClass) ... ok
181-
test_cleanup_existing_files (test_formatter.TestFormatter) ... ok
182-
test_cleanup_non_existent_files (test_formatter.TestFormatter) ... ok
183-
test_osm2osw_error (test_formatter.TestFormatter) ... Estimating number of ways, nodes, points, lines, zones and polygons in datasets...
184-
Open failed for 'test.pbf': No such file or directory
185-
ok
186-
test_osm2osw_successful (test_formatter.TestFormatter) ... Estimating number of ways, nodes, points, lines, zones and polygons in datasets...
187-
Creating networks from region extracts...
188-
Created OSW files!
189-
ok
190-
test_workdir_already_exists (test_formatter.TestFormatter) ... ok
191-
test_workdir_creation (test_formatter.TestFormatter) ... ok
192-
test_convert_error (test_osm2osw.test_osm2osw.TestOSM2OSW) ... Estimating number of ways, nodes, points, lines, zones and polygons in datasets...
193-
Open failed for 'test.pbf': No such file or directory
194-
ok
195-
test_convert_successful (test_osm2osw.test_osm2osw.TestOSM2OSW) ... Estimating number of ways, nodes, points, lines, zones and polygons in datasets...
196-
Creating networks from region extracts...
197-
Created OSW files!
198-
ok
199-
test_generated_3_files (test_osm2osw.test_osm2osw.TestOSM2OSW) ... Estimating number of ways, nodes, points, lines, zones and polygons in datasets...
200-
Creating networks from region extracts...
201-
Created OSW files!
202-
ok
203-
test_generated_files_are_string (test_osm2osw.test_osm2osw.TestOSM2OSW) ... Estimating number of ways, nodes, points, lines, zones and polygons in datasets...
204-
Creating networks from region extracts...
205-
Created OSW files!
206-
ok
207-
test_generated_files_include_nodes_points_edges (test_osm2osw.test_osm2osw.TestOSM2OSW) ... Estimating number of ways, nodes, points, lines, zones and polygons in datasets...
208-
Creating networks from region extracts...
209-
Created OSW files!
210-
ok
211-
test_convert_error (test_osw2osm.test_osw2osm.TestOSW2OSM) ... [Errno 2] No such file or directory: 'test.zip'
212-
ok
213-
test_convert_generated_files_are_string (test_osw2osm.test_osw2osm.TestOSW2OSM) ... ok
214-
test_convert_successful (test_osw2osm.test_osw2osm.TestOSW2OSM) ... ok
215-
test_generated_file (test_osw2osm.test_osw2osm.TestOSW2OSM) ... ok
216-
test_generated_file_should_be_xml (test_osw2osm.test_osw2osm.TestOSW2OSM) ... ok
217-
test_crossing_markings (test_serializer.test_osw_normalizer.TestCommonFunctions) ... ok
218-
test_incline (test_serializer.test_osw_normalizer.TestCommonFunctions) ... ok
219-
test_surface (test_serializer.test_osw_normalizer.TestCommonFunctions) ... ok
220-
test_tactile_paving (test_serializer.test_osw_normalizer.TestCommonFunctions) ... ok
221-
test_is_kerb (test_serializer.test_osw_normalizer.TestOSWNodeNormalizer) ... ok
222-
test_is_kerb_invalid (test_serializer.test_osw_normalizer.TestOSWNodeNormalizer) ... ok
223-
test_normalize_invalid_node (test_serializer.test_osw_normalizer.TestOSWNodeNormalizer) ... ok
224-
test_normalize_kerb (test_serializer.test_osw_normalizer.TestOSWNodeNormalizer) ... ok
225-
test_is_powerpole (test_serializer.test_osw_normalizer.TestOSWPointNormalizer) ... ok
226-
test_is_powerpole_invalid (test_serializer.test_osw_normalizer.TestOSWPointNormalizer) ... ok
227-
test_normalize_invalid_point (test_serializer.test_osw_normalizer.TestOSWPointNormalizer) ... ok
228-
test_normalize_powerpole (test_serializer.test_osw_normalizer.TestOSWPointNormalizer) ... ok
229-
test_is_crossing (test_serializer.test_osw_normalizer.TestOSWWayNormalizer) ... ok
230-
test_is_footway (test_serializer.test_osw_normalizer.TestOSWWayNormalizer) ... ok
231-
test_is_living_street (test_serializer.test_osw_normalizer.TestOSWWayNormalizer) ... ok
232-
test_is_pedestrian (test_serializer.test_osw_normalizer.TestOSWWayNormalizer) ... ok
233-
test_is_sidewalk (test_serializer.test_osw_normalizer.TestOSWWayNormalizer) ... ok
234-
test_is_stairs (test_serializer.test_osw_normalizer.TestOSWWayNormalizer) ... ok
235-
test_is_traffic_island (test_serializer.test_osw_normalizer.TestOSWWayNormalizer) ... ok
236-
test_normalize_crossing (test_serializer.test_osw_normalizer.TestOSWWayNormalizer) ... ok
237-
test_normalize_invalid_way (test_serializer.test_osw_normalizer.TestOSWWayNormalizer) ... ok
238-
test_normalize_sidewalk (test_serializer.test_osw_normalizer.TestOSWWayNormalizer) ... ok
147+
> python -m coverage run --source=src -m unittest discover tests/unit_tests
148+
.................................
149+
..................................
239150
240151
----------------------------------------------------------------------
241-
Ran 73 tests in 79.494s
152+
Ran 225 tests in 44.601s
242153
243154
OK
244155
```
Lines changed: 19 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,26 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<osm version="0.6" generator="test" upload="false">
3-
<!-- Pedestrian plaza corners -->
4-
<node id="1" visible="true" version="1" lat="47.6151489" lon="-122.3206583"/>
5-
<node id="2" visible="true" version="1" lat="47.6149868" lon="-122.3206509"/>
6-
<node id="3" visible="true" version="1" lat="47.6149898" lon="-122.3203263"/>
7-
<node id="4" visible="true" version="1" lat="47.6151507" lon="-122.3203266"/>
2+
<osm version="0.6" generator="osw-zone-boundary-repro">
3+
<bounds minlat="47.6190" minlon="-122.3490" maxlat="47.6200" maxlon="-122.3480"/>
84

9-
<!-- External footway nodes (one intermediate node that should get simplified) -->
10-
<node id="5" visible="true" version="1" lat="47.6153000" lon="-122.3206583"/>
11-
<node id="6" visible="true" version="1" lat="47.6152500" lon="-122.3206583"/>
12-
<node id="7" visible="true" version="1" lat="47.6149898" lon="-122.3201000"/>
13-
<node id="8" visible="true" version="1" lat="47.6149898" lon="-122.3202000"/>
5+
<!--
6+
Repro shape:
7+
Node 1001 is both a pedestrian-zone boundary vertex and an ext:* custom
8+
point. Before the zone-boundary export fix, it was written to points.geojson
9+
instead of nodes.geojson, while zones.geojson still referenced it in _w_id.
10+
-->
11+
<node id="1001" visible="true" version="1" lat="47.6190" lon="-122.3490">
12+
<tag k="ext:entrance" v="yes"/>
13+
</node>
14+
<node id="1002" visible="true" version="1" lat="47.6190" lon="-122.3480"/>
15+
<node id="1003" visible="true" version="1" lat="47.6200" lon="-122.3485"/>
1416

15-
<!-- Pedestrian plaza: closed way forming a zone -->
16-
<way id="100" visible="true" version="1">
17-
<nd ref="1"/>
18-
<nd ref="2"/>
19-
<nd ref="3"/>
20-
<nd ref="4"/>
21-
<nd ref="1"/>
17+
<way id="2001" visible="true" version="1">
18+
<nd ref="1001"/>
19+
<nd ref="1002"/>
20+
<nd ref="1003"/>
21+
<nd ref="1001"/>
2222
<tag k="highway" v="pedestrian"/>
2323
<tag k="area" v="yes"/>
24-
<tag k="name" v="Test Plaza"/>
25-
</way>
26-
27-
<!-- Footway connecting external node 5 to plaza corner 1 via intermediate node 6 -->
28-
<way id="200" visible="true" version="1">
29-
<nd ref="5"/>
30-
<nd ref="6"/>
31-
<nd ref="1"/>
32-
<tag k="highway" v="footway"/>
33-
<tag k="footway" v="sidewalk"/>
34-
</way>
35-
36-
<!-- Footway connecting plaza corner 3 to external node 7 via intermediate node 8 -->
37-
<way id="201" visible="true" version="1">
38-
<nd ref="3"/>
39-
<nd ref="8"/>
40-
<nd ref="7"/>
41-
<tag k="highway" v="footway"/>
42-
<tag k="footway" v="sidewalk"/>
24+
<tag k="name" v="Zone Boundary Custom Point Repro"/>
4325
</way>
4426
</osm>

0 commit comments

Comments
 (0)