Skip to content

Separate CI Job to run Pytest collection check - #29923

Merged
potiuk merged 1 commit into
apache:mainfrom
potiuk:separate-job-for-testing-pytest-collection
Mar 5, 2023
Merged

Separate CI Job to run Pytest collection check#29923
potiuk merged 1 commit into
apache:mainfrom
potiuk:separate-job-for-testing-pytest-collection

Conversation

@potiuk

Copy link
Copy Markdown
Member

Before we attempt to run tests in parallel, we quickly check once if Pytest collection works. This is in order to avoid costly parallel test execution if that makes no sense to initialize all the parallel machines. This check used to be done in "Wait for CI Inages" step, but running it there has the undesireable side effect that it is not obvious that it's the collection that fails, also it prevents other jobs (for example static checks and docs building) from running. This means that the contributor does not get all the feedback that could be given immediately.

This PR separates the collection into separate job and only makes "test" jobs depend on it - all the other jobs that need CI image depend on "wait for CI image" one and should continue running even if pytest collection fails.


^ Add meaningful description above

Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in newsfragments.

@potiuk

Copy link
Copy Markdown
MemberAuthor

This one will be very helpful when things like "new dependency release" breaking test imports - only real unit tests will be affected and it will be clear that test collection is the culprit if that's the case :)

Before we attempt to run tests in parallel, we quickly check once
if Pytest collection works. This is in order to avoid costly
parallel test execution if that makes no sense to initialize all
the parallel machines. This check used to be done in "Wait for
CI Inages" step, but running it there has the undesireable
side effect that it is not obvious that it's the collection
that fails, also it prevents other jobs (for example
static checks and docs building) from running. This means that
the contributor does not get all the feedback that could be
given immediately.
This PR separates the collection into separate job and only
makes "test" jobs depend on it - all the other jobs that need
CI image depend on "wait for CI image" one and should continue
running even if pytest collection fails.
CI diagrams are also updated to reflect a bit better optionality
and parallelism of the CI jobs.
@potiuk
potiukforce-pushed the separate-job-for-testing-pytest-collection branch from d2e37de to 5642dc1CompareMarch 5, 2023 08:16
@potiuk

Copy link
Copy Markdown
MemberAuthor

I've also updated the mermaid CI diagrams - you can take a look @eladkal - how diagram modification PR looks llke when you get embedded mermaid diagram (when you click "display rich diff" you are able to compare the before and after diagrams visually.

Screenshot 2023-03-05 at 09 18 56

@potiuk
potiuk merged commit 30b2e6c into apache:mainMar 5, 2023
@potiuk
potiuk deleted the separate-job-for-testing-pytest-collection branch March 5, 2023 10:26
@o-nikolas

Copy link
Copy Markdown
Contributor

Love this one 🚀

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@potiuk@o-nikolas@eladkal
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Separate CI Job to run Pytest collection check by potiuk · Pull Request #29923 · apache/airflow · GitHub
Skip to content

Separate CI Job to run Pytest collection check - #29923

Merged
potiuk merged 1 commit into
apache:mainfrom
potiuk:separate-job-for-testing-pytest-collection
Mar 5, 2023
Merged

Separate CI Job to run Pytest collection check#29923
potiuk merged 1 commit into
apache:mainfrom
potiuk:separate-job-for-testing-pytest-collection

Conversation

@potiuk

Copy link
Copy Markdown
Member

Before we attempt to run tests in parallel, we quickly check once if Pytest collection works. This is in order to avoid costly parallel test execution if that makes no sense to initialize all the parallel machines. This check used to be done in "Wait for CI Inages" step, but running it there has the undesireable side effect that it is not obvious that it's the collection that fails, also it prevents other jobs (for example static checks and docs building) from running. This means that the contributor does not get all the feedback that could be given immediately.

This PR separates the collection into separate job and only makes "test" jobs depend on it - all the other jobs that need CI image depend on "wait for CI image" one and should continue running even if pytest collection fails.


^ Add meaningful description above

Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in newsfragments.

@potiuk

Copy link
Copy Markdown
MemberAuthor

This one will be very helpful when things like "new dependency release" breaking test imports - only real unit tests will be affected and it will be clear that test collection is the culprit if that's the case :)

Before we attempt to run tests in parallel, we quickly check once
if Pytest collection works. This is in order to avoid costly
parallel test execution if that makes no sense to initialize all
the parallel machines. This check used to be done in "Wait for
CI Inages" step, but running it there has the undesireable
side effect that it is not obvious that it's the collection
that fails, also it prevents other jobs (for example
static checks and docs building) from running. This means that
the contributor does not get all the feedback that could be
given immediately.
This PR separates the collection into separate job and only
makes "test" jobs depend on it - all the other jobs that need
CI image depend on "wait for CI image" one and should continue
running even if pytest collection fails.
CI diagrams are also updated to reflect a bit better optionality
and parallelism of the CI jobs.
@potiuk
potiukforce-pushed the separate-job-for-testing-pytest-collection branch from d2e37de to 5642dc1CompareMarch 5, 2023 08:16
@potiuk

Copy link
Copy Markdown
MemberAuthor

I've also updated the mermaid CI diagrams - you can take a look @eladkal - how diagram modification PR looks llke when you get embedded mermaid diagram (when you click "display rich diff" you are able to compare the before and after diagrams visually.

Screenshot 2023-03-05 at 09 18 56

@potiuk
potiuk merged commit 30b2e6c into apache:mainMar 5, 2023
@potiuk
potiuk deleted the separate-job-for-testing-pytest-collection branch March 5, 2023 10:26
@o-nikolas

Copy link
Copy Markdown
Contributor

Love this one 🚀

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@potiuk@o-nikolas@eladkal
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Separate CI Job to run Pytest collection check by potiuk · Pull Request #29923 · apache/airflow · GitHub
Skip to content

Separate CI Job to run Pytest collection check - #29923

Merged
potiuk merged 1 commit into
apache:mainfrom
potiuk:separate-job-for-testing-pytest-collection
Mar 5, 2023
Merged

Separate CI Job to run Pytest collection check#29923
potiuk merged 1 commit into
apache:mainfrom
potiuk:separate-job-for-testing-pytest-collection

Conversation

@potiuk

Copy link
Copy Markdown
Member

Before we attempt to run tests in parallel, we quickly check once if Pytest collection works. This is in order to avoid costly parallel test execution if that makes no sense to initialize all the parallel machines. This check used to be done in "Wait for CI Inages" step, but running it there has the undesireable side effect that it is not obvious that it's the collection that fails, also it prevents other jobs (for example static checks and docs building) from running. This means that the contributor does not get all the feedback that could be given immediately.

This PR separates the collection into separate job and only makes "test" jobs depend on it - all the other jobs that need CI image depend on "wait for CI image" one and should continue running even if pytest collection fails.


^ Add meaningful description above

Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in newsfragments.

@potiuk

Copy link
Copy Markdown
MemberAuthor

This one will be very helpful when things like "new dependency release" breaking test imports - only real unit tests will be affected and it will be clear that test collection is the culprit if that's the case :)

Before we attempt to run tests in parallel, we quickly check once
if Pytest collection works. This is in order to avoid costly
parallel test execution if that makes no sense to initialize all
the parallel machines. This check used to be done in "Wait for
CI Inages" step, but running it there has the undesireable
side effect that it is not obvious that it's the collection
that fails, also it prevents other jobs (for example
static checks and docs building) from running. This means that
the contributor does not get all the feedback that could be
given immediately.
This PR separates the collection into separate job and only
makes "test" jobs depend on it - all the other jobs that need
CI image depend on "wait for CI image" one and should continue
running even if pytest collection fails.
CI diagrams are also updated to reflect a bit better optionality
and parallelism of the CI jobs.
@potiuk
potiukforce-pushed the separate-job-for-testing-pytest-collection branch from d2e37de to 5642dc1CompareMarch 5, 2023 08:16
@potiuk

Copy link
Copy Markdown
MemberAuthor

I've also updated the mermaid CI diagrams - you can take a look @eladkal - how diagram modification PR looks llke when you get embedded mermaid diagram (when you click "display rich diff" you are able to compare the before and after diagrams visually.

Screenshot 2023-03-05 at 09 18 56

@potiuk
potiuk merged commit 30b2e6c into apache:mainMar 5, 2023
@potiuk
potiuk deleted the separate-job-for-testing-pytest-collection branch March 5, 2023 10:26
@o-nikolas

Copy link
Copy Markdown
Contributor

Love this one 🚀

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

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

Separate CI Job to run Pytest collection check - #29923

Merged
potiuk merged 1 commit into
apache:mainfrom
potiuk:separate-job-for-testing-pytest-collection
Mar 5, 2023
Merged

Separate CI Job to run Pytest collection check#29923
potiuk merged 1 commit into
apache:mainfrom
potiuk:separate-job-for-testing-pytest-collection

Conversation

@potiuk

Copy link
Copy Markdown
Member

Before we attempt to run tests in parallel, we quickly check once if Pytest collection works. This is in order to avoid costly parallel test execution if that makes no sense to initialize all the parallel machines. This check used to be done in "Wait for CI Inages" step, but running it there has the undesireable side effect that it is not obvious that it's the collection that fails, also it prevents other jobs (for example static checks and docs building) from running. This means that the contributor does not get all the feedback that could be given immediately.

This PR separates the collection into separate job and only makes "test" jobs depend on it - all the other jobs that need CI image depend on "wait for CI image" one and should continue running even if pytest collection fails.


^ Add meaningful description above

Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in newsfragments.

@potiuk

Copy link
Copy Markdown
MemberAuthor

This one will be very helpful when things like "new dependency release" breaking test imports - only real unit tests will be affected and it will be clear that test collection is the culprit if that's the case :)

Before we attempt to run tests in parallel, we quickly check once
if Pytest collection works. This is in order to avoid costly
parallel test execution if that makes no sense to initialize all
the parallel machines. This check used to be done in "Wait for
CI Inages" step, but running it there has the undesireable
side effect that it is not obvious that it's the collection
that fails, also it prevents other jobs (for example
static checks and docs building) from running. This means that
the contributor does not get all the feedback that could be
given immediately.
This PR separates the collection into separate job and only
makes "test" jobs depend on it - all the other jobs that need
CI image depend on "wait for CI image" one and should continue
running even if pytest collection fails.
CI diagrams are also updated to reflect a bit better optionality
and parallelism of the CI jobs.
@potiuk
potiukforce-pushed the separate-job-for-testing-pytest-collection branch from d2e37de to 5642dc1CompareMarch 5, 2023 08:16
@potiuk

Copy link
Copy Markdown
MemberAuthor

I've also updated the mermaid CI diagrams - you can take a look @eladkal - how diagram modification PR looks llke when you get embedded mermaid diagram (when you click "display rich diff" you are able to compare the before and after diagrams visually.

Screenshot 2023-03-05 at 09 18 56

@potiuk
potiuk merged commit 30b2e6c into apache:mainMar 5, 2023
@potiuk
potiuk deleted the separate-job-for-testing-pytest-collection branch March 5, 2023 10:26
@o-nikolas

Copy link
Copy Markdown
Contributor

Love this one 🚀

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

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

Separate CI Job to run Pytest collection check - #29923

Merged
potiuk merged 1 commit into
apache:mainfrom
potiuk:separate-job-for-testing-pytest-collection
Mar 5, 2023
Merged

Separate CI Job to run Pytest collection check#29923
potiuk merged 1 commit into
apache:mainfrom
potiuk:separate-job-for-testing-pytest-collection

Conversation

@potiuk

Copy link
Copy Markdown
Member

Before we attempt to run tests in parallel, we quickly check once if Pytest collection works. This is in order to avoid costly parallel test execution if that makes no sense to initialize all the parallel machines. This check used to be done in "Wait for CI Inages" step, but running it there has the undesireable side effect that it is not obvious that it's the collection that fails, also it prevents other jobs (for example static checks and docs building) from running. This means that the contributor does not get all the feedback that could be given immediately.

This PR separates the collection into separate job and only makes "test" jobs depend on it - all the other jobs that need CI image depend on "wait for CI image" one and should continue running even if pytest collection fails.


^ Add meaningful description above

Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in newsfragments.

@potiuk

Copy link
Copy Markdown
MemberAuthor

This one will be very helpful when things like "new dependency release" breaking test imports - only real unit tests will be affected and it will be clear that test collection is the culprit if that's the case :)

Before we attempt to run tests in parallel, we quickly check once
if Pytest collection works. This is in order to avoid costly
parallel test execution if that makes no sense to initialize all
the parallel machines. This check used to be done in "Wait for
CI Inages" step, but running it there has the undesireable
side effect that it is not obvious that it's the collection
that fails, also it prevents other jobs (for example
static checks and docs building) from running. This means that
the contributor does not get all the feedback that could be
given immediately.
This PR separates the collection into separate job and only
makes "test" jobs depend on it - all the other jobs that need
CI image depend on "wait for CI image" one and should continue
running even if pytest collection fails.
CI diagrams are also updated to reflect a bit better optionality
and parallelism of the CI jobs.
@potiuk
potiukforce-pushed the separate-job-for-testing-pytest-collection branch from d2e37de to 5642dc1CompareMarch 5, 2023 08:16
@potiuk

Copy link
Copy Markdown
MemberAuthor

I've also updated the mermaid CI diagrams - you can take a look @eladkal - how diagram modification PR looks llke when you get embedded mermaid diagram (when you click "display rich diff" you are able to compare the before and after diagrams visually.

Screenshot 2023-03-05 at 09 18 56

@potiuk
potiuk merged commit 30b2e6c into apache:mainMar 5, 2023
@potiuk
potiuk deleted the separate-job-for-testing-pytest-collection branch March 5, 2023 10:26
@o-nikolas

Copy link
Copy Markdown
Contributor

Love this one 🚀

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@potiuk@o-nikolas@eladkal
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Separate CI Job to run Pytest collection check by potiuk · Pull Request #29923 · apache/airflow · GitHub
Skip to content

Separate CI Job to run Pytest collection check - #29923

Merged
potiuk merged 1 commit into
apache:mainfrom
potiuk:separate-job-for-testing-pytest-collection
Mar 5, 2023
Merged

Separate CI Job to run Pytest collection check#29923
potiuk merged 1 commit into
apache:mainfrom
potiuk:separate-job-for-testing-pytest-collection

Conversation

@potiuk

Copy link
Copy Markdown
Member

Before we attempt to run tests in parallel, we quickly check once if Pytest collection works. This is in order to avoid costly parallel test execution if that makes no sense to initialize all the parallel machines. This check used to be done in "Wait for CI Inages" step, but running it there has the undesireable side effect that it is not obvious that it's the collection that fails, also it prevents other jobs (for example static checks and docs building) from running. This means that the contributor does not get all the feedback that could be given immediately.

This PR separates the collection into separate job and only makes "test" jobs depend on it - all the other jobs that need CI image depend on "wait for CI image" one and should continue running even if pytest collection fails.


^ Add meaningful description above

Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in newsfragments.

@potiuk

Copy link
Copy Markdown
MemberAuthor

This one will be very helpful when things like "new dependency release" breaking test imports - only real unit tests will be affected and it will be clear that test collection is the culprit if that's the case :)

Before we attempt to run tests in parallel, we quickly check once
if Pytest collection works. This is in order to avoid costly
parallel test execution if that makes no sense to initialize all
the parallel machines. This check used to be done in "Wait for
CI Inages" step, but running it there has the undesireable
side effect that it is not obvious that it's the collection
that fails, also it prevents other jobs (for example
static checks and docs building) from running. This means that
the contributor does not get all the feedback that could be
given immediately.
This PR separates the collection into separate job and only
makes "test" jobs depend on it - all the other jobs that need
CI image depend on "wait for CI image" one and should continue
running even if pytest collection fails.
CI diagrams are also updated to reflect a bit better optionality
and parallelism of the CI jobs.
@potiuk
potiukforce-pushed the separate-job-for-testing-pytest-collection branch from d2e37de to 5642dc1CompareMarch 5, 2023 08:16
@potiuk

Copy link
Copy Markdown
MemberAuthor

I've also updated the mermaid CI diagrams - you can take a look @eladkal - how diagram modification PR looks llke when you get embedded mermaid diagram (when you click "display rich diff" you are able to compare the before and after diagrams visually.

Screenshot 2023-03-05 at 09 18 56

@potiuk
potiuk merged commit 30b2e6c into apache:mainMar 5, 2023
@potiuk
potiuk deleted the separate-job-for-testing-pytest-collection branch March 5, 2023 10:26
@o-nikolas

Copy link
Copy Markdown
Contributor

Love this one 🚀

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@potiuk@o-nikolas@eladkal
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Separate CI Job to run Pytest collection check by potiuk · Pull Request #29923 · apache/airflow · GitHub
Skip to content

Separate CI Job to run Pytest collection check - #29923

Merged
potiuk merged 1 commit into
apache:mainfrom
potiuk:separate-job-for-testing-pytest-collection
Mar 5, 2023
Merged

Separate CI Job to run Pytest collection check#29923
potiuk merged 1 commit into
apache:mainfrom
potiuk:separate-job-for-testing-pytest-collection

Conversation

@potiuk

Copy link
Copy Markdown
Member

Before we attempt to run tests in parallel, we quickly check once if Pytest collection works. This is in order to avoid costly parallel test execution if that makes no sense to initialize all the parallel machines. This check used to be done in "Wait for CI Inages" step, but running it there has the undesireable side effect that it is not obvious that it's the collection that fails, also it prevents other jobs (for example static checks and docs building) from running. This means that the contributor does not get all the feedback that could be given immediately.

This PR separates the collection into separate job and only makes "test" jobs depend on it - all the other jobs that need CI image depend on "wait for CI image" one and should continue running even if pytest collection fails.


^ Add meaningful description above

Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in newsfragments.

@potiuk

Copy link
Copy Markdown
MemberAuthor

This one will be very helpful when things like "new dependency release" breaking test imports - only real unit tests will be affected and it will be clear that test collection is the culprit if that's the case :)

Before we attempt to run tests in parallel, we quickly check once
if Pytest collection works. This is in order to avoid costly
parallel test execution if that makes no sense to initialize all
the parallel machines. This check used to be done in "Wait for
CI Inages" step, but running it there has the undesireable
side effect that it is not obvious that it's the collection
that fails, also it prevents other jobs (for example
static checks and docs building) from running. This means that
the contributor does not get all the feedback that could be
given immediately.
This PR separates the collection into separate job and only
makes "test" jobs depend on it - all the other jobs that need
CI image depend on "wait for CI image" one and should continue
running even if pytest collection fails.
CI diagrams are also updated to reflect a bit better optionality
and parallelism of the CI jobs.
@potiuk
potiukforce-pushed the separate-job-for-testing-pytest-collection branch from d2e37de to 5642dc1CompareMarch 5, 2023 08:16
@potiuk

Copy link
Copy Markdown
MemberAuthor

I've also updated the mermaid CI diagrams - you can take a look @eladkal - how diagram modification PR looks llke when you get embedded mermaid diagram (when you click "display rich diff" you are able to compare the before and after diagrams visually.

Screenshot 2023-03-05 at 09 18 56

@potiuk
potiuk merged commit 30b2e6c into apache:mainMar 5, 2023
@potiuk
potiuk deleted the separate-job-for-testing-pytest-collection branch March 5, 2023 10:26
@o-nikolas

Copy link
Copy Markdown
Contributor

Love this one 🚀

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

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

Separate CI Job to run Pytest collection check - #29923

Merged
potiuk merged 1 commit into
apache:mainfrom
potiuk:separate-job-for-testing-pytest-collection
Mar 5, 2023
Merged

Separate CI Job to run Pytest collection check#29923
potiuk merged 1 commit into
apache:mainfrom
potiuk:separate-job-for-testing-pytest-collection

Conversation

@potiuk

Copy link
Copy Markdown
Member

Before we attempt to run tests in parallel, we quickly check once if Pytest collection works. This is in order to avoid costly parallel test execution if that makes no sense to initialize all the parallel machines. This check used to be done in "Wait for CI Inages" step, but running it there has the undesireable side effect that it is not obvious that it's the collection that fails, also it prevents other jobs (for example static checks and docs building) from running. This means that the contributor does not get all the feedback that could be given immediately.

This PR separates the collection into separate job and only makes "test" jobs depend on it - all the other jobs that need CI image depend on "wait for CI image" one and should continue running even if pytest collection fails.


^ Add meaningful description above

Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in newsfragments.

@potiuk

Copy link
Copy Markdown
MemberAuthor

This one will be very helpful when things like "new dependency release" breaking test imports - only real unit tests will be affected and it will be clear that test collection is the culprit if that's the case :)

Before we attempt to run tests in parallel, we quickly check once
if Pytest collection works. This is in order to avoid costly
parallel test execution if that makes no sense to initialize all
the parallel machines. This check used to be done in "Wait for
CI Inages" step, but running it there has the undesireable
side effect that it is not obvious that it's the collection
that fails, also it prevents other jobs (for example
static checks and docs building) from running. This means that
the contributor does not get all the feedback that could be
given immediately.
This PR separates the collection into separate job and only
makes "test" jobs depend on it - all the other jobs that need
CI image depend on "wait for CI image" one and should continue
running even if pytest collection fails.
CI diagrams are also updated to reflect a bit better optionality
and parallelism of the CI jobs.
@potiuk
potiukforce-pushed the separate-job-for-testing-pytest-collection branch from d2e37de to 5642dc1CompareMarch 5, 2023 08:16
@potiuk

Copy link
Copy Markdown
MemberAuthor

I've also updated the mermaid CI diagrams - you can take a look @eladkal - how diagram modification PR looks llke when you get embedded mermaid diagram (when you click "display rich diff" you are able to compare the before and after diagrams visually.

Screenshot 2023-03-05 at 09 18 56

@potiuk
potiuk merged commit 30b2e6c into apache:mainMar 5, 2023
@potiuk
potiuk deleted the separate-job-for-testing-pytest-collection branch March 5, 2023 10:26
@o-nikolas

Copy link
Copy Markdown
Contributor

Love this one 🚀

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@potiuk@o-nikolas@eladkal