This artifact provides an implementation of a novel technique, type regression testing, to automatically determine whether an update of a npm library implementation affects the types of its public interface, according to how the library is being used by other npm packages. Type regression testing is implemented in the tool NoRegrets. A run of NoRegrets is parameterized with a pre-update and post-update version of the library, and it consists of three fully automatic phases. First, NoRegrets fetches a list of clients that depend upon the pre-update library, and that have a test suite that succeeds on the pre-update version. Second, NoRegrets uses an ECMAScript 6 proxy instrumentation to generate the API model of both the pre-update and post-update libraries, based on observations of how the client test suites interact with the library. Third, the two models are compared, and inconsistencies are reported as type regressions. This artifact contains the source code and an installation of NoRegrets, with a guide for how to use the tool and reproduce the experimental results presented in the paper.
@Article{mezzetti_et_al:DARTS.4.3.8, author = {Mezzetti, Gianluca and M{\o}ller, Anders and Torp, Martin Toldam}, title = {{Type Regression Testing to Detect Breaking Changes in Node.js Libraries (Artifact)}}, pages = {8:1--8:2}, journal = {Dagstuhl Artifacts Series}, ISSN = {2509-8195}, year = {2018}, volume = {4}, number = {3}, editor = {Mezzetti, Gianluca and M{\o}ller, Anders and Torp, Martin Toldam}, publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik}, address = {Dagstuhl, Germany}, URL = {https://drops.dagstuhl.de/entities/document/10.4230/DARTS.4.3.8}, URN = {urn:nbn:de:0030-drops-92394}, doi = {10.4230/DARTS.4.3.8}, annote = {Keywords: JavaScript, semantic versioning, dynamic analysis} }
e2b883f996f10ebe7475722093e40061
(Get MD5 Sum)
Feedback for Dagstuhl Publishing