Skip to content

Commit

Permalink
add CI (#8)
Browse files Browse the repository at this point in the history
  • Loading branch information
samuelcolvin authored Sep 8, 2023
1 parent 3961101 commit 5530c7d
Show file tree
Hide file tree
Showing 6 changed files with 149 additions and 8 deletions.
1 change: 1 addition & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
github: samuelcolvin
106 changes: 106 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: CI

on:
push:
branches:
- main
tags:
- '**'
pull_request: {}

jobs:
test:
name: test rust-${{ matrix.rust-version }}
strategy:
fail-fast: false
matrix:
rust-version: [stable, beta, nightly]

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust-version }}

- id: cache-rust
uses: Swatinem/rust-cache@v2

- run: cargo install rustfilt coverage-prepare
if: steps.cache-rust.outputs.cache-hit != 'true'

- run: rustup component add llvm-tools-preview

- run: cargo test --test main
env:
RUST_BACKTRACE: 1
RUSTFLAGS: '-C instrument-coverage'

- run: coverage-prepare --ignore-filename-regex '/tests/' lcov $(find target/debug/deps -regex '.*/main[^.]*')

- run: cargo test --doc

- uses: codecov/codecov-action@v3

bench:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- uses: dtolnay/rust-toolchain@nightly
- uses: Swatinem/rust-cache@v2

- run: python benches/generate_big.py
- run: cargo bench

lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: install rust stable
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy

- uses: Swatinem/rust-cache@v2

- uses: pre-commit/[email protected]
with:
extra_args: --all-files --verbose
env:
PRE_COMMIT_COLOR: always
SKIP: test

- run: cargo doc

# https://github.com/marketplace/actions/alls-green#why used for branch protection checks
check:
if: always()
needs: [test, bench, lint]
runs-on: ubuntu-latest
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}

release:
needs: [check]
if: "success() && startsWith(github.ref, 'refs/tags/')"
runs-on: ubuntu-latest
environment: release

steps:
- uses: actions/checkout@v2

- name: install rust stable
uses: dtolnay/rust-toolchain@stable

- uses: Swatinem/rust-cache@v2

- run: cargo publish
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
33 changes: 33 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
fail_fast: true

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.0.1
hooks:
- id: check-yaml
- id: check-toml
- id: end-of-file-fixer
exclude: '^benches/.*\.json'
- id: trailing-whitespace
- id: check-added-large-files

- repo: local
hooks:
- id: format-check
name: Format Check
entry: cargo fmt -- --check
types: [rust]
language: system
pass_filenames: false
- id: clippy
name: Clippy
entry: cargo clippy -- -D warnings -A incomplete_features -W clippy::dbg_macro -W clippy::print_stdout
types: [rust]
language: system
pass_filenames: false
- id: test
name: Test
entry: cargo test
types: [rust]
language: system
pass_filenames: false
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# donervan

[![CI](https://github.com/samuelcolvin/donervan/actions/workflows/ci.yml/badge.svg?event=push)](https://github.com/samuelcolvin/donervan/actions/workflows/ci.yml?query=branch%3Amain)
[![Crates.io](https://img.shields.io/crates/v/donervan?color=green)](https://crates.io/crates/donervan)

WIP
1 change: 0 additions & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#![doc = include_str!("../README.md")]
#![feature(core_intrinsics)]

mod fleece;
mod number_decoder;
Expand Down
13 changes: 6 additions & 7 deletions src/parse.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
use std::fmt;
use std::intrinsics::{likely, unlikely};
use std::ops::Range;

use strum::{Display, EnumMessage};
Expand Down Expand Up @@ -210,7 +209,7 @@ impl<'a> Parser<'a> {
}

pub fn consume_true(&mut self) -> JsonResult<()> {
if unlikely(self.index + 3 >= self.length) {
if self.index + 3 >= self.length {
return Err(JsonError::UnexpectedEnd);
}
let v = unsafe {
Expand All @@ -220,7 +219,7 @@ impl<'a> Parser<'a> {
*self.data.get_unchecked(self.index + 3),
]
};
if likely(v == TRUE_REST) {
if v == TRUE_REST {
self.index += 4;
Ok(())
} else {
Expand All @@ -229,7 +228,7 @@ impl<'a> Parser<'a> {
}

pub fn consume_false(&mut self) -> JsonResult<()> {
if unlikely(self.index + 4 >= self.length) {
if self.index + 4 >= self.length {
return Err(JsonError::UnexpectedEnd);
}
let v = unsafe {
Expand All @@ -240,7 +239,7 @@ impl<'a> Parser<'a> {
*self.data.get_unchecked(self.index + 4),
]
};
if likely(v == FALSE_REST) {
if v == FALSE_REST {
self.index += 5;
Ok(())
} else {
Expand All @@ -249,7 +248,7 @@ impl<'a> Parser<'a> {
}

pub fn consume_null(&mut self) -> JsonResult<()> {
if unlikely(self.index + 3 >= self.length) {
if self.index + 3 >= self.length {
return Err(JsonError::UnexpectedEnd);
}
let v = unsafe {
Expand All @@ -259,7 +258,7 @@ impl<'a> Parser<'a> {
*self.data.get_unchecked(self.index + 3),
]
};
if likely(v == NULL_REST) {
if v == NULL_REST {
self.index += 4;
Ok(())
} else {
Expand Down

0 comments on commit 5530c7d

Please sign in to comment.