Merge pull request #483 from reagent-project/feature/codecov

Feature/codecov
This commit is contained in:
Juho Teperi 2020-03-22 15:46:15 +02:00 committed by GitHub
commit 0e1e4179ec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 967 additions and 1947 deletions

1
.gitignore vendored
View File

@ -15,3 +15,4 @@ reagent.iml
node_modules node_modules
junit junit
.shadow-cljs .shadow-cljs
coverage/

View File

@ -1,7 +1,10 @@
<img src="logo/logo-text.png" width="264px" alt="Reagent">
# Reagent [![CircleCI](https://circleci.com/gh/reagent-project/reagent.svg?style=svg)](https://circleci.com/gh/reagent-project/reagent)
[![Clojars Project](https://img.shields.io/clojars/v/clj-kondo.svg)](https://clojars.org/clj-kondo)
![Reagent-Project](logo.png) [![codecov](https://codecov.io/gh/reagent-project/reagent/branch/master/graph/badge.svg)](https://codecov.io/gh/reagent-project/reagent)
[![cljdoc badge](https://cljdoc.org/badge/reagent/reagent)](https://cljdoc.org/d/reagent/reagent/CURRENT)
[![project chat](https://img.shields.io/badge/slack-join_chat-brightgreen.svg)](https://clojurians.slack.com/archives/C0620C0C8)
A simple [ClojureScript](http://github.com/clojure/clojurescript) interface to [React](http://facebook.github.io/react/). A simple [ClojureScript](http://github.com/clojure/clojurescript) interface to [React](http://facebook.github.io/react/).
@ -17,10 +20,8 @@ Reagent provides a way to write efficient React components using (almost) nothin
* **[#reagent](https://clojurians.slack.com/messages/reagent/)** channel in [Clojure Slack](http://clojurians.net/) * **[#reagent](https://clojurians.slack.com/messages/reagent/)** channel in [Clojure Slack](http://clojurians.net/)
* **[Reagent Project Mailing List](https://groups.google.com/forum/#!forum/reagent-project)** * **[Reagent Project Mailing List](https://groups.google.com/forum/#!forum/reagent-project)**
* **Commercial video material** * **Commercial video material**
* [Learn Reagent Free](https://www.jacekschae.com/learn-reagent-free/tycit?coupon=REAGENT) * [Learn Reagent Free](https://www.jacekschae.com/learn-reagent-free/tycit?coupon=REAGENT), [Learn Reagent Pro](https://www.jacekschae.com/learn-reagent-pro/tycit?coupon=REAGENT) (Affiliate link, $30 discount)
* [Learn Reagent Pro](https://www.jacekschae.com/learn-reagent-pro/tycit?coupon=REAGENT) (Affiliate link, $30 discount) * [Learn Re-frame Free](https://www.jacekschae.com/learn-re-frame-free/tycit?coupon=REAGENT), [Learn Re-frame Pro](https://www.jacekschae.com/learn-re-frame-pro/tycit?coupon=REAGENT) (Affiliate link, $30 discount)
* [Learn Re-frame Free](https://www.jacekschae.com/learn-re-frame-free/tycit?coupon=REAGENT)
* [Learn Re-frame Pro](https://www.jacekschae.com/learn-re-frame-pro/tycit?coupon=REAGENT) (Affiliate link, $30 discount)
* [purelyfunctional.tv ](https://purelyfunctional.tv/guide/reagent/) * [purelyfunctional.tv ](https://purelyfunctional.tv/guide/reagent/)
* [Lambda Island Videos](https://lambdaisland.com/collections/react-reagent-re-frame) * [Lambda Island Videos](https://lambdaisland.com/collections/react-reagent-re-frame)
@ -39,7 +40,6 @@ This will setup a new Reagent project with some reasonable defaults, see here fo
To use Reagent in an existing project you add this to your dependencies in `project.clj`: To use Reagent in an existing project you add this to your dependencies in `project.clj`:
[![Clojars Project](http://clojars.org/reagent/latest-version.svg)](http://clojars.org/reagent) <br> [![Clojars Project](http://clojars.org/reagent/latest-version.svg)](http://clojars.org/reagent) <br>
[![CircleCI](https://circleci.com/gh/reagent-project/reagent.svg?style=svg)](https://circleci.com/gh/reagent-project/reagent)
This is all you need to do if you want the standard version of React. If you want to use your own build of React (or React from a CDN), you have to use `:exclusions` variant of the dependency, and also provide `react` and `react-dom` namespaces (by creating `.cljs` files with just `ns` form, or by adding your own `:foreign-libs` entries). This is all you need to do if you want the standard version of React. If you want to use your own build of React (or React from a CDN), you have to use `:exclusions` variant of the dependency, and also provide `react` and `react-dom` namespaces (by creating `.cljs` files with just `ns` form, or by adding your own `:foreign-libs` entries).
@ -164,9 +164,9 @@ The ClojureScript overhead is kept down, thanks to lots of caching.
Code size is a little bigger than React.js, but still quite small. The todomvc example clocks in at roughly 79K gzipped, using advanced compilation. Code size is a little bigger than React.js, but still quite small. The todomvc example clocks in at roughly 79K gzipped, using advanced compilation.
## About ## About
The idea and some of the code for making components atom-like comes from [pump](https://github.com/piranha/pump). The reactive-atom idea (and some code) comes from [reflex](https://github.com/lynaghk/reflex). The idea and some of the code for making components atom-like comes from [pump](https://github.com/piranha/pump).
The reactive-atom idea (and some code) comes from [reflex](https://github.com/lynaghk/reflex).
The license is MIT. The license is MIT.

View File

@ -23,6 +23,9 @@ jobs:
paths: paths:
- node_modules - node_modules
key: reagent-npm-{{ checksum "package.json" }} key: reagent-npm-{{ checksum "package.json" }}
- store_artifacts:
path: coverage
- run: bash <(curl -s https://codecov.io/bash)
environment: environment:
NPM_CONFIG_LOGLEVEL: warn NPM_CONFIG_LOGLEVEL: warn

BIN
logo/logo-text.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

109
logo/logo-text.svg Normal file
View File

@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="264"
height="64"
version="1.1"
id="svg14"
sodipodi:docname="logo-text.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
inkscape:export-filename="/home/juho/Source/reagent/logo-text.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<metadata
id="metadata20">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs18" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2040"
inkscape:window-height="1574"
id="namedview16"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="2.6074563"
inkscape:cx="88.773946"
inkscape:cy="-26.258751"
inkscape:window-x="565"
inkscape:window-y="304"
inkscape:window-maximized="0"
inkscape:current-layer="svg14">
<sodipodi:guide
position="64,18.983051"
orientation="1,0"
id="guide4546"
inkscape:locked="false" />
<sodipodi:guide
position="96,57.898305"
orientation="1,0"
id="guide4548"
inkscape:locked="false"
inkscape:label=""
inkscape:color="rgb(0,0,255)" />
</sodipodi:namedview>
<path
d="M 5.375,5.375 H 58.624 V 58.624 H 5.375 Z"
id="path2"
inkscape:connector-curvature="0"
style="stroke:#000000;stroke-width:10.7510004;stroke-linejoin:round;paint-order:markers fill stroke" />
<path
d="m 16.734,59.233 h 30.532 c 1.857,0 3.134,-0.5 3.714,-1.4 0.58,-1 0.465,-2.1 -0.58,-3.5 l -13.35,-18.1 v -9.1 h 1.741 c 0.465,0 0.813,-0.1 1.161,-0.4 0.348,-0.3 0.464,-0.6 0.464,-1 0,-0.4 -0.116,-0.7 -0.464,-1 -0.348,-0.3 -0.696,-0.4 -1.16,-0.4 H 25.208 c -0.465,0 -0.813,0.1 -1.161,0.4 -0.348,0.3 -0.464,0.6 -0.464,1 0,0.4 0.116,0.7 0.464,1 0.348,0.3 0.696,0.4 1.16,0.4 h 1.742 v 9.1 l -13.35,18.1 c -1.045,1.4 -1.16,2.5 -0.58,3.5 0.696,0.9 1.973,1.4 3.714,1.4 z m 13.118,-21.5 0.58,-0.7 v -9.9 H 33.8 v 9.9 l 0.58,0.7 13.467,18.6 H 16.502 Z"
id="path4"
inkscape:connector-curvature="0"
style="fill:#303c3c" />
<path
d="m 35.889,42.633 h -7.778 l -9.055,12.6 H 45.06 Z"
id="path6"
inkscape:connector-curvature="0"
style="fill:#00d8ff" />
<path
d="m 32.5576,19.876749 a 2.8749338,2.808662 0 1 1 -5.749303,0 2.8749338,2.808662 0 1 1 5.749303,0 z"
id="path8"
inkscape:connector-curvature="0"
style="fill:#00d8ff;stroke:#00d8ff;stroke-width:0.55827206" />
<path
d="m 37.217,12.657 a 2.325,2.325 0 1 1 -4.65,0 2.325,2.325 0 1 1 4.65,0 z"
id="path10"
inkscape:connector-curvature="0"
style="fill:#00d8ff;stroke:#00d8ff;stroke-width:0.45699999" />
<path
d="m 31.676,6.053 a 1.1705,1.1705 0 1 0 -2.341,0 1.1705,1.1705 0 1 0 2.341,0 z"
id="path12"
inkscape:connector-curvature="0"
style="fill:#00d8ff;stroke:#00d8ff;stroke-width:0.23" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:Lato;-inkscape-font-specification:Lato;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="92.580002"
y="42.77"
id="text4544"><tspan
sodipodi:role="line"
id="tspan4542"
x="92.580002"
y="42.77"
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-family:Lato;-inkscape-font-specification:'Lato Semi-Bold'">Reagent</tspan></text>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

2745
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -11,10 +11,12 @@
}, },
"devDependencies": { "devDependencies": {
"gzip-size-cli": "3.0.0", "gzip-size-cli": "3.0.0",
"karma": "3.1.1", "karma": "4.4.1",
"karma-chrome-launcher": "2.2.0", "karma-chrome-launcher": "3.1.0",
"karma-cljs-test": "0.1.0", "karma-cljs-test": "0.1.0",
"karma-junit-reporter": "1.2.0", "karma-coverage": "https://github.com/karma-runner/karma-coverage.git#55aeead0934a39efbd9db0b575d416ab44cd8a12",
"karma-junit-reporter": "2.0.1",
"karma-sourcemap-loader": "^0.3.7",
"md5-file": "4.0.0", "md5-file": "4.0.0",
"shadow-cljs": "2.8.83" "shadow-cljs": "2.8.83"
} }

View File

@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
set -ex set -ex
rm -rf target/cljsbuild/test/ rm -rf target/cljsbuild/test/
lein doo chrome-headless test once COVERAGE=1 lein doo chrome-headless test once
test -f target/cljsbuild/test/out/cljsjs/react/development/react.inc.js test -f target/cljsbuild/test/out/cljsjs/react/development/react.inc.js

View File

@ -24,5 +24,23 @@ module.exports = function(config) {
useBrowserName: false // add browser name to report and classes names useBrowserName: false // add browser name to report and classes names
}; };
if (process.env.COVERAGE) {
configData.reporters = ['dots', 'junit', 'coverage'];
configData.preprocessors = {
'target/cljsbuild/test/out/reagent/**/!(*_test).js': ['sourcemap', 'coverage'],
};
configData.coverageReporter = {
reporters: [
{type: 'html'},
{type: 'lcovonly'},
],
dir: 'coverage',
subdir: '.',
includeAllSources: true,
};
}
config.set(configData); config.set(configData);
}; };