mirror of
https://github.com/status-im/sourcecred.git
synced 2025-01-21 01:49:38 +00:00
0f038305a2
Resolves #1067 Adds the CLI commands: `sourcecred clear --all` -- removes the $SOURCECRED_DIRECTORY `sourcecred clear --cache` -- removes the cache directory `sourcecred clear --help` -- provides usage info `sourcecred clear` -- prompts the user to be more specific Test plan: The unit tests ensure that the command is properly wired into the sourcecred CLI, including help text integration. However, just to be safe, we can start by verifying that calling `sourcecred` without arguments lists the `clear` command as a valid option, and that calling `sourcecred help clear` prints help information. (Note: it's necessary to run `yarn backend` before testing these changes) The unit tests also ensure that the command removes the proper directories, so there isn't really a need to manually test it, although the reviewer may choose to do so to be safe. Although out of scope for unit tests on this function, we can also do integration tests, to make sure that running the clear command doesn't leave the sourcecred directory in an invalid state from the perspective of the `load` command. ```js $ yarn backend; $ node bin/sourcecred.js load sourcecred/example-github; $ node bin/sourcecred.js clear --cache; $ node bin/sourcecred.js load sourcecred/example-github; $ node bin/sourcecred.js clear --all; $ node bin/sourcecred.js load sourcecred/example-github; ``` The expected behavior of the above command block is that the load command never fails or throws an error. @decentralion and I discussed the scenario where `rimraf` errors. We decided that testing this scenario wasn't necessary, because `rimraf` doesn't error if a directory doesn't exist, and rimraf's maintainer suggests [monkey-patching the fs module] to get rimraf to error in testing scenarios. Thanks @decentralion for reviewing and pair-programming this with me. [monkey-patching the fs module]: https://github.com/isaacs/rimraf/issues/31#issuecomment-29534796
126 lines
3.7 KiB
JSON
126 lines
3.7 KiB
JSON
{
|
|
"name": "sourcecred",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"dependencies": {
|
|
"aphrodite": "^2.1.0",
|
|
"better-sqlite3": "wchargin/better-sqlite3#wchargin-private-inmemory-db",
|
|
"chalk": "1.1.3",
|
|
"commonmark": "^0.28.1",
|
|
"express": "^4.16.3",
|
|
"fs-extra": "3.0.1",
|
|
"history": "^3.0.0",
|
|
"isomorphic-fetch": "^2.2.1",
|
|
"json-stable-stringify": "^1.0.1",
|
|
"lodash.clonedeep": "^4.5.0",
|
|
"lodash.isequal": "^4.5.0",
|
|
"lodash.sortby": "^4.7.0",
|
|
"mkdirp": "^0.5.1",
|
|
"object-assign": "4.1.1",
|
|
"pako": "^1.0.6",
|
|
"promise": "8.0.1",
|
|
"react": "^16.4.1",
|
|
"react-dom": "^16.4.1",
|
|
"react-router": "3.2.1",
|
|
"retry": "^0.12.0",
|
|
"svg-react-loader": "^0.4.6",
|
|
"rimraf": "^2.6.3",
|
|
"tmp": "^0.0.33",
|
|
"whatwg-fetch": "2.0.3"
|
|
},
|
|
"devDependencies": {
|
|
"babel-core": "6.26.0",
|
|
"babel-eslint": "7.2.3",
|
|
"babel-jest": "20.0.3",
|
|
"babel-loader": "7.1.2",
|
|
"babel-plugin-transform-es2015-for-of": "^6.23.0",
|
|
"babel-preset-react-app": "^3.1.1",
|
|
"babel-runtime": "6.26.0",
|
|
"copy-webpack-plugin": "^4.5.2",
|
|
"css-loader": "0.28.7",
|
|
"dotenv": "4.0.0",
|
|
"dotenv-expand": "4.0.1",
|
|
"enzyme": "^3.3.0",
|
|
"enzyme-adapter-react-16": "^1.1.1",
|
|
"enzyme-to-json": "^3.3.3",
|
|
"eslint": "4.10.0",
|
|
"eslint-config-react-app": "^2.1.0",
|
|
"eslint-plugin-flowtype": "2.50.0",
|
|
"eslint-plugin-import": "2.8.0",
|
|
"eslint-plugin-jsx-a11y": "5.1.1",
|
|
"eslint-plugin-react": "7.4.0",
|
|
"file-loader": "1.1.5",
|
|
"flow-bin": "^0.86.0",
|
|
"jest": "^23.6.0",
|
|
"jest-fetch-mock": "^1.6.5",
|
|
"prettier": "^1.13.4",
|
|
"raf": "3.4.0",
|
|
"react-dev-utils": "^5.0.0",
|
|
"static-site-generator-webpack-plugin": "^3.4.1",
|
|
"url-loader": "0.6.2",
|
|
"webpack": "3.8.1",
|
|
"webpack-dev-server": "2.9.4",
|
|
"webpack-manifest-plugin": "1.3.2",
|
|
"webpack-node-externals": "^1.7.2"
|
|
},
|
|
"scripts": {
|
|
"prettify": "prettier --write '**/*.js'",
|
|
"check-pretty": "prettier --list-different '**/*.js'",
|
|
"start": "NODE_ENV=development webpack-dev-server --config config/webpack.config.web.js",
|
|
"build": "NODE_ENV=production webpack --config config/webpack.config.web.js",
|
|
"backend": "NODE_ENV=development webpack --config config/webpack.config.backend.js",
|
|
"test": "node ./config/test.js",
|
|
"unit": "BABEL_ENV=test NODE_ENV=test jest --env=jsdom",
|
|
"sharness": "make -sC ./sharness prove PROVE_OPTS=-f TEST_OPTS='--chain-lint'",
|
|
"sharness-full": "make -sC ./sharness prove PROVE_OPTS=-vf TEST_OPTS='-v --chain-lint --long'",
|
|
"coverage": "yarn run unit --coverage",
|
|
"flow": "flow",
|
|
"lint": "eslint src config --max-warnings 0"
|
|
},
|
|
"license": "MIT + Apache-2",
|
|
"jest": {
|
|
"collectCoverageFrom": [
|
|
"src/**/*.{js,jsx,mjs}"
|
|
],
|
|
"setupFiles": [
|
|
"<rootDir>/config/polyfills.js",
|
|
"<rootDir>/config/jest/setupJest.js"
|
|
],
|
|
"testMatch": [
|
|
"<rootDir>/src/**/__tests__/**/*.{js,jsx,mjs}",
|
|
"<rootDir>/src/**/?(*.)(spec|test).{js,jsx,mjs}"
|
|
],
|
|
"testEnvironment": "node",
|
|
"testURL": "http://localhost",
|
|
"transform": {
|
|
"^.+\\.(js|jsx|mjs)$": "<rootDir>/node_modules/babel-jest",
|
|
"^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
|
|
"^(?!.*\\.(js|jsx|mjs|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
|
|
},
|
|
"transformIgnorePatterns": [
|
|
"[/\\\\]node_modules[/\\\\].+\\.(js|jsx|mjs)$"
|
|
],
|
|
"moduleNameMapper": {
|
|
"^react-native$": "react-native-web"
|
|
},
|
|
"moduleFileExtensions": [
|
|
"web.js",
|
|
"mjs",
|
|
"js",
|
|
"json",
|
|
"web.jsx",
|
|
"jsx",
|
|
"node"
|
|
]
|
|
},
|
|
"babel": {
|
|
"presets": [
|
|
"./config/babel"
|
|
]
|
|
},
|
|
"files": [
|
|
"/bin",
|
|
"/build"
|
|
]
|
|
}
|