* add test suite to formalise existing behaviour of shippable service
* throw more descriprive errors, use es6 declarations
* switch from SVG parsing to shippable API
* add test case for unexpected status code
* remove unused import
* link to source for status codes
* Show logos on social badges
* Revert "Showcase logos in social badges on the front page"
This reverts commit 61fa22b7e4.
* Update footer badges to all be social style
as per reverted commit 61fa22b7e4
Rather than depend on Shields production, use the GitHub auth info from CI. It's disorienting to have our own CI go down when production is down. It also makes it harder to review PRs when there are ops issues.
* [FIX] error colorscheme
* throw error if jsonpath query non existent
* fixup
* show brightgreen badge by default
* update test
* let -> var
* set lightgrey when no uri specified
* update tests
* red color for no uri specified
* dynamic badge use setBadgecolor()
* add tests for ruby gems version badge
* add tests for ruby gems users badge
* add tests for ruby gems rank badge
* add tests for ruby gems downloads badges
* don't allow 0th rank
* move version info to left side of badge
* fix: update nodejs version to latest LTS, to fullfill check-node-version. close#1437
* docs: add docker run example without shields.env file, because there is no such file in a repo and container wont start
* fix: docker build project, clean npm and run production mode. close#1373
For #1359
This failure from https://circleci.com/gh/badges/shields/1411?utm_campaign=vcs-integration-link&utm_medium=referral&utm_source=github-build-link
```
26) Uptime Robot
Uptime Robot: Percentage (valid)
[ GET http://localhost:1111/uptimerobot/ratio/m778918918-3e92c097147760ee39d02d36.json ]:
ValidationError: child "value" fails because ["value" with value "99.992%" fails to match the required pattern: /^[0-9]+%$/]
at Object.exports.process (node_modules/joi/lib/errors.js:190:19)
at internals.Object._validateWithOptions (node_modules/joi/lib/types/any/index.js:669:31)
at module.exports.internals.Any.root.validate (node_modules/joi/lib/index.js:139:23)
at Object.pathMatch.matchJSONTypes (node_modules/icedfrisby/lib/pathMatch.js:303:9)
at node_modules/icedfrisby/lib/icedfrisby.js:703:10
at IcedFrisbyNock._invokeExpects (node_modules/icedfrisby/lib/icedfrisby.js:1294:33)
at start (node_modules/icedfrisby/lib/icedfrisby.js:1274:12)
at Request.runCallback [as _callback] (node_modules/icedfrisby/lib/icedfrisby.js:1232:16)
at Request.self.callback (node_modules/request/request.js:186:22)
at Request.<anonymous> (node_modules/request/request.js:1163:10)
at IncomingMessage.<anonymous> (node_modules/request/request.js:1085:12)
at endReadableNT (_stream_readable.js:1056:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickDomainCallback (internal/process/next_tick.js:218:9)
27) Uptime Robot
Uptime Robot: Percentage (valid, with numberOfDays param)
[ GET http://localhost:1111/uptimerobot/ratio/7/m778918918-3e92c097147760ee39d02d36.json ]:
ValidationError: child "value" fails because ["value" with value "99.967%" fails to match the required pattern: /^[0-9]+%$/]
at Object.exports.process (node_modules/joi/lib/errors.js:190:19)
at internals.Object._validateWithOptions (node_modules/joi/lib/types/any/index.js:669:31)
at module.exports.internals.Any.root.validate (node_modules/joi/lib/index.js:139:23)
at Object.pathMatch.matchJSONTypes (node_modules/icedfrisby/lib/pathMatch.js:303:9)
at node_modules/icedfrisby/lib/icedfrisby.js:703:10
at IcedFrisbyNock._invokeExpects (node_modules/icedfrisby/lib/icedfrisby.js:1294:33)
at start (node_modules/icedfrisby/lib/icedfrisby.js:1274:12)
at Request.runCallback [as _callback] (node_modules/icedfrisby/lib/icedfrisby.js:1232:16)
at Request.self.callback (node_modules/request/request.js:186:22)
at Request.<anonymous> (node_modules/request/request.js:1163:10)
at IncomingMessage.<anonymous> (node_modules/request/request.js:1085:12)
at endReadableNT (_stream_readable.js:1056:12)
at _combinedTickCallback (internal/process/next_tick.js:138:11)
at process._tickDomainCallback (internal/process/next_tick.js:218:9)
```
To fix service test that fails in CI (due to no github auth) https://github.com/badges/shields/issues/1359#issuecomment-354184074
- DRY getPhpReleases()
- Pass named options to regularUpdate
- Add json option
- php-version: Move helpers before functions, and move exports to end
- Avoid mutating the inputs
- Declare all the input and output keys
- Avoid recomputing escapeXml on the same values
- Capitalize social badge labels before measuring
* twitter | add error text
inaccessable = 404 etc
invalid user = no data returned from endpoint
invalid = error thrown
* Twitter add tests
* add test for twitter url badge
Ref: #1379
This takes a naive approach to font-width computation, the most compute-intensive part of rendering badges.
1. Add the widths of the individual characters.
- These widths are measured on startup using PDFKit.
2. For each character pair, add a kerning adjustment
- The difference between the width of each character pair, and the sum of the characters' separate widths.
- These are computed for each character pair on startup using PDFKit.
3. For a string with characters outside the printable ASCII character set, fall back to PDFKit.
This branch averaged 0.041 ms in `makeBadge`, compared to 0.144 ms on master, a speedup of 73%. That was on a test of 10,000 consecutive requests (using the `benchmark-performance.sh` script, now checked in).
The speedup applies to badges containing exclusively printable ASCII characters. It wouldn't be as dramatic on non-ASCII text. Though, we could add some frequently used non-ASCII characters to the cached set.
Add a class which applies display: none to badges we don’t want to see. This is accomplished by passing a `shouldDisplay` function along with each badge, which pulls the current query through a closure and applies it.
A bit roundabout, but it works.
The rest of the changes are refactors to avoid code duplication.
I decreased the debouce rate to 50, which seems to work well.
Fix#1314
I have a branch going to automatically generate stats on which services have tests, and make a line chart over time. I'm having a lot of fun with that so I'll keep at it.
Meanwhile, here is my subjective list of critical services, for #1358.