diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml new file mode 100644 index 0000000..7600f6e --- /dev/null +++ b/.github/workflows/benchmark.yml @@ -0,0 +1,33 @@ +name: Benchmark + +on: [push, pull_request] + +jobs: + build: + + strategy: + matrix: + os: [ubuntu-latest] + rust: [stable] + + runs-on: ${{ matrix.os }} + + steps: + - name: Setup Rust + uses: hecrj/setup-rust-action@v1 + with: + rust-version: ${{ matrix.rust }} + - name: Checkout + uses: actions/checkout@v1 + - name: Run benchmark + run: cargo +nightly test | tee output.txt + - name: Fetch gh-pages for avoiding conflict + run: git fetch 'https://dalance:${{ secrets.GITHUB_TOKEN }}@github.com/dalance/sv-parser.git' gh-pages:gh-pages + - name: Store benchmark result + uses: rhysd/github-action-benchmark@v1 + with: + name: Rust Benchmark + tool: 'cargo' + output-file-path: output.txt + - name: Push benchmark result + run: git push 'https://dalance:${{ secrets.GITHUB_TOKEN }}@github.com/dalance/sv-parser.git' gh-pages:gh-pages diff --git a/.github/workflows/periodic.yml b/.github/workflows/periodic.yml new file mode 100644 index 0000000..b29bc57 --- /dev/null +++ b/.github/workflows/periodic.yml @@ -0,0 +1,25 @@ +name: Periodic + +on: + schedule: + - cron: 0 0 * * SUN + +jobs: + build: + + strategy: + matrix: + os: [ubuntu-latest] + rust: [stable, beta, nightly] + + runs-on: ${{ matrix.os }} + + steps: + - name: Setup Rust + uses: hecrj/setup-rust-action@v1 + with: + rust-version: ${{ matrix.rust }} + - name: Checkout + uses: actions/checkout@v1 + - name: Run tests + run: cargo test diff --git a/.github/workflows/regression.yml b/.github/workflows/regression.yml new file mode 100644 index 0000000..bab0a05 --- /dev/null +++ b/.github/workflows/regression.yml @@ -0,0 +1,23 @@ +name: Regression + +on: [push, pull_request] + +jobs: + build: + + strategy: + matrix: + os: [ubuntu-latest] + rust: [stable] + + runs-on: ${{ matrix.os }} + + steps: + - name: Setup Rust + uses: hecrj/setup-rust-action@v1 + with: + rust-version: ${{ matrix.rust }} + - name: Checkout + uses: actions/checkout@v1 + - name: Run tests + run: cargo test diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 8911fcd..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: Test - -on: [push] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v1 - - name: Run tests - run: cargo test --verbose diff --git a/sv-parser-syntaxtree/src/general/identifiers.rs b/sv-parser-syntaxtree/src/general/identifiers.rs index 8ef315a..d6c1506 100644 --- a/sv-parser-syntaxtree/src/general/identifiers.rs +++ b/sv-parser-syntaxtree/src/general/identifiers.rs @@ -349,7 +349,7 @@ pub struct PsOrHierarchicalNetIdentifierPackageScope { #[derive(Clone, Debug, PartialEq, Node)] pub struct PsOrHierarchicalNetIdentifierHierarchical { - pub nodes: (HierarchicalNetIdentifier), + pub nodes: (HierarchicalNetIdentifier,), } #[derive(Clone, Debug, PartialEq, Node)] @@ -365,7 +365,7 @@ pub struct PsOrHierarchicalPropertyIdentifierPackageScope { #[derive(Clone, Debug, PartialEq, Node)] pub struct PsOrHierarchicalPropertyIdentifierHierarchical { - pub nodes: (HierarchicalPropertyIdentifier), + pub nodes: (HierarchicalPropertyIdentifier,), } #[derive(Clone, Debug, PartialEq, Node)] @@ -381,7 +381,7 @@ pub struct PsOrHierarchicalSequenceIdentifierPackageScope { #[derive(Clone, Debug, PartialEq, Node)] pub struct PsOrHierarchicalSequenceIdentifierHierarchical { - pub nodes: (HierarchicalSequenceIdentifier), + pub nodes: (HierarchicalSequenceIdentifier,), } #[derive(Clone, Debug, PartialEq, Node)] @@ -400,7 +400,7 @@ pub struct PsOrHierarchicalTfIdentifierPackageScope { #[derive(Clone, Debug, PartialEq, Node)] pub struct PsOrHierarchicalTfIdentifierHierarchical { - pub nodes: (HierarchicalTfIdentifier), + pub nodes: (HierarchicalTfIdentifier,), } #[derive(Clone, Debug, PartialEq, Node)] diff --git a/sv-parser/Cargo.toml b/sv-parser/Cargo.toml index ea1923e..26b90d3 100644 --- a/sv-parser/Cargo.toml +++ b/sv-parser/Cargo.toml @@ -35,5 +35,5 @@ structopt = "0.3.2" criterion = "0.3" [[bench]] -name = "parse_sv" +name = "parse_sv_criterion" harness = false diff --git a/sv-parser/benches/parse_sv_bench.rs b/sv-parser/benches/parse_sv_bench.rs new file mode 100644 index 0000000..f237d66 --- /dev/null +++ b/sv-parser/benches/parse_sv_bench.rs @@ -0,0 +1,37 @@ +#![feature(test)] + +extern crate test; + +use std::collections::HashMap; +use std::env; +use std::path::PathBuf; +use sv_parser::parse_sv; +use test::Bencher; + +fn get_path(s: &str) -> PathBuf { + PathBuf::from(format!( + "{}/testcases/{}", + env::var("CARGO_MANIFEST_DIR").unwrap(), + s + )) +} + +#[bench] +fn test1(b: &mut Bencher) { + let defines = HashMap::new(); + let includes: Vec = Vec::new(); + let path = get_path("test1.sv"); + b.iter(|| { + let _ = parse_sv(&path, &defines, &includes); + }); +} + +#[bench] +fn test2(b: &mut Bencher) { + let defines = HashMap::new(); + let includes: Vec = Vec::new(); + let path = get_path("test2.sv"); + b.iter(|| { + let _ = parse_sv(&path, &defines, &includes); + }); +} diff --git a/sv-parser/benches/parse_sv.rs b/sv-parser/benches/parse_sv_criterion.rs similarity index 100% rename from sv-parser/benches/parse_sv.rs rename to sv-parser/benches/parse_sv_criterion.rs