pytest-neon 2.1.2__tar.gz → 2.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/CLAUDE.md +1 -7
  2. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/PKG-INFO +1 -1
  3. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/pyproject.toml +1 -1
  4. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/src/pytest_neon/__init__.py +1 -1
  5. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/src/pytest_neon/plugin.py +2 -2
  6. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/tests/test_reset_behavior.py +37 -0
  7. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/uv.lock +1 -1
  8. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/.env.example +0 -0
  9. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/.github/workflows/release.yml +0 -0
  10. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/.github/workflows/tests.yml +0 -0
  11. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/.gitignore +0 -0
  12. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/.neon +0 -0
  13. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/LICENSE +0 -0
  14. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/README.md +0 -0
  15. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/src/pytest_neon/py.typed +0 -0
  16. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/tests/conftest.py +0 -0
  17. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/tests/test_branch_lifecycle.py +0 -0
  18. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/tests/test_cli_options.py +0 -0
  19. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/tests/test_env_var.py +0 -0
  20. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/tests/test_fixture_errors.py +0 -0
  21. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/tests/test_integration.py +0 -0
  22. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/tests/test_migrations.py +0 -0
  23. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/tests/test_readwrite_readonly_fixtures.py +0 -0
  24. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/tests/test_skip_behavior.py +0 -0
  25. {pytest_neon-2.1.2 → pytest_neon-2.1.3}/tests/test_xdist_worker_support.py +0 -0
@@ -81,15 +81,9 @@ Tests in `tests/` use `pytester` for testing pytest plugins. The plugin itself c
81
81
 
82
82
  ## Publishing
83
83
 
84
- Use the GitHub Actions release workflow:
84
+ **Always use the GitHub Actions release workflow** - do not manually bump versions:
85
85
  1. Go to Actions → Release → Run workflow
86
86
  2. Choose patch/minor/major
87
87
  3. Workflow bumps version, commits, tags, and publishes to PyPI
88
88
 
89
- Or manually:
90
- ```bash
91
- uv build
92
- uv publish --token $PYPI_TOKEN
93
- ```
94
-
95
89
  Package name on PyPI: `pytest-neon`
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pytest-neon
3
- Version: 2.1.2
3
+ Version: 2.1.3
4
4
  Summary: Pytest plugin for Neon database branch isolation in tests
5
5
  Project-URL: Homepage, https://github.com/ZainRizvi/pytest-neon
6
6
  Project-URL: Repository, https://github.com/ZainRizvi/pytest-neon
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "pytest-neon"
7
- version = "2.1.2"
7
+ version = "2.1.3"
8
8
  description = "Pytest plugin for Neon database branch isolation in tests"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -9,7 +9,7 @@ from pytest_neon.plugin import (
9
9
  neon_engine,
10
10
  )
11
11
 
12
- __version__ = "2.1.2"
12
+ __version__ = "2.1.3"
13
13
  __all__ = [
14
14
  "NeonBranch",
15
15
  "neon_branch",
@@ -502,10 +502,10 @@ def _wait_for_operations(
502
502
  op_data = response.json().get("operation", {})
503
503
  status = op_data.get("status")
504
504
 
505
- if status == "error":
505
+ if status == "failed":
506
506
  err = op_data.get("error", "unknown error")
507
507
  raise RuntimeError(f"Operation {op_id} failed: {err}")
508
- if status not in ("finished", "skipped"):
508
+ if status not in ("finished", "skipped", "cancelled"):
509
509
  still_pending.append(op_id)
510
510
  except requests.RequestException:
511
511
  # On network error, assume still pending and retry
@@ -162,6 +162,43 @@ class TestResetRetryBehavior:
162
162
  # Should have polled until finished
163
163
  assert get_call_count[0] == 3
164
164
 
165
+ def test_reset_raises_on_failed_operation(self, mocker):
166
+ """Verify reset raises RuntimeError when operation fails."""
167
+ branch = NeonBranch(
168
+ branch_id="br-test",
169
+ project_id="proj-test",
170
+ connection_string="postgresql://test",
171
+ host="test.neon.tech",
172
+ parent_id="br-parent",
173
+ )
174
+
175
+ # Mock POST response with pending operation
176
+ mock_post_response = mocker.Mock()
177
+ mock_post_response.raise_for_status = mocker.Mock()
178
+ mock_post_response.json.return_value = {
179
+ "operations": [{"id": "op-123", "status": "running"}]
180
+ }
181
+
182
+ # Mock GET response: operation failed
183
+ mock_get_response = mocker.Mock()
184
+ mock_get_response.raise_for_status = mocker.Mock()
185
+ mock_get_response.json.return_value = {
186
+ "operation": {
187
+ "id": "op-123",
188
+ "status": "failed",
189
+ "error": "Something went wrong",
190
+ }
191
+ }
192
+
193
+ mocker.patch(
194
+ "pytest_neon.plugin.requests.post", return_value=mock_post_response
195
+ )
196
+ mocker.patch("pytest_neon.plugin.requests.get", return_value=mock_get_response)
197
+ mocker.patch("pytest_neon.plugin.time.sleep")
198
+
199
+ with pytest.raises(RuntimeError, match="Operation op-123 failed"):
200
+ _reset_branch_to_parent(branch, "fake-api-key")
201
+
165
202
 
166
203
  class TestResetBehavior:
167
204
  """Test that branch reset happens between tests."""
@@ -1200,7 +1200,7 @@ wheels = [
1200
1200
 
1201
1201
  [[package]]
1202
1202
  name = "pytest-neon"
1203
- version = "2.1.0"
1203
+ version = "2.1.1"
1204
1204
  source = { editable = "." }
1205
1205
  dependencies = [
1206
1206
  { name = "neon-api" },
File without changes
File without changes
File without changes
File without changes
File without changes