2017 © Pedro Peláez
 

library backward-compatibility-check

Tool to compare two revisions of a public API to check for BC breaks

image

roave/backward-compatibility-check

Tool to compare two revisions of a public API to check for BC breaks

  • Tuesday, July 31, 2018
  • by Ocramius
  • Repository
  • 21 Watchers
  • 163 Stars
  • 235 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 11 Forks
  • 16 Open issues
  • 9 Versions
  • 124 % Grown

The README.md

Roave Backward Compatibility Check

Mutation testing badge Type Coverage Latest Stable Version License, (*1)

A tool that can be used to verify BC breaks between two versions of a PHP library., (*2)

Pre-requisites/assumptions

  • Your project uses git
  • Your project uses composer.json to define its dependencies
  • All source paths are covered by an "autoload" section in composer.json
  • Changes need to be committed to git to be covered. You can implement your own logic to extract sources and dependencies from a project though.

Installation

composer require --dev roave/backward-compatibility-check

Install with Docker

You can also use Docker to run roave-backward-compatibility-check:, (*3)

docker run --rm -v `pwd`:/app nyholm/roave-bc-check

Usage

Adding to a continuous integration pipeline

The typical intended usage is to just add roave-backward-compatibility-check to your CI build:, (*4)

vendor/bin/roave-backward-compatibility-check

This will automatically detect the last minor version tagged, and compare the API against the current HEAD. If any BC breaks are found, the tool returns a non-zero status, which on most CI systems will cause the build to fail., (*5)

NOTE: detecting the base version only works if you have git tags in the SemVer-compliant x.y.z format, such as 1.2.3., (*6)

NOTE: since this tool relies on tags, you need to make sure tags are fetched as part of your CI pipeline. For example in a GitHub action, note the use of fetch-depth: 0:, (*7)

jobs:
  roave-backwards-compatibility-check:
    name: Roave Backwards Compatibility Check
      runs-on: ubuntu-latest
      steps:
        - uses: actions/checkout@v2
          with:
            fetch-depth: 0
        - name: "Install PHP"
          uses: shivammathur/setup-php@v2
          with:
            php-version: "8.0"
        - name: "Install dependencies"
          run: "composer install"
        - name: "Check for BC breaks"
          run: "vendor/bin/roave-backward-compatibility-check"

Nyholm Github Action

Tobias Nyholm also offers a simple GitHub action that you can use in your Github pipeline. We recommend this for most cases as it is simple to set up:, (*8)

.github/workflows/main.yml, (*9)

on: [push]
name: Test
jobs:
  roave-backwards-compatibility-check:
    name: Roave Backwards Compatibility Check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0
      - name: "Check for BC breaks"
        uses: docker://nyholm/roave-bc-check-ga

Running manually

To generate additional documentation for changelogs:, (*10)

vendor/bin/roave-backward-compatibility-check --format=markdown > results.md

GitHub Actions

When running in GitHub Actions, it is endorsed to use the --format=github-actions output format:, (*11)

vendor/bin/roave-backward-compatibility-check --format=github-actions

Documentation

If you need further guidance:, (*12)

vendor/bin/roave-backward-compatibility-check --help

Configuration

There are currently no configuration options available., (*13)

The Versions

28/05 2018

dev-fix/#66-#72-#73-handle-missing-cli-options

dev-fix/#66-#72-#73-handle-missing-cli-options

Tool to compare two revisions of a public API to check for BC breaks

  Sources   Download

MIT

The Requires

 

The Development Requires

27/05 2018

dev-fix/#67-ignore-not-found-classes-by-stubbing-them-to-empty-classes

dev-fix/#67-ignore-not-found-classes-by-stubbing-them-to-empty-classes

Tool to compare two revisions of a public API to check for BC breaks

  Sources   Download

MIT

The Requires

 

The Development Requires

27/05 2018
15/04 2018

dev-fix/#33-variable-naming-in-constant-removed-comparator

dev-fix/#33-variable-naming-in-constant-removed-comparator

Tool to compare two revisions of a public API to check for BC breaks

  Sources   Download

MIT

The Requires

 

The Development Requires