Added sort test and switch to chai expect

This commit is contained in:
Unmesh Gundecha
2021-02-21 13:54:08 +08:00
parent 0c8c1c8253
commit eaf9286b67
4 changed files with 89 additions and 59 deletions

105
README.md
View File

@@ -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 isnt 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 isnt 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
View File

@@ -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",

View File

@@ -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": {}
}

View File

@@ -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);
});
});