Git Product home page Git Product logo

prettier-regression-testing's Introduction

prettier-regression-testing

Motivation

prettier/prettier#9290

We run Prettier on other projects prior to release to check for regressions. (See Release Checklist)

We used to do that manually.

This is a lot of work, so we use GitHub Actions to automate it.

Usage

Create an issue comment like the one below:

run alternativeVersionPrettier vs originalVersionPrettier

alternativeVersionPrettier

Required.

There are 3 ways to specify.

  1. Versions (e.g. 2.0.0, 1.7.1)
  2. Repository name + ref (e.g. sosukesuzuki/prettier#2f3fc241f8cb1867a0a3073ceac9d662e4b25fab).
  3. Pull Request number on prettier/prettier repository (e.g. #110168).

originalVersionPrettier

Optional.

In default, use prettier/prettier#main.

Also, you can specify with the logic same as alternativeVersionPrettier.

Examples

run #110168
run #110168 vs sosukesuzuki/prettier#main
run sosukesuzuki/prettier#main vs 1.8.1

Add new project

Add a project info to projects.json.

prettier-regression-testing's People

Contributors

dependabot[bot] avatar fisker avatar github-actions[bot] avatar sosukesuzuki avatar thorn0 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

prettier-regression-testing's Issues

Ditch submodules?

It might be just my personal lack of experience of using git submodules, but I'd really prefer to clone repos programmatically and replace submodules with a configuration in the code. In src/execute/run-prettier.ts, we already have something similar:

const targetRepositoryGlobPatternMap: Map<string, string> = new Map([
  ["typescript-eslint", "./**/*.{ts,js,json,md}"],
  ["eslint-plugin-vue", "./**/*.js"],
  ["babel", "./{packages,codemods,eslint}/**/*.js"],
  ["excalidraw", "./**/*.{css,scss,json,md,html,yml}"],
  ["prettier", "."],
  ["vega-lite", "./**/*.ts"],
]);
const targetRepositoryIgnorePathMap: Map<string, string> = new Map([
  ["excalidraw", ".eslintignore"],
  ["babel", ".eslintignore"],
  ["vega-lite", ".eslintignore"],
]);

I propose to make something like this:

const projects = {
  "typescript-eslint": {
    "url": "[email protected]:typescript-eslint/typescript-eslint.git",
    "commit": "a123bcde",
    "glob": "./**/*.{ts,js,json,md}",
    "ignore": "..."
  },
  "babel": {
    // ...
  },
  // and so on
};

Thoughts?

Test

This is a test for GitHub Actions

git diff --submodule=diff does not do what's needed

As I noticed in #19 (comment), the wrong diff is shown. The formatted projects go through the three states:

(1) initial state
(2) formatted by the "original" Prettier
(3) formatted by the "alternative" Prettier

expected: a diff between (2) and (3)
actual: a diff between (1) and (3)

Test

This is a test for GitHub Actions trigger.

Demo

This is a demo!

Better format script

Why not

execa('yarn add prettier@../prettier')
execa('WHAT_EVER_THIS_REPOSITORY_USED_TO_RUN_PRETTIER')

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.