From 34c3a8c0600b97d3525d5b10f426cbf5b40f5b73 Mon Sep 17 00:00:00 2001 From: "sentry-autofix-experimental[bot]" <157164994+sentry-autofix-experimental[bot]@users.noreply.github.com> Date: Wed, 16 Oct 2024 18:12:18 +0000 Subject: [PATCH 1/2] This step creates a new test file `test_network_upload.py` in the `tests/commands/` directory. The file contains unit tests for the `network_upload` command. Here's a breakdown of the tests: 1. We import necessary modules and mock the `NetworkFinder` and `UploadSender` classes. 2. We create test fixtures for the mocked classes. 3. We define four test functions: a. `test_network_upload_dry_run`: Tests the dry run functionality. b. `test_network_upload_success`: Tests a successful network upload. c. `test_network_upload_failure`: Tests a failed network upload. d. `test_network_upload_no_files_found`: Tests the case when no files are found in the network. Each test function uses the `CliRunner` to invoke the `network_upload` command with various arguments and checks the output and behavior of the command. --- tests/commands/test_network_upload.py | 121 ++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 tests/commands/test_network_upload.py diff --git a/tests/commands/test_network_upload.py b/tests/commands/test_network_upload.py new file mode 100644 index 000000000..ee0dae945 --- /dev/null +++ b/tests/commands/test_network_upload.py @@ -0,0 +1,121 @@ +import pathlib +from unittest.mock import MagicMock, patch + +import click +import pytest +from click.testing import CliRunner + +from codecov_cli.commands.network_upload import network_upload +from codecov_cli.types import UploadCollectionResult + + +@pytest.fixture +def mock_network_finder(): + with patch("codecov_cli.commands.network_upload.NetworkFinder") as mock: + yield mock + + +@pytest.fixture +def mock_upload_sender(): + with patch("codecov_cli.commands.network_upload.UploadSender") as mock: + yield mock + + +def test_network_upload_dry_run(mock_network_finder): + runner = CliRunner() + mock_network_finder.return_value.find_files.return_value = ["file1.py", "file2.py"] + + result = runner.invoke( + network_upload, + [ + "--root-dir", + ".", + "--dry-run", + "--commit-sha", + "abc123", + "--token", + "secret_token", + ], + ) + + assert result.exit_code == 0 + assert "Found 2 files in the network:" in result.output + assert "Dry run: No files will be uploaded." in result.output + assert "file1.py" in result.output + assert "file2.py" in result.output + + +def test_network_upload_success(mock_network_finder, mock_upload_sender): + runner = CliRunner() + mock_network_finder.return_value.find_files.return_value = ["file1.py", "file2.py"] + mock_sender = MagicMock() + mock_sender.send_upload_data.return_value.status_code = 200 + mock_upload_sender.return_value = mock_sender + + result = runner.invoke( + network_upload, + [ + "--root-dir", + ".", + "--commit-sha", + "abc123", + "--token", + "secret_token", + ], + ) + + assert result.exit_code == 0 + assert "Found 2 files in the network:" in result.output + assert "Network files successfully uploaded to Codecov." in result.output + + mock_sender.send_upload_data.assert_called_once() + args, kwargs = mock_sender.send_upload_data.call_args + assert isinstance(args[0], UploadCollectionResult) + assert args[0].network == ["file1.py", "file2.py"] + assert args[1] == "abc123" + assert args[2] == "secret_token" + assert kwargs["upload_file_type"] == "network" + + +def test_network_upload_failure(mock_network_finder, mock_upload_sender): + runner = CliRunner() + mock_network_finder.return_value.find_files.return_value = ["file1.py", "file2.py"] + mock_sender = MagicMock() + mock_sender.send_upload_data.return_value.status_code = 400 + mock_upload_sender.return_value = mock_sender + + result = runner.invoke( + network_upload, + [ + "--root-dir", + ".", + "--commit-sha", + "abc123", + "--token", + "secret_token", + ], + ) + + assert result.exit_code == 0 + assert "Found 2 files in the network:" in result.output + assert "Failed to upload network files. Status code: 400" in result.output + + +def test_network_upload_no_files_found(mock_network_finder): + runner = CliRunner() + mock_network_finder.return_value.find_files.return_value = [] + + result = runner.invoke( + network_upload, + [ + "--root-dir", + ".", + "--commit-sha", + "abc123", + "--token", + "secret_token", + ], + ) + + assert result.exit_code == 0 + assert "No files found in the network." in result.output \ No newline at end of file From 3693702b8254227eae5f3eb6e7bd7ea11be18ee1 Mon Sep 17 00:00:00 2001 From: "sentry-autofix-experimental[bot]" <157164994+sentry-autofix-experimental[bot]@users.noreply.github.com> Date: Wed, 16 Oct 2024 18:12:20 +0000 Subject: [PATCH 2/2] Update CLI command list test to include network-upload --- tests/test_codecov_cli.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/test_codecov_cli.py b/tests/test_codecov_cli.py index 80136f06f..00f773dac 100644 --- a/tests/test_codecov_cli.py +++ b/tests/test_codecov_cli.py @@ -10,6 +10,7 @@ def test_existing_commands(): "empty-upload", "get-report-results", "label-analysis", + "network-upload", "pr-base-picking", "process-test-results", "send-notifications",