0.0.5 • Published 9 months ago

@theblindsquirrel/toffeenut v0.0.5

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

Toffeenut

Toffeenut Develop Status Toffeenut Release Status

Design Psychology

Toffeenut is intended to be a library of fitness functions. It is not intended to be framework, like Jasmine, that allows you create your tests. Toffeenut instead contains a set of predefined tests that you run against your code base. Each test can be enabled or disabled to suite your preferences and the coding standards of your team. Depending on how many tests are have enabled and the size of your code base, it is not recommended to run Toffeenut on every check-in. Instead the recommendation is to run the suite as part of your MR/PR process.

Installation

Toffeenut is available as an npm package. To install simply enter

npm i @theblindsquirrel/toffeenut

Setup

After installing toffeenut you'll need to run init once. Make sure you run init at the same level as package.json and any other configs you have in your project (ie eslist.json, ionic.config.json, tsconfig.config.json).

npx toffeenut init

Init will create a toffeenut.config.json file.

Running Tests

Toffeenut Config

Each test has a section in the toffeenut.config.json. One common property that all tests have is an enabled field. If enabled is not present or set to true then the test will be executed when toffeenut runs. To disable a test set enabled to false.

{
    ...
    "checkPackageJson": {
        "enabled": false
    }
    ...
}

If any section is omitted or removed from the config that test will not be run.

Check Package JSON

since 0.0.1

This test goes through the package.json file (assumed to be at the same level as toffeenut.config.json) and checks the dependencies and devDepencies to make sure that all versions are pinned, no special version characters (^, ~, etc). Packages that are pinned using = will pass. Below are the allowed config values for Check Package Json test.

Config NameDefault ValueDescriptionRequired
enabledtrueIf the test should be runfalse

since 0.0.2 Config Name | Default Value | Description | Required :---------: | :-----------: | :---------: | :--: allowGithub | true | If true any packages installed directly from a git server will be allowed. If false any git links will be marked as invalid and the test will fail. | false

since 0.0.4 Config Name | Default Value | Description | Required :---------: | :-----------: | :---------: | :--: requireGitCommit | false | This test will only run if allowGithub flag is also true. If true all packages installed from git must be pinned to a specific commit. | false packagePath | ./package.json | The location of the package.json file to test. | true

Single Export

since 0.0.2

This test goes through every ts file and makes sure each files only has a single export.

Config NameDefault ValueDescriptionRequired
enabledtrueIf the test should be runfalse
rootPath''The root folder to search through for all ts filestrue

Plugin Only Called Once

0.0.5

This test will search through all ts files under the supplied root folder making sure that each plugin is only found in a single file.

Config NameDefault ValueDescriptionRequired
rootPath''The top level directory that contains all the ts files to checktrue
enabledtrueIf the test should be runfalse
pluginsArray[]Array of plugin names to look for, in addiiton to the official Capacitor plugins. This list contains all the plugins that Toffeenut will check by default.false

File Referenced Outside Folder

since TDB

This test looks for references to files outside of their parent folder. The intention of this test is to find things that may need to be split out into a shared service.

Config NameDefault ValueDescriptionRequired
enabledtrueIf the test should be runfalse
rootPath''The root folder to search through for all ts/jstrue
treatAsWarningfalseIf true this test will only print a warning for each outside folder reference found.false

Interface Implemented

since TDB

This test looks to see if interfaces are implemented in any other class

Limit Hex Colors

since 0.0.2

This test checks that colors are defined only in a single file. It uses a regex to check for hex colors and rgba defined colors in scss files.

Config NameDefault ValueDescriptionRequired
enabledtrueIf the test should be runfalse
colorsFilePath''The path to the file that contains all of the color variablestrue
checkForRGBAtrueIf true this test will also check if rgb/rgba colors are defined anywhere other than the colors filefalse
ignoreFiles[]An array of files and directories that should be ignored. Set this if you import a theme or 3rd party library that you do not want to be checked.false
rootPath''All the files under this path will be checked. It can be either a theme folder or the root/src folder when you want to check all the scss files & html files.true
checkHTMLtrueIf true all html & htm files will be checked for hex colors and also rgba colors when that test is enabled.false

No !Import in styles

since TBD

This test will fail if there are any !important styles in your styles. Config Name | Default Value | Description | Required :---------: | :-----------: | :---------: | :--: enabled | true | If the test should be run | false ignoreFilePath | '' | All files under this path will be ignored. Set this if you import a theme or 3rd party library that you do not want to be checked. | false

Import Statement Tests

since TBD

These tests will prevent src/app or require src/app in the import statements.

Duplicate String Test

since TBD

This test scans the code base for strings of the minimum length that are duplicates of each other. Intention is to find strings that could be extracted into a resource file or duplicate HTTP calls that can be shared.

Disallow Style in HTML

since TDB

This test is to prevent the style tag from being used in any html/htm file.

Treat Errors as Warnings

since TDB

This is a global setting that if true the build will not fail due to failing toffeenut tests.

Duplicate Name

since TDB

Checks if there are multiple files with the same name in different folders.

0.0.5

9 months ago

0.0.3

11 months ago

0.0.4

11 months ago

0.0.2

12 months ago