diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 2875c7b..658ab2c 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -1,4 +1,7 @@ -on: [push, pull_request] +on: + push: + branches: [ main ] + pull_request: name: Continuous integration @@ -62,3 +65,17 @@ jobs: with: command: clippy args: -- -D warnings + + coverage: + name: Code Coverage + runs-on: ubuntu-latest + env: + CARGO_TERM_COLOR: always + steps: + - uses: actions/checkout@v4 + - name: Install Rust + run: rustup update stable + - name: Install cargo-llvm-cov + uses: taiki-e/install-action@cargo-llvm-cov + - name: Generate code coverage + run: cargo llvm-cov -p todolist --fail-uncovered-lines 0 diff --git a/domain/todolist/src/lib.rs b/domain/todolist/src/lib.rs index 9256bd4..db02a72 100644 --- a/domain/todolist/src/lib.rs +++ b/domain/todolist/src/lib.rs @@ -19,7 +19,7 @@ pub enum Command { #[derive(Debug)] pub enum Error {} -#[derive(Serialize, Deserialize)] +#[derive(Debug, PartialEq, Serialize, Deserialize)] pub enum Event { TaskAdded { description: String }, TaskCompleted { index: usize }, diff --git a/sort_derive.py b/sort_derive.py new file mode 100644 index 0000000..e55f1e8 --- /dev/null +++ b/sort_derive.py @@ -0,0 +1,41 @@ +import os +import fileinput +import re + +a = re.compile(r"^#\[derive\((\s*[a-zA-Z0-9_]+\s*,)*(\s*[a-zA-Z0-9_]+\s*)\)]$") + +special = [ + "Copy", + "Clone", + "Default", + "Debug", + "PartialEq", + "Eq", + "PartialOrd", + "Ord", + "Serialize", + "Deserialize", +] + +special = {x: i for i, x in enumerate(special)} + +for root, dirs, files in os.walk("."): + if "target" in root: + continue + for name in files: + path = root + os.sep + name + + if name.endswith(".rs"): + print(path) + for line in fileinput.input(path, inplace=True): + if a.match(line): + derives = line[9:-3] + derives = [ + (special.get(x.strip(), 100), x.strip()) + for x in derives.split(",") + ] + derives.sort() + line = "#[derive(" + ", ".join(x[1] for x in derives) + ")]" + print(line) + else: + print(line, end="")