Be more robust in how regression data are discovered - #821

Merged
joshmoore merged 5 commits into
zarr-developers:masterfrom
benjaminhwilliams:fix-fixture-finding
Aug 24, 2021
Merged

Be more robust in how regression data are discovered#821
joshmoore merged 5 commits into
zarr-developers:masterfrom
benjaminhwilliams:fix-fixture-finding

Conversation

@benjaminhwilliams

@benjaminhwilliamsbenjaminhwilliams commented Aug 24, 2021

Copy link
Copy Markdown
Contributor

Be stricter about where and how regression data are discovered, during testing. This fixes some tests that are failing during the Conda-forge release process.

As previously mentioned in #819 (comment):

  • Ensure that, regardless of the test runner working directory, the regression data can be found.
  • During zarr.tests.test_dim_separator.test_open, open an array in read-only mode, to prevent accidental creation of an empty array when the expected array does not exist, which would leave droppings in the test runner working directory.

TODO:

  • Add unit tests and/or doctests in docstrings
  • Add docstrings and API docs for any new/modified user-facing classes and functions
  • New/modified features documented in docs/tutorial.rst
  • Changes documented in docs/release.rst
  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

Avoid creating an empty array when test_open does not find the expected
existing array.
Regardless of the test runner working directory, ensure that this test
fixture returns the path to the relevant regression data directory,
which lives under the project root.
@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Release notes follow shortly.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

@joshmoore, does this pass muster, as far as you're concerned? I'm not sure if I have correctly formatted the release notes.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

As I'm a first-time contributor, the CI workflows won't run without maintainer approval. Would a kind maintainer mind enabling them?

@joshmoore

Copy link
Copy Markdown
Member

Would a kind maintainer mind enabling them?

Done

I'm not sure if I have correctly formatted the release notes.

Looks great!

@codecov

codecovBot commented Aug 24, 2021

Copy link
Copy Markdown

Codecov Report

Merging #821 (4a11512) into master (cba2783) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@ Coverage Diff @@## master #821 +/- ##
=======================================
Coverage 99.94% 99.94% =======================================
Files 31 31 Lines 10604 10606 +2 =======================================
+ Hits 10598 10600 +2 
Misses 6 6 
Impacted FilesCoverage Δ
zarr/tests/test_dim_separator.py100.00% <100.00%> (ø)

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

I'm obviously unable to claim that all the CI actions have passed, nor that the project test coverage is 100%, but is this necessary here? The diff coverage is 100% and the missing project coverage is in an unrelated part of tests.test_dim_separator, so it doesn't seem appropriate to target that coverage in this PR.

@joshmoore

Copy link
Copy Markdown
Member

is this necessary here?

Nope. This has been blocking my PRs as well. Don't worry. I've been focused on trying to fix conda and havedn't had time to fix codecov ;)

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Don't worry. I've been focused on trying to fix conda and havedn't had time to fix codecov ;)

Good good. Thanks for the opportunity to tinker!

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

As an aside, off topic for this PR, I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

"fs_nested",
"fs_flat",
"fs_default"

with pytest.params,

needs_fsspec=pytest.mark.skipif(nothave_fsspec, reason="needs fsspec")
...
pytest.param("fs_nested", marks=needs_fsspec),
pytest.param("fs_flat", marks=needs_fsspec),
pytest.param("fs_default", marks=needs_fsspec)

and then remove the if clause.

Of course, it doesn't actually change anything (Codecov would still be right to complain that the CI doesn't test in the absence of fsspec), but I believe it silences Codecov because there is no longer an explicit untested code path.

@joshmoore

Copy link
Copy Markdown
Member

Thanks for the opportunity to tinker!

;) Glad to have other tinkerers.

A heads up that in an effort to not keep abusing releases in order to test conda-forge, I'm running locally with this diff to zarr-feedstock:

(base) /tmp/zarr-feedstock $git diff
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index a5c0beb..d60380e 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
source:
- fn: {{ name }}-{{ version }}.tar.gz
- url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}.tar.gz
- sha256: {{ sha256 }}
+ git_url: https://github.com/benjaminhwilliams/zarr-python.git
+ git_rev: fix-fixture-finding
build:
number: 0
(base) /tmp/zarr-feedstock $./build-locally.py

Do you have any idea why I'm not seeing the failures locally?

@joshmoore

Copy link
Copy Markdown
Member

I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

I imagine so. Happy to see that as well, which removes the need for my pragma in #822

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Do you have any idea why I'm not seeing the failures locally?

What is your working directory when running Pytest? You will only see the failures on master when the working directory doesn't contain the sub-directory fixture, and this is true when the CI action runs in its own specially-created directory. Are you running Pytest in zarr-python?

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

I imagine so. Happy to see that as well, which removes the need for my pragma in #822

Want me to add a PR for that too?

@joshmoorejoshmoore mentioned this pull request Aug 24, 2021
@joshmoore

Copy link
Copy Markdown
Member

Want me to add a PR for that too?

If you'd like, sure!

@joshmoore

Copy link
Copy Markdown
Member

NB: Merging in #822 has gotten this green. 👍

@joshmoore

Copy link
Copy Markdown
Member

Are you running Pytest in zarr-python?

Yes.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Are you running Pytest in zarr-python?

Yes.

I think if you run Pytest from another directory, with something like

/tmp/some/dir/or/other$ pytest <wherever>/zarr-python/zarr

instead of

<wherever>/zarr-python$ pytest zarr

then you'll start to see the failures.

@joshmoorejoshmoore left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, @benjaminhwilliams. Looking forward to future PRs. 😉

@joshmoore
joshmoore merged commit 5fe5aea into zarr-developers:masterAug 24, 2021
@benjaminhwilliams
benjaminhwilliams deleted the fix-fixture-finding branch August 24, 2021 15:26
@joshmoorejoshmoore mentioned this pull request Aug 24, 2021
3 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@benjaminhwilliams@joshmoore
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Be more robust in how regression data are discovered - #821

Merged
joshmoore merged 5 commits into
zarr-developers:masterfrom
benjaminhwilliams:fix-fixture-finding
Aug 24, 2021
Merged

Be more robust in how regression data are discovered#821
joshmoore merged 5 commits into
zarr-developers:masterfrom
benjaminhwilliams:fix-fixture-finding

Conversation

@benjaminhwilliams

@benjaminhwilliamsbenjaminhwilliams commented Aug 24, 2021

Copy link
Copy Markdown
Contributor

Be stricter about where and how regression data are discovered, during testing. This fixes some tests that are failing during the Conda-forge release process.

As previously mentioned in #819 (comment):

  • Ensure that, regardless of the test runner working directory, the regression data can be found.
  • During zarr.tests.test_dim_separator.test_open, open an array in read-only mode, to prevent accidental creation of an empty array when the expected array does not exist, which would leave droppings in the test runner working directory.

TODO:

  • Add unit tests and/or doctests in docstrings
  • Add docstrings and API docs for any new/modified user-facing classes and functions
  • New/modified features documented in docs/tutorial.rst
  • Changes documented in docs/release.rst
  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

Avoid creating an empty array when test_open does not find the expected
existing array.
Regardless of the test runner working directory, ensure that this test
fixture returns the path to the relevant regression data directory,
which lives under the project root.
@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Release notes follow shortly.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

@joshmoore, does this pass muster, as far as you're concerned? I'm not sure if I have correctly formatted the release notes.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

As I'm a first-time contributor, the CI workflows won't run without maintainer approval. Would a kind maintainer mind enabling them?

@joshmoore

Copy link
Copy Markdown
Member

Would a kind maintainer mind enabling them?

Done

I'm not sure if I have correctly formatted the release notes.

Looks great!

@codecov

codecovBot commented Aug 24, 2021

Copy link
Copy Markdown

Codecov Report

Merging #821 (4a11512) into master (cba2783) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@ Coverage Diff @@## master #821 +/- ##
=======================================
Coverage 99.94% 99.94% =======================================
Files 31 31 Lines 10604 10606 +2 =======================================
+ Hits 10598 10600 +2 
Misses 6 6 
Impacted FilesCoverage Δ
zarr/tests/test_dim_separator.py100.00% <100.00%> (ø)

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

I'm obviously unable to claim that all the CI actions have passed, nor that the project test coverage is 100%, but is this necessary here? The diff coverage is 100% and the missing project coverage is in an unrelated part of tests.test_dim_separator, so it doesn't seem appropriate to target that coverage in this PR.

@joshmoore

Copy link
Copy Markdown
Member

is this necessary here?

Nope. This has been blocking my PRs as well. Don't worry. I've been focused on trying to fix conda and havedn't had time to fix codecov ;)

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Don't worry. I've been focused on trying to fix conda and havedn't had time to fix codecov ;)

Good good. Thanks for the opportunity to tinker!

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

As an aside, off topic for this PR, I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

"fs_nested",
"fs_flat",
"fs_default"

with pytest.params,

needs_fsspec=pytest.mark.skipif(nothave_fsspec, reason="needs fsspec")
...
pytest.param("fs_nested", marks=needs_fsspec),
pytest.param("fs_flat", marks=needs_fsspec),
pytest.param("fs_default", marks=needs_fsspec)

and then remove the if clause.

Of course, it doesn't actually change anything (Codecov would still be right to complain that the CI doesn't test in the absence of fsspec), but I believe it silences Codecov because there is no longer an explicit untested code path.

@joshmoore

Copy link
Copy Markdown
Member

Thanks for the opportunity to tinker!

;) Glad to have other tinkerers.

A heads up that in an effort to not keep abusing releases in order to test conda-forge, I'm running locally with this diff to zarr-feedstock:

(base) /tmp/zarr-feedstock $git diff
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index a5c0beb..d60380e 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
source:
- fn: {{ name }}-{{ version }}.tar.gz
- url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}.tar.gz
- sha256: {{ sha256 }}
+ git_url: https://github.com/benjaminhwilliams/zarr-python.git
+ git_rev: fix-fixture-finding
build:
number: 0
(base) /tmp/zarr-feedstock $./build-locally.py

Do you have any idea why I'm not seeing the failures locally?

@joshmoore

Copy link
Copy Markdown
Member

I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

I imagine so. Happy to see that as well, which removes the need for my pragma in #822

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Do you have any idea why I'm not seeing the failures locally?

What is your working directory when running Pytest? You will only see the failures on master when the working directory doesn't contain the sub-directory fixture, and this is true when the CI action runs in its own specially-created directory. Are you running Pytest in zarr-python?

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

I imagine so. Happy to see that as well, which removes the need for my pragma in #822

Want me to add a PR for that too?

@joshmoorejoshmoore mentioned this pull request Aug 24, 2021
@joshmoore

Copy link
Copy Markdown
Member

Want me to add a PR for that too?

If you'd like, sure!

@joshmoore

Copy link
Copy Markdown
Member

NB: Merging in #822 has gotten this green. 👍

@joshmoore

Copy link
Copy Markdown
Member

Are you running Pytest in zarr-python?

Yes.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Are you running Pytest in zarr-python?

Yes.

I think if you run Pytest from another directory, with something like

/tmp/some/dir/or/other$ pytest <wherever>/zarr-python/zarr

instead of

<wherever>/zarr-python$ pytest zarr

then you'll start to see the failures.

@joshmoorejoshmoore left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, @benjaminhwilliams. Looking forward to future PRs. 😉

@joshmoore
joshmoore merged commit 5fe5aea into zarr-developers:masterAug 24, 2021
@benjaminhwilliams
benjaminhwilliams deleted the fix-fixture-finding branch August 24, 2021 15:26
@joshmoorejoshmoore mentioned this pull request Aug 24, 2021
3 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@benjaminhwilliams@joshmoore
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Be more robust in how regression data are discovered - #821

Merged
joshmoore merged 5 commits into
zarr-developers:masterfrom
benjaminhwilliams:fix-fixture-finding
Aug 24, 2021
Merged

Be more robust in how regression data are discovered#821
joshmoore merged 5 commits into
zarr-developers:masterfrom
benjaminhwilliams:fix-fixture-finding

Conversation

@benjaminhwilliams

@benjaminhwilliamsbenjaminhwilliams commented Aug 24, 2021

Copy link
Copy Markdown
Contributor

Be stricter about where and how regression data are discovered, during testing. This fixes some tests that are failing during the Conda-forge release process.

As previously mentioned in #819 (comment):

  • Ensure that, regardless of the test runner working directory, the regression data can be found.
  • During zarr.tests.test_dim_separator.test_open, open an array in read-only mode, to prevent accidental creation of an empty array when the expected array does not exist, which would leave droppings in the test runner working directory.

TODO:

  • Add unit tests and/or doctests in docstrings
  • Add docstrings and API docs for any new/modified user-facing classes and functions
  • New/modified features documented in docs/tutorial.rst
  • Changes documented in docs/release.rst
  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

Avoid creating an empty array when test_open does not find the expected
existing array.
Regardless of the test runner working directory, ensure that this test
fixture returns the path to the relevant regression data directory,
which lives under the project root.
@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Release notes follow shortly.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

@joshmoore, does this pass muster, as far as you're concerned? I'm not sure if I have correctly formatted the release notes.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

As I'm a first-time contributor, the CI workflows won't run without maintainer approval. Would a kind maintainer mind enabling them?

@joshmoore

Copy link
Copy Markdown
Member

Would a kind maintainer mind enabling them?

Done

I'm not sure if I have correctly formatted the release notes.

Looks great!

@codecov

codecovBot commented Aug 24, 2021

Copy link
Copy Markdown

Codecov Report

Merging #821 (4a11512) into master (cba2783) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@ Coverage Diff @@## master #821 +/- ##
=======================================
Coverage 99.94% 99.94% =======================================
Files 31 31 Lines 10604 10606 +2 =======================================
+ Hits 10598 10600 +2 
Misses 6 6 
Impacted FilesCoverage Δ
zarr/tests/test_dim_separator.py100.00% <100.00%> (ø)

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

I'm obviously unable to claim that all the CI actions have passed, nor that the project test coverage is 100%, but is this necessary here? The diff coverage is 100% and the missing project coverage is in an unrelated part of tests.test_dim_separator, so it doesn't seem appropriate to target that coverage in this PR.

@joshmoore

Copy link
Copy Markdown
Member

is this necessary here?

Nope. This has been blocking my PRs as well. Don't worry. I've been focused on trying to fix conda and havedn't had time to fix codecov ;)

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Don't worry. I've been focused on trying to fix conda and havedn't had time to fix codecov ;)

Good good. Thanks for the opportunity to tinker!

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

As an aside, off topic for this PR, I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

"fs_nested",
"fs_flat",
"fs_default"

with pytest.params,

needs_fsspec=pytest.mark.skipif(nothave_fsspec, reason="needs fsspec")
...
pytest.param("fs_nested", marks=needs_fsspec),
pytest.param("fs_flat", marks=needs_fsspec),
pytest.param("fs_default", marks=needs_fsspec)

and then remove the if clause.

Of course, it doesn't actually change anything (Codecov would still be right to complain that the CI doesn't test in the absence of fsspec), but I believe it silences Codecov because there is no longer an explicit untested code path.

@joshmoore

Copy link
Copy Markdown
Member

Thanks for the opportunity to tinker!

;) Glad to have other tinkerers.

A heads up that in an effort to not keep abusing releases in order to test conda-forge, I'm running locally with this diff to zarr-feedstock:

(base) /tmp/zarr-feedstock $git diff
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index a5c0beb..d60380e 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
source:
- fn: {{ name }}-{{ version }}.tar.gz
- url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}.tar.gz
- sha256: {{ sha256 }}
+ git_url: https://github.com/benjaminhwilliams/zarr-python.git
+ git_rev: fix-fixture-finding
build:
number: 0
(base) /tmp/zarr-feedstock $./build-locally.py

Do you have any idea why I'm not seeing the failures locally?

@joshmoore

Copy link
Copy Markdown
Member

I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

I imagine so. Happy to see that as well, which removes the need for my pragma in #822

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Do you have any idea why I'm not seeing the failures locally?

What is your working directory when running Pytest? You will only see the failures on master when the working directory doesn't contain the sub-directory fixture, and this is true when the CI action runs in its own specially-created directory. Are you running Pytest in zarr-python?

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

I imagine so. Happy to see that as well, which removes the need for my pragma in #822

Want me to add a PR for that too?

@joshmoorejoshmoore mentioned this pull request Aug 24, 2021
@joshmoore

Copy link
Copy Markdown
Member

Want me to add a PR for that too?

If you'd like, sure!

@joshmoore

Copy link
Copy Markdown
Member

NB: Merging in #822 has gotten this green. 👍

@joshmoore

Copy link
Copy Markdown
Member

Are you running Pytest in zarr-python?

Yes.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Are you running Pytest in zarr-python?

Yes.

I think if you run Pytest from another directory, with something like

/tmp/some/dir/or/other$ pytest <wherever>/zarr-python/zarr

instead of

<wherever>/zarr-python$ pytest zarr

then you'll start to see the failures.

@joshmoorejoshmoore left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, @benjaminhwilliams. Looking forward to future PRs. 😉

@joshmoore
joshmoore merged commit 5fe5aea into zarr-developers:masterAug 24, 2021
@benjaminhwilliams
benjaminhwilliams deleted the fix-fixture-finding branch August 24, 2021 15:26
@joshmoorejoshmoore mentioned this pull request Aug 24, 2021
3 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@benjaminhwilliams@joshmoore
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Be more robust in how regression data are discovered - #821

Merged
joshmoore merged 5 commits into
zarr-developers:masterfrom
benjaminhwilliams:fix-fixture-finding
Aug 24, 2021
Merged

Be more robust in how regression data are discovered#821
joshmoore merged 5 commits into
zarr-developers:masterfrom
benjaminhwilliams:fix-fixture-finding

Conversation

@benjaminhwilliams

@benjaminhwilliamsbenjaminhwilliams commented Aug 24, 2021

Copy link
Copy Markdown
Contributor

Be stricter about where and how regression data are discovered, during testing. This fixes some tests that are failing during the Conda-forge release process.

As previously mentioned in #819 (comment):

  • Ensure that, regardless of the test runner working directory, the regression data can be found.
  • During zarr.tests.test_dim_separator.test_open, open an array in read-only mode, to prevent accidental creation of an empty array when the expected array does not exist, which would leave droppings in the test runner working directory.

TODO:

  • Add unit tests and/or doctests in docstrings
  • Add docstrings and API docs for any new/modified user-facing classes and functions
  • New/modified features documented in docs/tutorial.rst
  • Changes documented in docs/release.rst
  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

Avoid creating an empty array when test_open does not find the expected
existing array.
Regardless of the test runner working directory, ensure that this test
fixture returns the path to the relevant regression data directory,
which lives under the project root.
@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Release notes follow shortly.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

@joshmoore, does this pass muster, as far as you're concerned? I'm not sure if I have correctly formatted the release notes.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

As I'm a first-time contributor, the CI workflows won't run without maintainer approval. Would a kind maintainer mind enabling them?

@joshmoore

Copy link
Copy Markdown
Member

Would a kind maintainer mind enabling them?

Done

I'm not sure if I have correctly formatted the release notes.

Looks great!

@codecov

codecovBot commented Aug 24, 2021

Copy link
Copy Markdown

Codecov Report

Merging #821 (4a11512) into master (cba2783) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@ Coverage Diff @@## master #821 +/- ##
=======================================
Coverage 99.94% 99.94% =======================================
Files 31 31 Lines 10604 10606 +2 =======================================
+ Hits 10598 10600 +2 
Misses 6 6 
Impacted FilesCoverage Δ
zarr/tests/test_dim_separator.py100.00% <100.00%> (ø)

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

I'm obviously unable to claim that all the CI actions have passed, nor that the project test coverage is 100%, but is this necessary here? The diff coverage is 100% and the missing project coverage is in an unrelated part of tests.test_dim_separator, so it doesn't seem appropriate to target that coverage in this PR.

@joshmoore

Copy link
Copy Markdown
Member

is this necessary here?

Nope. This has been blocking my PRs as well. Don't worry. I've been focused on trying to fix conda and havedn't had time to fix codecov ;)

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Don't worry. I've been focused on trying to fix conda and havedn't had time to fix codecov ;)

Good good. Thanks for the opportunity to tinker!

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

As an aside, off topic for this PR, I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

"fs_nested",
"fs_flat",
"fs_default"

with pytest.params,

needs_fsspec=pytest.mark.skipif(nothave_fsspec, reason="needs fsspec")
...
pytest.param("fs_nested", marks=needs_fsspec),
pytest.param("fs_flat", marks=needs_fsspec),
pytest.param("fs_default", marks=needs_fsspec)

and then remove the if clause.

Of course, it doesn't actually change anything (Codecov would still be right to complain that the CI doesn't test in the absence of fsspec), but I believe it silences Codecov because there is no longer an explicit untested code path.

@joshmoore

Copy link
Copy Markdown
Member

Thanks for the opportunity to tinker!

;) Glad to have other tinkerers.

A heads up that in an effort to not keep abusing releases in order to test conda-forge, I'm running locally with this diff to zarr-feedstock:

(base) /tmp/zarr-feedstock $git diff
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index a5c0beb..d60380e 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
source:
- fn: {{ name }}-{{ version }}.tar.gz
- url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}.tar.gz
- sha256: {{ sha256 }}
+ git_url: https://github.com/benjaminhwilliams/zarr-python.git
+ git_rev: fix-fixture-finding
build:
number: 0
(base) /tmp/zarr-feedstock $./build-locally.py

Do you have any idea why I'm not seeing the failures locally?

@joshmoore

Copy link
Copy Markdown
Member

I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

I imagine so. Happy to see that as well, which removes the need for my pragma in #822

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Do you have any idea why I'm not seeing the failures locally?

What is your working directory when running Pytest? You will only see the failures on master when the working directory doesn't contain the sub-directory fixture, and this is true when the CI action runs in its own specially-created directory. Are you running Pytest in zarr-python?

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

I imagine so. Happy to see that as well, which removes the need for my pragma in #822

Want me to add a PR for that too?

@joshmoorejoshmoore mentioned this pull request Aug 24, 2021
@joshmoore

Copy link
Copy Markdown
Member

Want me to add a PR for that too?

If you'd like, sure!

@joshmoore

Copy link
Copy Markdown
Member

NB: Merging in #822 has gotten this green. 👍

@joshmoore

Copy link
Copy Markdown
Member

Are you running Pytest in zarr-python?

Yes.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Are you running Pytest in zarr-python?

Yes.

I think if you run Pytest from another directory, with something like

/tmp/some/dir/or/other$ pytest <wherever>/zarr-python/zarr

instead of

<wherever>/zarr-python$ pytest zarr

then you'll start to see the failures.

@joshmoorejoshmoore left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, @benjaminhwilliams. Looking forward to future PRs. 😉

@joshmoore
joshmoore merged commit 5fe5aea into zarr-developers:masterAug 24, 2021
@benjaminhwilliams
benjaminhwilliams deleted the fix-fixture-finding branch August 24, 2021 15:26
@joshmoorejoshmoore mentioned this pull request Aug 24, 2021
3 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@benjaminhwilliams@joshmoore
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Be more robust in how regression data are discovered - #821

Merged
joshmoore merged 5 commits into
zarr-developers:masterfrom
benjaminhwilliams:fix-fixture-finding
Aug 24, 2021
Merged

Be more robust in how regression data are discovered#821
joshmoore merged 5 commits into
zarr-developers:masterfrom
benjaminhwilliams:fix-fixture-finding

Conversation

@benjaminhwilliams

@benjaminhwilliamsbenjaminhwilliams commented Aug 24, 2021

Copy link
Copy Markdown
Contributor

Be stricter about where and how regression data are discovered, during testing. This fixes some tests that are failing during the Conda-forge release process.

As previously mentioned in #819 (comment):

  • Ensure that, regardless of the test runner working directory, the regression data can be found.
  • During zarr.tests.test_dim_separator.test_open, open an array in read-only mode, to prevent accidental creation of an empty array when the expected array does not exist, which would leave droppings in the test runner working directory.

TODO:

  • Add unit tests and/or doctests in docstrings
  • Add docstrings and API docs for any new/modified user-facing classes and functions
  • New/modified features documented in docs/tutorial.rst
  • Changes documented in docs/release.rst
  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

Avoid creating an empty array when test_open does not find the expected
existing array.
Regardless of the test runner working directory, ensure that this test
fixture returns the path to the relevant regression data directory,
which lives under the project root.
@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Release notes follow shortly.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

@joshmoore, does this pass muster, as far as you're concerned? I'm not sure if I have correctly formatted the release notes.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

As I'm a first-time contributor, the CI workflows won't run without maintainer approval. Would a kind maintainer mind enabling them?

@joshmoore

Copy link
Copy Markdown
Member

Would a kind maintainer mind enabling them?

Done

I'm not sure if I have correctly formatted the release notes.

Looks great!

@codecov

codecovBot commented Aug 24, 2021

Copy link
Copy Markdown

Codecov Report

Merging #821 (4a11512) into master (cba2783) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@ Coverage Diff @@## master #821 +/- ##
=======================================
Coverage 99.94% 99.94% =======================================
Files 31 31 Lines 10604 10606 +2 =======================================
+ Hits 10598 10600 +2 
Misses 6 6 
Impacted FilesCoverage Δ
zarr/tests/test_dim_separator.py100.00% <100.00%> (ø)

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

I'm obviously unable to claim that all the CI actions have passed, nor that the project test coverage is 100%, but is this necessary here? The diff coverage is 100% and the missing project coverage is in an unrelated part of tests.test_dim_separator, so it doesn't seem appropriate to target that coverage in this PR.

@joshmoore

Copy link
Copy Markdown
Member

is this necessary here?

Nope. This has been blocking my PRs as well. Don't worry. I've been focused on trying to fix conda and havedn't had time to fix codecov ;)

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Don't worry. I've been focused on trying to fix conda and havedn't had time to fix codecov ;)

Good good. Thanks for the opportunity to tinker!

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

As an aside, off topic for this PR, I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

"fs_nested",
"fs_flat",
"fs_default"

with pytest.params,

needs_fsspec=pytest.mark.skipif(nothave_fsspec, reason="needs fsspec")
...
pytest.param("fs_nested", marks=needs_fsspec),
pytest.param("fs_flat", marks=needs_fsspec),
pytest.param("fs_default", marks=needs_fsspec)

and then remove the if clause.

Of course, it doesn't actually change anything (Codecov would still be right to complain that the CI doesn't test in the absence of fsspec), but I believe it silences Codecov because there is no longer an explicit untested code path.

@joshmoore

Copy link
Copy Markdown
Member

Thanks for the opportunity to tinker!

;) Glad to have other tinkerers.

A heads up that in an effort to not keep abusing releases in order to test conda-forge, I'm running locally with this diff to zarr-feedstock:

(base) /tmp/zarr-feedstock $git diff
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index a5c0beb..d60380e 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
source:
- fn: {{ name }}-{{ version }}.tar.gz
- url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}.tar.gz
- sha256: {{ sha256 }}
+ git_url: https://github.com/benjaminhwilliams/zarr-python.git
+ git_rev: fix-fixture-finding
build:
number: 0
(base) /tmp/zarr-feedstock $./build-locally.py

Do you have any idea why I'm not seeing the failures locally?

@joshmoore

Copy link
Copy Markdown
Member

I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

I imagine so. Happy to see that as well, which removes the need for my pragma in #822

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Do you have any idea why I'm not seeing the failures locally?

What is your working directory when running Pytest? You will only see the failures on master when the working directory doesn't contain the sub-directory fixture, and this is true when the CI action runs in its own specially-created directory. Are you running Pytest in zarr-python?

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

I imagine so. Happy to see that as well, which removes the need for my pragma in #822

Want me to add a PR for that too?

@joshmoorejoshmoore mentioned this pull request Aug 24, 2021
@joshmoore

Copy link
Copy Markdown
Member

Want me to add a PR for that too?

If you'd like, sure!

@joshmoore

Copy link
Copy Markdown
Member

NB: Merging in #822 has gotten this green. 👍

@joshmoore

Copy link
Copy Markdown
Member

Are you running Pytest in zarr-python?

Yes.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Are you running Pytest in zarr-python?

Yes.

I think if you run Pytest from another directory, with something like

/tmp/some/dir/or/other$ pytest <wherever>/zarr-python/zarr

instead of

<wherever>/zarr-python$ pytest zarr

then you'll start to see the failures.

@joshmoorejoshmoore left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, @benjaminhwilliams. Looking forward to future PRs. 😉

@joshmoore
joshmoore merged commit 5fe5aea into zarr-developers:masterAug 24, 2021
@benjaminhwilliams
benjaminhwilliams deleted the fix-fixture-finding branch August 24, 2021 15:26
@joshmoorejoshmoore mentioned this pull request Aug 24, 2021
3 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@benjaminhwilliams@joshmoore
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Be more robust in how regression data are discovered - #821

Merged
joshmoore merged 5 commits into
zarr-developers:masterfrom
benjaminhwilliams:fix-fixture-finding
Aug 24, 2021
Merged

Be more robust in how regression data are discovered#821
joshmoore merged 5 commits into
zarr-developers:masterfrom
benjaminhwilliams:fix-fixture-finding

Conversation

@benjaminhwilliams

@benjaminhwilliamsbenjaminhwilliams commented Aug 24, 2021

Copy link
Copy Markdown
Contributor

Be stricter about where and how regression data are discovered, during testing. This fixes some tests that are failing during the Conda-forge release process.

As previously mentioned in #819 (comment):

  • Ensure that, regardless of the test runner working directory, the regression data can be found.
  • During zarr.tests.test_dim_separator.test_open, open an array in read-only mode, to prevent accidental creation of an empty array when the expected array does not exist, which would leave droppings in the test runner working directory.

TODO:

  • Add unit tests and/or doctests in docstrings
  • Add docstrings and API docs for any new/modified user-facing classes and functions
  • New/modified features documented in docs/tutorial.rst
  • Changes documented in docs/release.rst
  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

Avoid creating an empty array when test_open does not find the expected
existing array.
Regardless of the test runner working directory, ensure that this test
fixture returns the path to the relevant regression data directory,
which lives under the project root.
@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Release notes follow shortly.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

@joshmoore, does this pass muster, as far as you're concerned? I'm not sure if I have correctly formatted the release notes.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

As I'm a first-time contributor, the CI workflows won't run without maintainer approval. Would a kind maintainer mind enabling them?

@joshmoore

Copy link
Copy Markdown
Member

Would a kind maintainer mind enabling them?

Done

I'm not sure if I have correctly formatted the release notes.

Looks great!

@codecov

codecovBot commented Aug 24, 2021

Copy link
Copy Markdown

Codecov Report

Merging #821 (4a11512) into master (cba2783) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@ Coverage Diff @@## master #821 +/- ##
=======================================
Coverage 99.94% 99.94% =======================================
Files 31 31 Lines 10604 10606 +2 =======================================
+ Hits 10598 10600 +2 
Misses 6 6 
Impacted FilesCoverage Δ
zarr/tests/test_dim_separator.py100.00% <100.00%> (ø)

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

I'm obviously unable to claim that all the CI actions have passed, nor that the project test coverage is 100%, but is this necessary here? The diff coverage is 100% and the missing project coverage is in an unrelated part of tests.test_dim_separator, so it doesn't seem appropriate to target that coverage in this PR.

@joshmoore

Copy link
Copy Markdown
Member

is this necessary here?

Nope. This has been blocking my PRs as well. Don't worry. I've been focused on trying to fix conda and havedn't had time to fix codecov ;)

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Don't worry. I've been focused on trying to fix conda and havedn't had time to fix codecov ;)

Good good. Thanks for the opportunity to tinker!

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

As an aside, off topic for this PR, I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

"fs_nested",
"fs_flat",
"fs_default"

with pytest.params,

needs_fsspec=pytest.mark.skipif(nothave_fsspec, reason="needs fsspec")
...
pytest.param("fs_nested", marks=needs_fsspec),
pytest.param("fs_flat", marks=needs_fsspec),
pytest.param("fs_default", marks=needs_fsspec)

and then remove the if clause.

Of course, it doesn't actually change anything (Codecov would still be right to complain that the CI doesn't test in the absence of fsspec), but I believe it silences Codecov because there is no longer an explicit untested code path.

@joshmoore

Copy link
Copy Markdown
Member

Thanks for the opportunity to tinker!

;) Glad to have other tinkerers.

A heads up that in an effort to not keep abusing releases in order to test conda-forge, I'm running locally with this diff to zarr-feedstock:

(base) /tmp/zarr-feedstock $git diff
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index a5c0beb..d60380e 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
source:
- fn: {{ name }}-{{ version }}.tar.gz
- url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}.tar.gz
- sha256: {{ sha256 }}
+ git_url: https://github.com/benjaminhwilliams/zarr-python.git
+ git_rev: fix-fixture-finding
build:
number: 0
(base) /tmp/zarr-feedstock $./build-locally.py

Do you have any idea why I'm not seeing the failures locally?

@joshmoore

Copy link
Copy Markdown
Member

I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

I imagine so. Happy to see that as well, which removes the need for my pragma in #822

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Do you have any idea why I'm not seeing the failures locally?

What is your working directory when running Pytest? You will only see the failures on master when the working directory doesn't contain the sub-directory fixture, and this is true when the CI action runs in its own specially-created directory. Are you running Pytest in zarr-python?

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

I imagine so. Happy to see that as well, which removes the need for my pragma in #822

Want me to add a PR for that too?

@joshmoorejoshmoore mentioned this pull request Aug 24, 2021
@joshmoore

Copy link
Copy Markdown
Member

Want me to add a PR for that too?

If you'd like, sure!

@joshmoore

Copy link
Copy Markdown
Member

NB: Merging in #822 has gotten this green. 👍

@joshmoore

Copy link
Copy Markdown
Member

Are you running Pytest in zarr-python?

Yes.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Are you running Pytest in zarr-python?

Yes.

I think if you run Pytest from another directory, with something like

/tmp/some/dir/or/other$ pytest <wherever>/zarr-python/zarr

instead of

<wherever>/zarr-python$ pytest zarr

then you'll start to see the failures.

@joshmoorejoshmoore left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, @benjaminhwilliams. Looking forward to future PRs. 😉

@joshmoore
joshmoore merged commit 5fe5aea into zarr-developers:masterAug 24, 2021
@benjaminhwilliams
benjaminhwilliams deleted the fix-fixture-finding branch August 24, 2021 15:26
@joshmoorejoshmoore mentioned this pull request Aug 24, 2021
3 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@benjaminhwilliams@joshmoore
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Be more robust in how regression data are discovered - #821

Merged
joshmoore merged 5 commits into
zarr-developers:masterfrom
benjaminhwilliams:fix-fixture-finding
Aug 24, 2021
Merged

Be more robust in how regression data are discovered#821
joshmoore merged 5 commits into
zarr-developers:masterfrom
benjaminhwilliams:fix-fixture-finding

Conversation

@benjaminhwilliams

@benjaminhwilliamsbenjaminhwilliams commented Aug 24, 2021

Copy link
Copy Markdown
Contributor

Be stricter about where and how regression data are discovered, during testing. This fixes some tests that are failing during the Conda-forge release process.

As previously mentioned in #819 (comment):

  • Ensure that, regardless of the test runner working directory, the regression data can be found.
  • During zarr.tests.test_dim_separator.test_open, open an array in read-only mode, to prevent accidental creation of an empty array when the expected array does not exist, which would leave droppings in the test runner working directory.

TODO:

  • Add unit tests and/or doctests in docstrings
  • Add docstrings and API docs for any new/modified user-facing classes and functions
  • New/modified features documented in docs/tutorial.rst
  • Changes documented in docs/release.rst
  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

Avoid creating an empty array when test_open does not find the expected
existing array.
Regardless of the test runner working directory, ensure that this test
fixture returns the path to the relevant regression data directory,
which lives under the project root.
@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Release notes follow shortly.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

@joshmoore, does this pass muster, as far as you're concerned? I'm not sure if I have correctly formatted the release notes.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

As I'm a first-time contributor, the CI workflows won't run without maintainer approval. Would a kind maintainer mind enabling them?

@joshmoore

Copy link
Copy Markdown
Member

Would a kind maintainer mind enabling them?

Done

I'm not sure if I have correctly formatted the release notes.

Looks great!

@codecov

codecovBot commented Aug 24, 2021

Copy link
Copy Markdown

Codecov Report

Merging #821 (4a11512) into master (cba2783) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@ Coverage Diff @@## master #821 +/- ##
=======================================
Coverage 99.94% 99.94% =======================================
Files 31 31 Lines 10604 10606 +2 =======================================
+ Hits 10598 10600 +2 
Misses 6 6 
Impacted FilesCoverage Δ
zarr/tests/test_dim_separator.py100.00% <100.00%> (ø)

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

I'm obviously unable to claim that all the CI actions have passed, nor that the project test coverage is 100%, but is this necessary here? The diff coverage is 100% and the missing project coverage is in an unrelated part of tests.test_dim_separator, so it doesn't seem appropriate to target that coverage in this PR.

@joshmoore

Copy link
Copy Markdown
Member

is this necessary here?

Nope. This has been blocking my PRs as well. Don't worry. I've been focused on trying to fix conda and havedn't had time to fix codecov ;)

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Don't worry. I've been focused on trying to fix conda and havedn't had time to fix codecov ;)

Good good. Thanks for the opportunity to tinker!

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

As an aside, off topic for this PR, I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

"fs_nested",
"fs_flat",
"fs_default"

with pytest.params,

needs_fsspec=pytest.mark.skipif(nothave_fsspec, reason="needs fsspec")
...
pytest.param("fs_nested", marks=needs_fsspec),
pytest.param("fs_flat", marks=needs_fsspec),
pytest.param("fs_default", marks=needs_fsspec)

and then remove the if clause.

Of course, it doesn't actually change anything (Codecov would still be right to complain that the CI doesn't test in the absence of fsspec), but I believe it silences Codecov because there is no longer an explicit untested code path.

@joshmoore

Copy link
Copy Markdown
Member

Thanks for the opportunity to tinker!

;) Glad to have other tinkerers.

A heads up that in an effort to not keep abusing releases in order to test conda-forge, I'm running locally with this diff to zarr-feedstock:

(base) /tmp/zarr-feedstock $git diff
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index a5c0beb..d60380e 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
source:
- fn: {{ name }}-{{ version }}.tar.gz
- url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}.tar.gz
- sha256: {{ sha256 }}
+ git_url: https://github.com/benjaminhwilliams/zarr-python.git
+ git_rev: fix-fixture-finding
build:
number: 0
(base) /tmp/zarr-feedstock $./build-locally.py

Do you have any idea why I'm not seeing the failures locally?

@joshmoore

Copy link
Copy Markdown
Member

I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

I imagine so. Happy to see that as well, which removes the need for my pragma in #822

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Do you have any idea why I'm not seeing the failures locally?

What is your working directory when running Pytest? You will only see the failures on master when the working directory doesn't contain the sub-directory fixture, and this is true when the CI action runs in its own specially-created directory. Are you running Pytest in zarr-python?

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

I imagine so. Happy to see that as well, which removes the need for my pragma in #822

Want me to add a PR for that too?

@joshmoorejoshmoore mentioned this pull request Aug 24, 2021
@joshmoore

Copy link
Copy Markdown
Member

Want me to add a PR for that too?

If you'd like, sure!

@joshmoore

Copy link
Copy Markdown
Member

NB: Merging in #822 has gotten this green. 👍

@joshmoore

Copy link
Copy Markdown
Member

Are you running Pytest in zarr-python?

Yes.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Are you running Pytest in zarr-python?

Yes.

I think if you run Pytest from another directory, with something like

/tmp/some/dir/or/other$ pytest <wherever>/zarr-python/zarr

instead of

<wherever>/zarr-python$ pytest zarr

then you'll start to see the failures.

@joshmoorejoshmoore left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, @benjaminhwilliams. Looking forward to future PRs. 😉

@joshmoore
joshmoore merged commit 5fe5aea into zarr-developers:masterAug 24, 2021
@benjaminhwilliams
benjaminhwilliams deleted the fix-fixture-finding branch August 24, 2021 15:26
@joshmoorejoshmoore mentioned this pull request Aug 24, 2021
3 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@benjaminhwilliams@joshmoore
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Be more robust in how regression data are discovered - #821

Merged
joshmoore merged 5 commits into
zarr-developers:masterfrom
benjaminhwilliams:fix-fixture-finding
Aug 24, 2021
Merged

Be more robust in how regression data are discovered#821
joshmoore merged 5 commits into
zarr-developers:masterfrom
benjaminhwilliams:fix-fixture-finding

Conversation

@benjaminhwilliams

@benjaminhwilliamsbenjaminhwilliams commented Aug 24, 2021

Copy link
Copy Markdown
Contributor

Be stricter about where and how regression data are discovered, during testing. This fixes some tests that are failing during the Conda-forge release process.

As previously mentioned in #819 (comment):

  • Ensure that, regardless of the test runner working directory, the regression data can be found.
  • During zarr.tests.test_dim_separator.test_open, open an array in read-only mode, to prevent accidental creation of an empty array when the expected array does not exist, which would leave droppings in the test runner working directory.

TODO:

  • Add unit tests and/or doctests in docstrings
  • Add docstrings and API docs for any new/modified user-facing classes and functions
  • New/modified features documented in docs/tutorial.rst
  • Changes documented in docs/release.rst
  • GitHub Actions have all passed
  • Test coverage is 100% (Codecov passes)

Avoid creating an empty array when test_open does not find the expected
existing array.
Regardless of the test runner working directory, ensure that this test
fixture returns the path to the relevant regression data directory,
which lives under the project root.
@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Release notes follow shortly.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

@joshmoore, does this pass muster, as far as you're concerned? I'm not sure if I have correctly formatted the release notes.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

As I'm a first-time contributor, the CI workflows won't run without maintainer approval. Would a kind maintainer mind enabling them?

@joshmoore

Copy link
Copy Markdown
Member

Would a kind maintainer mind enabling them?

Done

I'm not sure if I have correctly formatted the release notes.

Looks great!

@codecov

codecovBot commented Aug 24, 2021

Copy link
Copy Markdown

Codecov Report

Merging #821 (4a11512) into master (cba2783) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@ Coverage Diff @@## master #821 +/- ##
=======================================
Coverage 99.94% 99.94% =======================================
Files 31 31 Lines 10604 10606 +2 =======================================
+ Hits 10598 10600 +2 
Misses 6 6 
Impacted FilesCoverage Δ
zarr/tests/test_dim_separator.py100.00% <100.00%> (ø)

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

I'm obviously unable to claim that all the CI actions have passed, nor that the project test coverage is 100%, but is this necessary here? The diff coverage is 100% and the missing project coverage is in an unrelated part of tests.test_dim_separator, so it doesn't seem appropriate to target that coverage in this PR.

@joshmoore

Copy link
Copy Markdown
Member

is this necessary here?

Nope. This has been blocking my PRs as well. Don't worry. I've been focused on trying to fix conda and havedn't had time to fix codecov ;)

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Don't worry. I've been focused on trying to fix conda and havedn't had time to fix codecov ;)

Good good. Thanks for the opportunity to tinker!

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

As an aside, off topic for this PR, I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

"fs_nested",
"fs_flat",
"fs_default"

with pytest.params,

needs_fsspec=pytest.mark.skipif(nothave_fsspec, reason="needs fsspec")
...
pytest.param("fs_nested", marks=needs_fsspec),
pytest.param("fs_flat", marks=needs_fsspec),
pytest.param("fs_default", marks=needs_fsspec)

and then remove the if clause.

Of course, it doesn't actually change anything (Codecov would still be right to complain that the CI doesn't test in the absence of fsspec), but I believe it silences Codecov because there is no longer an explicit untested code path.

@joshmoore

Copy link
Copy Markdown
Member

Thanks for the opportunity to tinker!

;) Glad to have other tinkerers.

A heads up that in an effort to not keep abusing releases in order to test conda-forge, I'm running locally with this diff to zarr-feedstock:

(base) /tmp/zarr-feedstock $git diff
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index a5c0beb..d60380e 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
source:
- fn: {{ name }}-{{ version }}.tar.gz
- url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}.tar.gz
- sha256: {{ sha256 }}
+ git_url: https://github.com/benjaminhwilliams/zarr-python.git
+ git_rev: fix-fixture-finding
build:
number: 0
(base) /tmp/zarr-feedstock $./build-locally.py

Do you have any idea why I'm not seeing the failures locally?

@joshmoore

Copy link
Copy Markdown
Member

I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

I imagine so. Happy to see that as well, which removes the need for my pragma in #822

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Do you have any idea why I'm not seeing the failures locally?

What is your working directory when running Pytest? You will only see the failures on master when the working directory doesn't contain the sub-directory fixture, and this is true when the CI action runs in its own specially-created directory. Are you running Pytest in zarr-python?

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

I wonder if you could cheat Codecov by replacing the last three entries in the tuple of fixture parameters,

I imagine so. Happy to see that as well, which removes the need for my pragma in #822

Want me to add a PR for that too?

@joshmoorejoshmoore mentioned this pull request Aug 24, 2021
@joshmoore

Copy link
Copy Markdown
Member

Want me to add a PR for that too?

If you'd like, sure!

@joshmoore

Copy link
Copy Markdown
Member

NB: Merging in #822 has gotten this green. 👍

@joshmoore

Copy link
Copy Markdown
Member

Are you running Pytest in zarr-python?

Yes.

@benjaminhwilliams

Copy link
Copy Markdown
ContributorAuthor

Are you running Pytest in zarr-python?

Yes.

I think if you run Pytest from another directory, with something like

/tmp/some/dir/or/other$ pytest <wherever>/zarr-python/zarr

instead of

<wherever>/zarr-python$ pytest zarr

then you'll start to see the failures.

@joshmoorejoshmoore left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, @benjaminhwilliams. Looking forward to future PRs. 😉

@joshmoore
joshmoore merged commit 5fe5aea into zarr-developers:masterAug 24, 2021
@benjaminhwilliams
benjaminhwilliams deleted the fix-fixture-finding branch August 24, 2021 15:26
@joshmoorejoshmoore mentioned this pull request Aug 24, 2021
3 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@benjaminhwilliams@joshmoore