/mapnik-swoop

Run tests of node-mapnik dependents against upcoming release

Primary LanguageJavaScriptBSD 2-Clause "Simplified" LicenseBSD-2-Clause

Test latest tags of node-mapnik dependents that track latest node-mapnik

https://www.npmjs.com/browse/depended/mapnik

Build Status

The goal of this repo is to ensure the upcoming node-mapnik release does not accidentally break any dependents. Or, if the upcoming node-mapnik version is known to contain breaking changes: then this repo offers one place to test all those changes have been adapted to before releasing.

Installing

npm install

Testing

npm test

Setup

Decide which node-mapnik version you want to test. By default package.json lists:

"mapnik" : "https://github.com/mapnik/node-mapnik/tarball/master"

This assumes that:

  • the upcoming node-mapnik release is what you want to test
  • it has been merged into master in preparation for release
  • binaries are published for it
  • you are here testing because you have not yet tagged or npm published the version

If dependencies need modified to work with latest mapnik you can:

  • create branches for each dependency needing updated
  • point mapnik-swoop at those branches
  • then re-run mapnik-swoop until everything is passing

Details

The install step above is unique: it installs each dependency from github and then, in a postinstall step recurses into each dependency directory to install their devDependencies. This is done so that we can actually run each dependencies tests.

The test step does two things:

  1. Runs a set of mocha tests which use a child process to run the tests of each dependency and collect the results. Test failures are reported at the bottom of the run, but the actual failure details are only visible in the stderr printed during the test runs.

  2. The tests also ensure no duplicate C++ modules are present after installing all dependents. This is important because duplicate Node C++ modules in a tree can cause bad behavior or crashes. The idea is that if a C++ module is declared at the "top level" by mapnik-swoop (inside the package.json at the root of this directory) then it should no longer be installed in the node_modules of any dependencies. If it is then you'll end up with duplicate tests failing and you'll need to resolve these by tweaking downstream dependencies to accept the upcoming node-mapnik version as valid.

Build status deps

This is here to provide a quick view of any modules who might have failing tests before any node-mapnik upgrade so that they can be excluded from mapnik-swoop or at least fixed before starting to test a new node-mapnik version.

  • node-mapnik - Build Status | Dependencies
  • mapnik-reference - Build Status | Dependencies
  • abaculus - Build Status | Dependencies
  • node-blend - Build Status | Dependencies
  • carmen - Build Status | Dependencies
  • tilelive-vector - Build Status | Dependencies
  • tilelive-bridge - Build Status | Dependencies
  • mapnik-omnivore - Build Status | Dependencies
  • tilelive-omnivore - Build Status | Dependencies
  • vector-tile-query - Build Status | Dependencies
  • tilelive-mapnik - Build Status | Dependencies
  • landspeed.js - Build Status | Dependencies
  • @mapbox/assert-http - Build Status | Dependencies
  • mapnik-pool - Build Status | Dependencies
  • geojson-mapnikify - Build Status | Dependencies
  • tilelive-overlay - Build Status | Dependencies
  • spritezero - Build Status | Dependencies
  • mapbox-upload-validate - Build Status | Dependencies
  • raster-tile-query - Build Status | Dependencies
  • mapbox-tile-copy - Build Status | Dependencies
  • node-happytiff - Build Status | Dependencies