Skip to content

Commit

Permalink
Merge pull request #11 from andyquinterom/T10
Browse files Browse the repository at this point in the history
fix: Fixes bug with finding leaves after subset
  • Loading branch information
andyquinterom committed Jun 14, 2024
2 parents dcc1aef + e3e1be1 commit 1bce1f2
Show file tree
Hide file tree
Showing 5 changed files with 40,208 additions and 3 deletions.
114 changes: 114 additions & 0 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
permissions:
contents: read

on:
push:
branches:
- 'main'
pull_request:

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

name: Unit testing
jobs:
required:
runs-on: ubuntu-latest
name: ubuntu / ${{ matrix.toolchain }}
strategy:
matrix:
toolchain: [stable, beta]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install ${{ matrix.toolchain }}
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.toolchain }}
- name: cargo generate-lockfile
if: hashFiles('Cargo.lock') == ''
run: cargo generate-lockfile
- name: Restore cached target/
id: target-cache-restore
uses: actions/cache/restore@v4
with:
path: |
target
/home/runner/.cargo
key: ${{ matrix.toolchain }}-target
# https://twitter.com/jonhoo/status/1571290371124260865
- name: cargo test --locked
run: cargo test --locked --all-features --all-targets
# https://github.com/rust-lang/cargo/issues/6669
- name: cargo test --doc
run: cargo test --locked --all-features --doc
- name: Save cached target/
id: target-cache-save
uses: actions/cache/save@v4
with:
path: |
target
/home/runner/.cargo
key: ${{ steps.target-cache-restore.outputs.cache-primary-key }}
os-check:
runs-on: ${{ matrix.os }}
name: ${{ matrix.os }} / stable
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-latest]
steps:
- run: echo "VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT" | Out-File -FilePath $env:GITHUB_ENV -Append
if: runner.os == 'Windows'
- run: vcpkg install openssl:x64-windows-static-md
if: runner.os == 'Windows'
- uses: actions/checkout@v4
with:
submodules: true
- name: Install stable
uses: dtolnay/rust-toolchain@stable
- name: cargo generate-lockfile
if: hashFiles('Cargo.lock') == ''
run: cargo generate-lockfile
- name: cargo test
run: cargo test --locked --all-features --all-targets
coverage:
runs-on: ubuntu-latest
name: ubuntu / stable / coverage
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install stable
uses: dtolnay/rust-toolchain@stable
with:
components: llvm-tools-preview
- name: cargo install cargo-llvm-cov
uses: taiki-e/install-action@cargo-llvm-cov
- name: cargo generate-lockfile
if: hashFiles('Cargo.lock') == ''
run: cargo generate-lockfile
- name: Restore cached target/
id: target-cache-restore
uses: actions/cache/restore@v4
with:
path: |
target
/home/runner/.cargo
key: coverage-target
- name: cargo llvm-cov clean
run: cargo llvm-cov clean --workspace
- name: cargo llvm-cov
run: cargo llvm-cov --locked --all-features --no-report --release
- name: Save cached target/
id: target-cache-save
uses: actions/cache/save@v4
with:
path: |
target
/home/runner/.cargo
key: ${{ steps.target-cache-restore.outputs.cache-primary-key }}
- name: cargo llvm-cov report
run: cargo llvm-cov report --release --lcov --output-path lcov.info
3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
[package]
name = "orbweaver"
version = "0.10.1"
version = "0.10.4"
edition = "2021"
authors = ["ixpantia <hola@ixpantia.com>", "Andrés F. Quintero <andres@ixpantia.com>"]
description = "Crate designed for effortless construction and analysis of graph data structures."
repository = "https://github.com/ixpantia/orbweaver-rs"
license = "MIT"
readme = "README.md"
exclude = ["tests/", "benches/"]

[dev-dependencies]
criterion = "0.5"
Expand Down
11 changes: 9 additions & 2 deletions src/directed/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -398,8 +398,7 @@ impl DirectedGraph {

match self.children_map.get(&node) {
Some(children) => children.iter().for_each(|child| to_visit.push(*child)),
None if self.leaves.binary_search(&node).is_ok() => leaves.push(node),
_ => (),
None => leaves.push(node),
}
}

Expand Down Expand Up @@ -502,9 +501,17 @@ impl DirectedGraph {
let nodes = new_dg.parent_map.keys().copied().collect();
new_dg.nodes = nodes;
new_dg.nodes.push(node);

// Re order values
new_dg.nodes.sort_unstable();
new_dg.nodes.dedup();

new_dg.leaves.sort_unstable();
new_dg.leaves.dedup();

// There should only be one root in a subset
assert_eq!(new_dg.roots.len(), 1);

new_dg
}

Expand Down
Loading

0 comments on commit 1bce1f2

Please sign in to comment.