From d31a02c19067e6957d37134f683fc67e5b676ae7 Mon Sep 17 00:00:00 2001 From: Yaroslav Litvinov Date: Mon, 1 Dec 2025 14:45:18 +0100 Subject: [PATCH 1/9] alias for tests with coverage --- .cargo/config.toml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 00000000..73967a89 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,3 @@ +[alias] +# run tests and generate lcov.info +cov = "llvm-cov --workspace --lcov --output-path lcov.info" From 8501dea5f5acd77c4fee5e16d521326d96c1fc94 Mon Sep 17 00:00:00 2001 From: Yaroslav Litvinov Date: Fri, 12 Dec 2025 16:32:30 +0100 Subject: [PATCH 2/9] add workflow for covergae --- .github/workflows/coverage.yml | 36 ++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/coverage.yml diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml new file mode 100644 index 00000000..908d9f0a --- /dev/null +++ b/.github/workflows/coverage.yml @@ -0,0 +1,36 @@ +name: Coverage Badge + +on: + push: + branches: [main] + paths: + - crates/** + - Cargo.toml + - Cargo.lock + - Dockerfile + pull_request: + paths: + - crates/** + - Cargo.toml + - Cargo.lock + - Dockerfile +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true +jobs: + code-coverage-publish-coveralls: + runs-on: ubuntu-latest + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Install Dependencies + run: | + # Install lcov if not already installed + sudo apt-get install -y lcov + + - name: Upload to coveralls + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.DOCKERHUB_TOKEN }} + path-to-lcov: lcov.info \ No newline at end of file From ad8a90078a1dd603fd437072f1575196584d0a0f Mon Sep 17 00:00:00 2001 From: Yaroslav Litvinov Date: Fri, 12 Dec 2025 16:37:17 +0100 Subject: [PATCH 3/9] add coverage badge to readme --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 666e4f40..83d24bda 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![Coverage Status](https://coveralls.io/repos/github/embucket/embucket/badge.svg?branch=master)](https://coveralls.io/github/embucket/embucket?branch=master) + # Embucket **Run Snowflake SQL dialect on your data lake in 30 seconds. Zero dependencies.** From c9d873168b1cad6d948f23b417590d7865c2589f Mon Sep 17 00:00:00 2001 From: Yaroslav Litvinov Date: Fri, 12 Dec 2025 16:42:16 +0100 Subject: [PATCH 4/9] run coverage in ci --- .github/workflows/coverage.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 908d9f0a..de948801 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -29,6 +29,11 @@ jobs: # Install lcov if not already installed sudo apt-get install -y lcov + - name: Create coverage info + run: | + # Run coverage test + cargo cov + - name: Upload to coveralls uses: coverallsapp/github-action@master with: From 7f54231d289ad4b2f00000a935d005b69e7b4d20 Mon Sep 17 00:00:00 2001 From: Yaroslav Litvinov Date: Fri, 12 Dec 2025 16:45:31 +0100 Subject: [PATCH 5/9] trigger ci workflow run --- crates/api-snowflake-rest/src/sql_state.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/api-snowflake-rest/src/sql_state.rs b/crates/api-snowflake-rest/src/sql_state.rs index a644b8be..f524fc6a 100644 --- a/crates/api-snowflake-rest/src/sql_state.rs +++ b/crates/api-snowflake-rest/src/sql_state.rs @@ -38,4 +38,4 @@ impl Display for SqlState { }; write!(f, "{sql_state:05}") } -} +} \ No newline at end of file From 39649a0244cdd45b3f2be37005c92820e7777740 Mon Sep 17 00:00:00 2001 From: Yaroslav Litvinov Date: Fri, 12 Dec 2025 16:53:57 +0100 Subject: [PATCH 6/9] fix coverage workflow --- .github/workflows/coverage.yml | 3 +++ crates/api-snowflake-rest/src/sql_state.rs | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index de948801..4b37b9f2 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -28,6 +28,9 @@ jobs: run: | # Install lcov if not already installed sudo apt-get install -y lcov + cargo install cargo-llvm-cov -y + rustup update + rustup component add llvm-tools-preview - name: Create coverage info run: | diff --git a/crates/api-snowflake-rest/src/sql_state.rs b/crates/api-snowflake-rest/src/sql_state.rs index f524fc6a..fdc60192 100644 --- a/crates/api-snowflake-rest/src/sql_state.rs +++ b/crates/api-snowflake-rest/src/sql_state.rs @@ -23,6 +23,7 @@ pub enum SqlState { FeatureNotSupported, } + impl Display for SqlState { #[allow(clippy::as_conversions)] fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { @@ -38,4 +39,4 @@ impl Display for SqlState { }; write!(f, "{sql_state:05}") } -} \ No newline at end of file +} From 3319a81eb5d52377a18311c543b9d920286e1f1f Mon Sep 17 00:00:00 2001 From: Yaroslav Litvinov Date: Fri, 12 Dec 2025 17:06:01 +0100 Subject: [PATCH 7/9] fix coverage workflow --- .github/workflows/coverage.yml | 2 +- crates/api-snowflake-rest/src/sql_state.rs | 1 - crates/api-snowflake-rest/src/tests/test_stress.rs | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 4b37b9f2..0fc29d76 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -28,7 +28,7 @@ jobs: run: | # Install lcov if not already installed sudo apt-get install -y lcov - cargo install cargo-llvm-cov -y + cargo install cargo-llvm-cov rustup update rustup component add llvm-tools-preview diff --git a/crates/api-snowflake-rest/src/sql_state.rs b/crates/api-snowflake-rest/src/sql_state.rs index fdc60192..a644b8be 100644 --- a/crates/api-snowflake-rest/src/sql_state.rs +++ b/crates/api-snowflake-rest/src/sql_state.rs @@ -23,7 +23,6 @@ pub enum SqlState { FeatureNotSupported, } - impl Display for SqlState { #[allow(clippy::as_conversions)] fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { diff --git a/crates/api-snowflake-rest/src/tests/test_stress.rs b/crates/api-snowflake-rest/src/tests/test_stress.rs index 0bc6890f..dee25744 100644 --- a/crates/api-snowflake-rest/src/tests/test_stress.rs +++ b/crates/api-snowflake-rest/src/tests/test_stress.rs @@ -63,7 +63,7 @@ mod stress { // new error "External error: Iceberg error: The operation lacked the necessary privileges to complete for path metadata", "Table test_table not found", - // broken s3 tables error + // broken s3 tables error "External error: Iceberg error: service error", // create table if not exists "External error: The operation lacked the necessary privileges to complete for path metadata", From 742ba659a0cb43813ad98c32a397b5b236c68af8 Mon Sep 17 00:00:00 2001 From: Yaroslav Litvinov Date: Wed, 24 Dec 2025 13:08:21 +0100 Subject: [PATCH 8/9] fmt --- crates/api-snowflake-rest/src/tests/test_stress.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/api-snowflake-rest/src/tests/test_stress.rs b/crates/api-snowflake-rest/src/tests/test_stress.rs index dee25744..0bc6890f 100644 --- a/crates/api-snowflake-rest/src/tests/test_stress.rs +++ b/crates/api-snowflake-rest/src/tests/test_stress.rs @@ -63,7 +63,7 @@ mod stress { // new error "External error: Iceberg error: The operation lacked the necessary privileges to complete for path metadata", "Table test_table not found", - // broken s3 tables error + // broken s3 tables error "External error: Iceberg error: service error", // create table if not exists "External error: The operation lacked the necessary privileges to complete for path metadata", From 03c986457e24427616351442d46f3e45cae86eb6 Mon Sep 17 00:00:00 2001 From: Yaroslav Litvinov Date: Wed, 24 Dec 2025 13:24:36 +0100 Subject: [PATCH 9/9] trigger rebuild --- crates/api-snowflake-rest/src/tests/test_stress.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/api-snowflake-rest/src/tests/test_stress.rs b/crates/api-snowflake-rest/src/tests/test_stress.rs index 0bc6890f..ad8e1e55 100644 --- a/crates/api-snowflake-rest/src/tests/test_stress.rs +++ b/crates/api-snowflake-rest/src/tests/test_stress.rs @@ -56,7 +56,7 @@ mod stress { // Returned results match any of these patterns let expected_patterns = vec![ "successfully executed", - "Too many open files", // OS related error + "Too many open files", // OS related error "SQL compilation error: Schema 's3_table_db.schema1' does not exist or not authorized 002003", "Generic S3 error: Error performing GET", "Iceberg Object store: The operation lacked the necessary privileges to complete for path metadata",