mirror of
https://github.com/upgundecha/howtheysre
synced 2026-01-02 23:38:01 +00:00
Added sort test and switch to chai expect
This commit is contained in:
105
README.md
105
README.md
@@ -224,28 +224,6 @@ _Note to readers: This list refers to some of the articles, posts, videos, tools
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Facebook</summary>
|
||||
|
||||
### Videos
|
||||
|
||||
* [A Customer Service Approach to SRE](https://www.usenix.org/conference/srecon19emea/presentation/looney)
|
||||
* [How (Not) to Scale a Project: A Post-Mortem](https://www.usenix.org/conference/srecon19asia/presentation/bagnoli)
|
||||
* [Releasing the World's Largest Python Site Every 7 Minutes](https://www.usenix.org/conference/srecon19asia/presentation/wong-shuhong)
|
||||
* [Using ML to Automate Dynamic Error Categorization](https://www.usenix.org/conference/srecon19asia/presentation/davoli)
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Fastly</summary>
|
||||
|
||||
### Videos
|
||||
|
||||
* [SRE & Product Management: How to Level up Your Team (and Career!) by Thinking like a Product Manager](https://www.usenix.org/conference/srecon19americas/presentation/wohlner)
|
||||
* [Resilience Engineering Mythbusting](https://www.usenix.org/conference/srecon19americas/presentation/gallego)
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>eBay</summary>
|
||||
|
||||
@@ -291,6 +269,28 @@ _Note to readers: This list refers to some of the articles, posts, videos, tools
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Facebook</summary>
|
||||
|
||||
### Videos
|
||||
|
||||
* [A Customer Service Approach to SRE](https://www.usenix.org/conference/srecon19emea/presentation/looney)
|
||||
* [How (Not) to Scale a Project: A Post-Mortem](https://www.usenix.org/conference/srecon19asia/presentation/bagnoli)
|
||||
* [Releasing the World's Largest Python Site Every 7 Minutes](https://www.usenix.org/conference/srecon19asia/presentation/wong-shuhong)
|
||||
* [Using ML to Automate Dynamic Error Categorization](https://www.usenix.org/conference/srecon19asia/presentation/davoli)
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Fastly</summary>
|
||||
|
||||
### Videos
|
||||
|
||||
* [SRE & Product Management: How to Level up Your Team (and Career!) by Thinking like a Product Manager](https://www.usenix.org/conference/srecon19americas/presentation/wohlner)
|
||||
* [Resilience Engineering Mythbusting](https://www.usenix.org/conference/srecon19americas/presentation/gallego)
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>GitHub</summary>
|
||||
|
||||
@@ -360,6 +360,15 @@ _Note to readers: This list refers to some of the articles, posts, videos, tools
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Gojek</summary>
|
||||
|
||||
### Blog Posts
|
||||
|
||||
* [Why We Swear by the RCA](https://blog.gojekengineering.com/why-we-swear-by-the-rca-f535fd5abbcb)
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Google</summary>
|
||||
|
||||
@@ -408,15 +417,6 @@ _Note to readers: This list refers to some of the articles, posts, videos, tools
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Gojek</summary>
|
||||
|
||||
### Blog Posts
|
||||
|
||||
* [Why We Swear by the RCA](https://blog.gojekengineering.com/why-we-swear-by-the-rca-f535fd5abbcb)
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Grab</summary>
|
||||
|
||||
@@ -666,25 +666,6 @@ _Note to readers: This list refers to some of the articles, posts, videos, tools
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Slalom Build</summary>
|
||||
|
||||
### Blog Posts
|
||||
|
||||
* [Beginners Guide to DevOps: How to Make It into the Industry](https://medium.com/slalom-build/beginners-guid-to-devops-how-to-make-it-into-the-industry-c1652d59807)
|
||||
* [GitHub Actions: Beyond CI/CD](https://medium.com/slalom-build/github-actions-beyond-ci-cd-cb3ddc6abaa)
|
||||
* [Why isn’t all test automation run on the pipeline?](https://medium.com/slalom-build/why-isnt-all-test-automation-run-on-the-pipeline-b2c57afbdf5a)
|
||||
* [The Many Shapes of Site Reliability Engineering](https://medium.com/slalom-build/the-many-shapes-of-site-reliability-engineering-468359866517)
|
||||
* [How to build a secure by default Kubernetes cluster with a basic CI/CD pipeline on AWS](https://medium.com/slalom-build/how-to-build-a-secure-by-default-kubernetes-cluster-with-a-basic-ci-cd-pipeline-on-aws-ebfe0da1c7c9)
|
||||
* [Secret Management Architectures: Finding the balance between security and complexity](https://medium.com/slalom-build/secret-management-architectures-finding-the-balance-between-security-and-complexity-d857ceaa2300)
|
||||
* [Detecting Malicious Requests with Keras & Tensorflow](https://medium.com/slalom-build/detecting-malicious-requests-with-keras-tensorflow-5d5db06b4f28)
|
||||
* [The Lego Monolith — A Monolith Microservice Proof of Concept](https://medium.com/slalom-build/the-lego-monolith-a-monolith-microservice-proof-of-concept-a402ca1654e4)
|
||||
* [Managing Secrets Using Hashicorp Vault](https://medium.com/slalom-build/managing-secrets-using-hashicorp-vault-ed6b9e0375ac)
|
||||
* [Packaging Spring Boot Applications for Deployment on Kubernetes](https://medium.com/slalom-build/packaging-spring-boot-applications-for-deployment-on-kubernetes-5fb64bc65406)
|
||||
* [Immutable Infrastructure and Continuous Delivery in the Cloud](https://medium.com/slalom-build/immutable-infrastructure-and-continuous-delivery-in-the-cloud-56ee4b31b8d5)
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Scribd</summary>
|
||||
|
||||
@@ -733,6 +714,25 @@ _Note to readers: This list refers to some of the articles, posts, videos, tools
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Slalom Build</summary>
|
||||
|
||||
### Blog Posts
|
||||
|
||||
* [Beginners Guide to DevOps: How to Make It into the Industry](https://medium.com/slalom-build/beginners-guid-to-devops-how-to-make-it-into-the-industry-c1652d59807)
|
||||
* [GitHub Actions: Beyond CI/CD](https://medium.com/slalom-build/github-actions-beyond-ci-cd-cb3ddc6abaa)
|
||||
* [Why isn’t all test automation run on the pipeline?](https://medium.com/slalom-build/why-isnt-all-test-automation-run-on-the-pipeline-b2c57afbdf5a)
|
||||
* [The Many Shapes of Site Reliability Engineering](https://medium.com/slalom-build/the-many-shapes-of-site-reliability-engineering-468359866517)
|
||||
* [How to build a secure by default Kubernetes cluster with a basic CI/CD pipeline on AWS](https://medium.com/slalom-build/how-to-build-a-secure-by-default-kubernetes-cluster-with-a-basic-ci-cd-pipeline-on-aws-ebfe0da1c7c9)
|
||||
* [Secret Management Architectures: Finding the balance between security and complexity](https://medium.com/slalom-build/secret-management-architectures-finding-the-balance-between-security-and-complexity-d857ceaa2300)
|
||||
* [Detecting Malicious Requests with Keras & Tensorflow](https://medium.com/slalom-build/detecting-malicious-requests-with-keras-tensorflow-5d5db06b4f28)
|
||||
* [The Lego Monolith — A Monolith Microservice Proof of Concept](https://medium.com/slalom-build/the-lego-monolith-a-monolith-microservice-proof-of-concept-a402ca1654e4)
|
||||
* [Managing Secrets Using Hashicorp Vault](https://medium.com/slalom-build/managing-secrets-using-hashicorp-vault-ed6b9e0375ac)
|
||||
* [Packaging Spring Boot Applications for Deployment on Kubernetes](https://medium.com/slalom-build/packaging-spring-boot-applications-for-deployment-on-kubernetes-5fb64bc65406)
|
||||
* [Immutable Infrastructure and Continuous Delivery in the Cloud](https://medium.com/slalom-build/immutable-infrastructure-and-continuous-delivery-in-the-cloud-56ee4b31b8d5)
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Soundcloud</summary>
|
||||
|
||||
@@ -876,8 +876,7 @@ _Note to readers: This list refers to some of the articles, posts, videos, tools
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>SRECon Mix Playlist</summary>
|
||||
## SRECon Mix Playlist
|
||||
|
||||
### Videos
|
||||
|
||||
@@ -910,8 +909,6 @@ _Note to readers: This list refers to some of the articles, posts, videos, tools
|
||||
* [Yelp - What I Wish I Knew before Going On-Call](https://www.usenix.org/conference/srecon19emea/presentation/shu)
|
||||
* [Zendesk - Latency and Availability Error Budgets Done Right at Scale](https://www.usenix.org/conference/srecon20americas/presentation/moyer)
|
||||
|
||||
</details>
|
||||
|
||||
---
|
||||
|
||||
## Resources
|
||||
|
||||
12
package-lock.json
generated
12
package-lock.json
generated
@@ -110,6 +110,18 @@
|
||||
"type-detect": "^4.0.5"
|
||||
}
|
||||
},
|
||||
"chai-arrays": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/chai-arrays/-/chai-arrays-2.2.0.tgz",
|
||||
"integrity": "sha512-4awrdGI2EH8owJ9I58PXwG4N56/FiM8bsn4CVSNEgr4GKAM6Kq5JPVApUbhUBjDakbZNuRvV7quRSC38PWq/tg==",
|
||||
"dev": true
|
||||
},
|
||||
"chai-string": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/chai-string/-/chai-string-1.5.0.tgz",
|
||||
"integrity": "sha512-sydDC3S3pNAQMYwJrs6dQX0oBQ6KfIPuOZ78n7rocW0eJJlsHPh2t3kwW7xfwYA/1Bf6/arGtSUo16rxR2JFlw==",
|
||||
"dev": true
|
||||
},
|
||||
"chalk": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
|
||||
|
||||
@@ -17,6 +17,9 @@
|
||||
"homepage": "https://github.com/upgundecha/howtheysre#readme",
|
||||
"devDependencies": {
|
||||
"chai": "^4.3.0",
|
||||
"chai-arrays": "^2.2.0",
|
||||
"chai-string": "^1.5.0",
|
||||
"mocha": "^8.3.0"
|
||||
}
|
||||
},
|
||||
"dependencies": {}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,36 @@
|
||||
const fs = require('fs');
|
||||
const { assert } = require('chai');
|
||||
const chai = require('chai');
|
||||
|
||||
chai.use(require('chai-arrays'));
|
||||
chai.use(require('chai-string'));
|
||||
|
||||
var expect = chai.expect;
|
||||
|
||||
const srcMd = fs.readFileSync('README.md', 'utf8');
|
||||
|
||||
describe('Header', function() {
|
||||
it('Starts with #', function() {
|
||||
assert.isOk(srcMd.startsWith('# How they SRE'), 'Header is broken');
|
||||
expect(srcMd).to. startsWith('# How they SRE');
|
||||
});
|
||||
});
|
||||
|
||||
describe('Sections', function() {
|
||||
['Introduction', 'Organizations', 'Resources', 'Credits', 'Other How They... repos', 'Contribute', 'License'] .forEach(function (section) {
|
||||
['Introduction',
|
||||
'Organizations',
|
||||
'Resources',
|
||||
'Credits',
|
||||
'Other How They... repos',
|
||||
'Contribute',
|
||||
'License'].forEach(function (section) {
|
||||
it(`${section}`, function() {
|
||||
assert.isOk(srcMd.includes(`## ${section}`), `${section} section is missing`);
|
||||
expect(srcMd).to.contain(`## ${section}`);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('Order', function() {
|
||||
it('Organization list is sorted', function() {
|
||||
var list = srcMd.match(/(?<=<summary>)(.*?)(?=<\/summary>)/g);
|
||||
expect(list).to.be.sorted(Intl.Collator().compare);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user