Skip to content

Spec Coverage via. matrix-doc in pytest - #125

Open
pik wants to merge 7 commits into
matrix-org:masterfrom
pik:spec-coverage
Open

Spec Coverage via. matrix-doc in pytest#125
pik wants to merge 7 commits into
matrix-org:masterfrom
pik:spec-coverage

Conversation

@pik

@pikpik commented May 3, 2017

Copy link
Copy Markdown
Contributor

Runs with the usual pytest test - if matrix-doc submodule is pulled it will attempt to generate coverage stats by parsing the API spec. Requests to paths / methods not provided for in Matrix doc will result in error messages: this currently doesn't supercede testing with mocks but it will raise errors if the mocking does not correspond to spec'd API endpoints (this can be improved later to auto-mock).

@matrixbot

Copy link
Copy Markdown
Member

Can one of the admins verify this patch?

MISSING_ENDPOINT = "Not a valid API Endpoint: "
MISSING_METHOD = "Not a valid API Method: "

class ApiGuide:

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Not a fan of this class-name - but I'd prefer not to have something very long like MatrixApiCoverageStatGatherer, though maybe that's better than this?

def endpoint_to_regex(s):
# TODO sub by with more specific REGEXes per type
# e.g. roomId, eventId, userId
return re.sub('\{[a-zA-Z]+\}', '[a-zA-Z!\.:-@#]+', s)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

This is bad, requests, or some other library should provide a way to directly assert whether a request matches e.g. /room_id/{roomId} I haven't really looked into it, but regexing is not the preferred way for sure.

from responses import RequestsMock

INTERPOLATIONS = [
("%CLIENT_MAJOR_VERSION%", "r0")

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

As discussed the spec only lists %CLIENT_MAJOR_VERSION% for all it's docs, potentially this is fail-prone where api/v1 and api/v2 actually differ in Synapse, probably needs to have an issue opened on matrix-doc.

@Half-Shot
Half-Shot self-requested a review May 5, 2017 07:54
Comment thread.gitmodules
@@ -0,0 +1,3 @@
[submodule "matrix-doc"]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I don't think a git submodule is the right way to approach including the documentation for testing, but I don't know what the "right way" is off the top of my head.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

What don't you like about sub-moduling?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

It makes it fairly easy for someone developing to run tests but quite difficult if you've just installed a release version and want to run the tests.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

submodules are not fetched automatically you need to ask git to do that, so if you haven't pull matrix-doc it just runs tests without providing you with spec-coverage.

On the other-hand if we move towards using the matrix-doc to also create / respond to mock requests (we don't currently) than indeed you would need matrix-doc to run tests.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@pik@matrixbot@non-Jedi
, '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" + '
Spec Coverage via. matrix-doc in pytest by pik · Pull Request #125 · matrix-org/matrix-python-sdk · GitHub
Skip to content

Spec Coverage via. matrix-doc in pytest - #125

Open
pik wants to merge 7 commits into
matrix-org:masterfrom
pik:spec-coverage
Open

Spec Coverage via. matrix-doc in pytest#125
pik wants to merge 7 commits into
matrix-org:masterfrom
pik:spec-coverage

Conversation

@pik

@pikpik commented May 3, 2017

Copy link
Copy Markdown
Contributor

Runs with the usual pytest test - if matrix-doc submodule is pulled it will attempt to generate coverage stats by parsing the API spec. Requests to paths / methods not provided for in Matrix doc will result in error messages: this currently doesn't supercede testing with mocks but it will raise errors if the mocking does not correspond to spec'd API endpoints (this can be improved later to auto-mock).

@matrixbot

Copy link
Copy Markdown
Member

Can one of the admins verify this patch?

MISSING_ENDPOINT = "Not a valid API Endpoint: "
MISSING_METHOD = "Not a valid API Method: "

class ApiGuide:

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Not a fan of this class-name - but I'd prefer not to have something very long like MatrixApiCoverageStatGatherer, though maybe that's better than this?

def endpoint_to_regex(s):
# TODO sub by with more specific REGEXes per type
# e.g. roomId, eventId, userId
return re.sub('\{[a-zA-Z]+\}', '[a-zA-Z!\.:-@#]+', s)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

This is bad, requests, or some other library should provide a way to directly assert whether a request matches e.g. /room_id/{roomId} I haven't really looked into it, but regexing is not the preferred way for sure.

from responses import RequestsMock

INTERPOLATIONS = [
("%CLIENT_MAJOR_VERSION%", "r0")

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

As discussed the spec only lists %CLIENT_MAJOR_VERSION% for all it's docs, potentially this is fail-prone where api/v1 and api/v2 actually differ in Synapse, probably needs to have an issue opened on matrix-doc.

@Half-Shot
Half-Shot self-requested a review May 5, 2017 07:54
Comment thread.gitmodules
@@ -0,0 +1,3 @@
[submodule "matrix-doc"]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I don't think a git submodule is the right way to approach including the documentation for testing, but I don't know what the "right way" is off the top of my head.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

What don't you like about sub-moduling?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

It makes it fairly easy for someone developing to run tests but quite difficult if you've just installed a release version and want to run the tests.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

submodules are not fetched automatically you need to ask git to do that, so if you haven't pull matrix-doc it just runs tests without providing you with spec-coverage.

On the other-hand if we move towards using the matrix-doc to also create / respond to mock requests (we don't currently) than indeed you would need matrix-doc to run tests.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@pik@matrixbot@non-Jedi
, '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('^' + ".*" + ' Spec Coverage via. matrix-doc in pytest by pik · Pull Request #125 · matrix-org/matrix-python-sdk · GitHub
Skip to content

Spec Coverage via. matrix-doc in pytest - #125

Open
pik wants to merge 7 commits into
matrix-org:masterfrom
pik:spec-coverage
Open

Spec Coverage via. matrix-doc in pytest#125
pik wants to merge 7 commits into
matrix-org:masterfrom
pik:spec-coverage

Conversation

@pik

@pikpik commented May 3, 2017

Copy link
Copy Markdown
Contributor

Runs with the usual pytest test - if matrix-doc submodule is pulled it will attempt to generate coverage stats by parsing the API spec. Requests to paths / methods not provided for in Matrix doc will result in error messages: this currently doesn't supercede testing with mocks but it will raise errors if the mocking does not correspond to spec'd API endpoints (this can be improved later to auto-mock).

@matrixbot

Copy link
Copy Markdown
Member

Can one of the admins verify this patch?

MISSING_ENDPOINT = "Not a valid API Endpoint: "
MISSING_METHOD = "Not a valid API Method: "

class ApiGuide:

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Not a fan of this class-name - but I'd prefer not to have something very long like MatrixApiCoverageStatGatherer, though maybe that's better than this?

def endpoint_to_regex(s):
# TODO sub by with more specific REGEXes per type
# e.g. roomId, eventId, userId
return re.sub('\{[a-zA-Z]+\}', '[a-zA-Z!\.:-@#]+', s)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

This is bad, requests, or some other library should provide a way to directly assert whether a request matches e.g. /room_id/{roomId} I haven't really looked into it, but regexing is not the preferred way for sure.

from responses import RequestsMock

INTERPOLATIONS = [
("%CLIENT_MAJOR_VERSION%", "r0")

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

As discussed the spec only lists %CLIENT_MAJOR_VERSION% for all it's docs, potentially this is fail-prone where api/v1 and api/v2 actually differ in Synapse, probably needs to have an issue opened on matrix-doc.

@Half-Shot
Half-Shot self-requested a review May 5, 2017 07:54
Comment thread.gitmodules
@@ -0,0 +1,3 @@
[submodule "matrix-doc"]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I don't think a git submodule is the right way to approach including the documentation for testing, but I don't know what the "right way" is off the top of my head.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

What don't you like about sub-moduling?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

It makes it fairly easy for someone developing to run tests but quite difficult if you've just installed a release version and want to run the tests.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

submodules are not fetched automatically you need to ask git to do that, so if you haven't pull matrix-doc it just runs tests without providing you with spec-coverage.

On the other-hand if we move towards using the matrix-doc to also create / respond to mock requests (we don't currently) than indeed you would need matrix-doc to run tests.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@pik@matrixbot@non-Jedi
, '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('^' + ".*" + ' Spec Coverage via. matrix-doc in pytest by pik · Pull Request #125 · matrix-org/matrix-python-sdk · GitHub
Skip to content

Spec Coverage via. matrix-doc in pytest - #125

Open
pik wants to merge 7 commits into
matrix-org:masterfrom
pik:spec-coverage
Open

Spec Coverage via. matrix-doc in pytest#125
pik wants to merge 7 commits into
matrix-org:masterfrom
pik:spec-coverage

Conversation

@pik

@pikpik commented May 3, 2017

Copy link
Copy Markdown
Contributor

Runs with the usual pytest test - if matrix-doc submodule is pulled it will attempt to generate coverage stats by parsing the API spec. Requests to paths / methods not provided for in Matrix doc will result in error messages: this currently doesn't supercede testing with mocks but it will raise errors if the mocking does not correspond to spec'd API endpoints (this can be improved later to auto-mock).

@matrixbot

Copy link
Copy Markdown
Member

Can one of the admins verify this patch?

MISSING_ENDPOINT = "Not a valid API Endpoint: "
MISSING_METHOD = "Not a valid API Method: "

class ApiGuide:

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Not a fan of this class-name - but I'd prefer not to have something very long like MatrixApiCoverageStatGatherer, though maybe that's better than this?

def endpoint_to_regex(s):
# TODO sub by with more specific REGEXes per type
# e.g. roomId, eventId, userId
return re.sub('\{[a-zA-Z]+\}', '[a-zA-Z!\.:-@#]+', s)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

This is bad, requests, or some other library should provide a way to directly assert whether a request matches e.g. /room_id/{roomId} I haven't really looked into it, but regexing is not the preferred way for sure.

from responses import RequestsMock

INTERPOLATIONS = [
("%CLIENT_MAJOR_VERSION%", "r0")

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

As discussed the spec only lists %CLIENT_MAJOR_VERSION% for all it's docs, potentially this is fail-prone where api/v1 and api/v2 actually differ in Synapse, probably needs to have an issue opened on matrix-doc.

@Half-Shot
Half-Shot self-requested a review May 5, 2017 07:54
Comment thread.gitmodules
@@ -0,0 +1,3 @@
[submodule "matrix-doc"]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I don't think a git submodule is the right way to approach including the documentation for testing, but I don't know what the "right way" is off the top of my head.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

What don't you like about sub-moduling?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

It makes it fairly easy for someone developing to run tests but quite difficult if you've just installed a release version and want to run the tests.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

submodules are not fetched automatically you need to ask git to do that, so if you haven't pull matrix-doc it just runs tests without providing you with spec-coverage.

On the other-hand if we move towards using the matrix-doc to also create / respond to mock requests (we don't currently) than indeed you would need matrix-doc to run tests.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@pik@matrixbot@non-Jedi
, '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" + ' Spec Coverage via. matrix-doc in pytest by pik · Pull Request #125 · matrix-org/matrix-python-sdk · GitHub
Skip to content

Spec Coverage via. matrix-doc in pytest - #125

Open
pik wants to merge 7 commits into
matrix-org:masterfrom
pik:spec-coverage
Open

Spec Coverage via. matrix-doc in pytest#125
pik wants to merge 7 commits into
matrix-org:masterfrom
pik:spec-coverage

Conversation

@pik

@pikpik commented May 3, 2017

Copy link
Copy Markdown
Contributor

Runs with the usual pytest test - if matrix-doc submodule is pulled it will attempt to generate coverage stats by parsing the API spec. Requests to paths / methods not provided for in Matrix doc will result in error messages: this currently doesn't supercede testing with mocks but it will raise errors if the mocking does not correspond to spec'd API endpoints (this can be improved later to auto-mock).

@matrixbot

Copy link
Copy Markdown
Member

Can one of the admins verify this patch?

MISSING_ENDPOINT = "Not a valid API Endpoint: "
MISSING_METHOD = "Not a valid API Method: "

class ApiGuide:

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Not a fan of this class-name - but I'd prefer not to have something very long like MatrixApiCoverageStatGatherer, though maybe that's better than this?

def endpoint_to_regex(s):
# TODO sub by with more specific REGEXes per type
# e.g. roomId, eventId, userId
return re.sub('\{[a-zA-Z]+\}', '[a-zA-Z!\.:-@#]+', s)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

This is bad, requests, or some other library should provide a way to directly assert whether a request matches e.g. /room_id/{roomId} I haven't really looked into it, but regexing is not the preferred way for sure.

from responses import RequestsMock

INTERPOLATIONS = [
("%CLIENT_MAJOR_VERSION%", "r0")

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

As discussed the spec only lists %CLIENT_MAJOR_VERSION% for all it's docs, potentially this is fail-prone where api/v1 and api/v2 actually differ in Synapse, probably needs to have an issue opened on matrix-doc.

@Half-Shot
Half-Shot self-requested a review May 5, 2017 07:54
Comment thread.gitmodules
@@ -0,0 +1,3 @@
[submodule "matrix-doc"]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I don't think a git submodule is the right way to approach including the documentation for testing, but I don't know what the "right way" is off the top of my head.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

What don't you like about sub-moduling?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

It makes it fairly easy for someone developing to run tests but quite difficult if you've just installed a release version and want to run the tests.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

submodules are not fetched automatically you need to ask git to do that, so if you haven't pull matrix-doc it just runs tests without providing you with spec-coverage.

On the other-hand if we move towards using the matrix-doc to also create / respond to mock requests (we don't currently) than indeed you would need matrix-doc to run tests.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@pik@matrixbot@non-Jedi
, '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('^' + ".*" + ' Spec Coverage via. matrix-doc in pytest by pik · Pull Request #125 · matrix-org/matrix-python-sdk · GitHub
Skip to content

Spec Coverage via. matrix-doc in pytest - #125

Open
pik wants to merge 7 commits into
matrix-org:masterfrom
pik:spec-coverage
Open

Spec Coverage via. matrix-doc in pytest#125
pik wants to merge 7 commits into
matrix-org:masterfrom
pik:spec-coverage

Conversation

@pik

@pikpik commented May 3, 2017

Copy link
Copy Markdown
Contributor

Runs with the usual pytest test - if matrix-doc submodule is pulled it will attempt to generate coverage stats by parsing the API spec. Requests to paths / methods not provided for in Matrix doc will result in error messages: this currently doesn't supercede testing with mocks but it will raise errors if the mocking does not correspond to spec'd API endpoints (this can be improved later to auto-mock).

@matrixbot

Copy link
Copy Markdown
Member

Can one of the admins verify this patch?

MISSING_ENDPOINT = "Not a valid API Endpoint: "
MISSING_METHOD = "Not a valid API Method: "

class ApiGuide:

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Not a fan of this class-name - but I'd prefer not to have something very long like MatrixApiCoverageStatGatherer, though maybe that's better than this?

def endpoint_to_regex(s):
# TODO sub by with more specific REGEXes per type
# e.g. roomId, eventId, userId
return re.sub('\{[a-zA-Z]+\}', '[a-zA-Z!\.:-@#]+', s)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

This is bad, requests, or some other library should provide a way to directly assert whether a request matches e.g. /room_id/{roomId} I haven't really looked into it, but regexing is not the preferred way for sure.

from responses import RequestsMock

INTERPOLATIONS = [
("%CLIENT_MAJOR_VERSION%", "r0")

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

As discussed the spec only lists %CLIENT_MAJOR_VERSION% for all it's docs, potentially this is fail-prone where api/v1 and api/v2 actually differ in Synapse, probably needs to have an issue opened on matrix-doc.

@Half-Shot
Half-Shot self-requested a review May 5, 2017 07:54
Comment thread.gitmodules
@@ -0,0 +1,3 @@
[submodule "matrix-doc"]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I don't think a git submodule is the right way to approach including the documentation for testing, but I don't know what the "right way" is off the top of my head.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

What don't you like about sub-moduling?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

It makes it fairly easy for someone developing to run tests but quite difficult if you've just installed a release version and want to run the tests.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

submodules are not fetched automatically you need to ask git to do that, so if you haven't pull matrix-doc it just runs tests without providing you with spec-coverage.

On the other-hand if we move towards using the matrix-doc to also create / respond to mock requests (we don't currently) than indeed you would need matrix-doc to run tests.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@pik@matrixbot@non-Jedi
, '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); } })(); })(); Spec Coverage via. matrix-doc in pytest by pik · Pull Request #125 · matrix-org/matrix-python-sdk · GitHub
Skip to content

Spec Coverage via. matrix-doc in pytest - #125

Open
pik wants to merge 7 commits into
matrix-org:masterfrom
pik:spec-coverage
Open

Spec Coverage via. matrix-doc in pytest#125
pik wants to merge 7 commits into
matrix-org:masterfrom
pik:spec-coverage

Conversation

@pik

@pikpik commented May 3, 2017

Copy link
Copy Markdown
Contributor

Runs with the usual pytest test - if matrix-doc submodule is pulled it will attempt to generate coverage stats by parsing the API spec. Requests to paths / methods not provided for in Matrix doc will result in error messages: this currently doesn't supercede testing with mocks but it will raise errors if the mocking does not correspond to spec'd API endpoints (this can be improved later to auto-mock).

@matrixbot

Copy link
Copy Markdown
Member

Can one of the admins verify this patch?

MISSING_ENDPOINT = "Not a valid API Endpoint: "
MISSING_METHOD = "Not a valid API Method: "

class ApiGuide:

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Not a fan of this class-name - but I'd prefer not to have something very long like MatrixApiCoverageStatGatherer, though maybe that's better than this?

def endpoint_to_regex(s):
# TODO sub by with more specific REGEXes per type
# e.g. roomId, eventId, userId
return re.sub('\{[a-zA-Z]+\}', '[a-zA-Z!\.:-@#]+', s)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

This is bad, requests, or some other library should provide a way to directly assert whether a request matches e.g. /room_id/{roomId} I haven't really looked into it, but regexing is not the preferred way for sure.

from responses import RequestsMock

INTERPOLATIONS = [
("%CLIENT_MAJOR_VERSION%", "r0")

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

As discussed the spec only lists %CLIENT_MAJOR_VERSION% for all it's docs, potentially this is fail-prone where api/v1 and api/v2 actually differ in Synapse, probably needs to have an issue opened on matrix-doc.

@Half-Shot
Half-Shot self-requested a review May 5, 2017 07:54
Comment thread.gitmodules
@@ -0,0 +1,3 @@
[submodule "matrix-doc"]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I don't think a git submodule is the right way to approach including the documentation for testing, but I don't know what the "right way" is off the top of my head.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

What don't you like about sub-moduling?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

It makes it fairly easy for someone developing to run tests but quite difficult if you've just installed a release version and want to run the tests.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

submodules are not fetched automatically you need to ask git to do that, so if you haven't pull matrix-doc it just runs tests without providing you with spec-coverage.

On the other-hand if we move towards using the matrix-doc to also create / respond to mock requests (we don't currently) than indeed you would need matrix-doc to run tests.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@pik@matrixbot@non-Jedi