Skip to content

Commit cf95835

Browse files
d4l3kfacebook-github-bot
authored andcommitted
CI: enable codecov coverage collection + cleanups (#214)
Summary: * enables coverage collection for python unit tests * uploads coverage to codecov.io * adds badge to README * updates README with instructions on how to install all dependencies * fixes finder_test compatibility with pytest Pull Request resolved: #214 Test Plan: CI -- check coverage is correctly computed ![2021-09-30-165142_1227x768_scrot](https://user-images.githubusercontent.com/909104/135545453-4ade4e39-4f2d-4fa0-9a4b-b9e1e638bea2.png) ![2021-09-30-165129_1350x366_scrot](https://user-images.githubusercontent.com/909104/135545455-65ea8528-ce47-4e1b-a4b5-cd7cbdadb3a4.png) Reviewed By: kiukchung Differential Revision: D31325905 Pulled By: d4l3k fbshipit-source-id: 925735ab0e62553c1df56dd2f81175d44951eb69
1 parent 592c38b commit cf95835

File tree

5 files changed

+39
-14
lines changed

5 files changed

+39
-14
lines changed

.coveragerc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[run]
2+
source =
3+
torchx
4+
5+
omit =
6+
*test*

.github/workflows/python-unittests.yaml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,16 @@ jobs:
2424
- name: Install dependencies
2525
run: |
2626
set -eux
27+
pip install coverage codecov
2728
pip install -e .[dev]
2829
- name: Run tests
29-
run: python -m unittest discover --verbose --start-directory . --pattern "*_test.py"
30+
run: coverage run -m unittest discover --verbose --start-directory . --pattern "*_test.py"
31+
- name: Coverage
32+
env:
33+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
34+
run: |
35+
set -eux
36+
coverage report -m
37+
coverage xml
38+
39+
codecov

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,3 +139,5 @@ cython_debug/
139139

140140
wordlist.dic
141141
pipeline.yaml
142+
143+
/codecov

README.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
[![PyPI](https://img.shields.io/pypi/v/torchx)](https://pypi.org/project/torchx/) [![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](LICENSE) ![Tests](https://github.com/pytorch/torchx/actions/workflows/python-unittests.yaml/badge.svg) ![Lint](https://github.com/pytorch/torchx/actions/workflows/lint.yaml/badge.svg)
1+
[![PyPI](https://img.shields.io/pypi/v/torchx)](https://pypi.org/project/torchx/)
2+
[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](LICENSE)
3+
![Tests](https://github.com/pytorch/torchx/actions/workflows/python-unittests.yaml/badge.svg)
4+
![Lint](https://github.com/pytorch/torchx/actions/workflows/lint.yaml/badge.svg)
5+
[![codecov](https://codecov.io/gh/pytorch/torchx/branch/main/graph/badge.svg?token=ceHHIm0hXy)](https://codecov.io/gh/pytorch/torchx)
26

37

48
# TorchX
@@ -24,9 +28,12 @@ TorchX Kubeflow Pipelines Support (torchx-kfp):
2428
### Release
2529

2630
```bash
27-
# install torchx sdk and CLI
31+
# install torchx sdk and CLI -- minimum dependencies
2832
pip install torchx
2933

34+
# install torchx sdk and CLI -- all dependencies
35+
pip install "torchx[dev]"
36+
3037
# install torchx kubeflow pipelines (kfp) support
3138
pip install "torchx[kfp]"
3239

torchx/specs/test/finder_test.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
)
2525

2626

27-
def test_component(name: str, role_name: str = "worker") -> AppDef:
27+
def _test_component(name: str, role_name: str = "worker") -> AppDef:
2828
"""
2929
Test component
3030
@@ -94,10 +94,10 @@ def test_get_entrypoints_components(self) -> None:
9494
with patch("torchx.specs.finder.entrypoints") as entrypoints_mock:
9595
entrypoints_mock.load_group.return_value = test_torchx_group
9696
components = _load_components()
97-
foobar_component = components["foobar.finder_test.test_component"]
98-
self.assertEqual(test_component, foobar_component.fn)
99-
self.assertEqual("test_component", foobar_component.fn_name)
100-
self.assertEqual("foobar.finder_test.test_component", foobar_component.name)
97+
foobar_component = components["foobar.finder_test._test_component"]
98+
self.assertEqual(_test_component, foobar_component.fn)
99+
self.assertEqual("_test_component", foobar_component.fn_name)
100+
self.assertEqual("foobar.finder_test._test_component", foobar_component.name)
101101
self.assertEqual("Test component", foobar_component.description)
102102

103103
def test_get_base_module_name(self) -> None:
@@ -142,20 +142,20 @@ def current_file_path() -> str:
142142
class CustomComponentsFinderTest(unittest.TestCase):
143143
def test_find_components(self) -> None:
144144
components = CustomComponentsFinder(
145-
current_file_path(), "test_component"
145+
current_file_path(), "_test_component"
146146
).find()
147147
self.assertEqual(1, len(components))
148148
component = components[0]
149-
self.assertEqual(f"{current_file_path()}:test_component", component.name)
149+
self.assertEqual(f"{current_file_path()}:_test_component", component.name)
150150
self.assertEqual("Test component", component.description)
151-
self.assertEqual("test_component", component.fn_name)
151+
self.assertEqual("_test_component", component.fn_name)
152152
self.assertListEqual([], component.validation_errors)
153153

154154
def test_get_component(self) -> None:
155-
component = get_component(f"{current_file_path()}:test_component")
156-
self.assertEqual(f"{current_file_path()}:test_component", component.name)
155+
component = get_component(f"{current_file_path()}:_test_component")
156+
self.assertEqual(f"{current_file_path()}:_test_component", component.name)
157157
self.assertEqual("Test component", component.description)
158-
self.assertEqual("test_component", component.fn_name)
158+
self.assertEqual("_test_component", component.fn_name)
159159
self.assertListEqual([], component.validation_errors)
160160

161161
def test_get_components(self) -> None:

0 commit comments

Comments
 (0)