Skip to content

Commit 5fb4177

Browse files
author
Mohammod Al Amin Ashik
committed
updates tests
1 parent 31e3266 commit 5fb4177

139 files changed

Lines changed: 6955 additions & 4335 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 81 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,20 @@ on:
66
pull_request:
77
branches: [main]
88

9+
# Cancel in-progress runs when a new commit is pushed to the same PR.
10+
# PR: same group per PR so new push cancels previous run. Push to main: unique group so no cancel.
911
concurrency:
10-
group: ${{ github.workflow }}-${{ github.ref }}
11-
cancel-in-progress: true
12+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
13+
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
1214

1315
env:
1416
CARGO_TERM_COLOR: always
1517
RUST_BACKTRACE: 1
1618
# Cache keys for better hit rates
1719
RUST_CACHE_KEY: v1
1820
PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/.cache/ms-playwright
21+
# Linux: pkg-config must find glib-2.0.pc (set before any cargo step; only used on Linux)
22+
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
1923

2024
jobs:
2125
# ─────────────────────────────────────────────────────────────
@@ -25,24 +29,39 @@ jobs:
2529
runs-on: ubuntu-latest
2630
steps:
2731
- uses: actions/checkout@v4
28-
- uses: dtolnay/rust-toolchain@stable
29-
with:
30-
components: rustfmt, clippy
31-
- uses: Swatinem/rust-cache@v2
3232

3333
- name: Install Linux deps
3434
run: |
3535
sudo apt-get update
36-
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libsecret-1-dev
36+
sudo apt-get install -y pkg-config libglib2.0-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libsecret-1-dev
37+
echo "=== Verifying glib-2.0 installation ==="
38+
dpkg -l | grep libglib2.0-dev || echo "libglib2.0-dev not installed"
39+
find /usr -name 'glib-2.0.pc' 2>/dev/null || echo "glib-2.0.pc not found"
40+
pkg-config --modversion glib-2.0 || echo "pkg-config cannot find glib-2.0"
41+
pkg-config --exists 'glib-2.0 >= 2.70' && echo "glib-2.0 >= 2.70 found" || (echo "ERROR: glib-2.0 >= 2.70 not found"; exit 1)
42+
43+
- uses: dtolnay/rust-toolchain@stable
44+
with:
45+
components: rustfmt, clippy
46+
env:
47+
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
48+
49+
- uses: Swatinem/rust-cache@v2
50+
env:
51+
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
3752

3853
- name: Format check
3954
run: cargo fmt --all --check
4055

4156
- name: Clippy
4257
run: cargo clippy --workspace -- -D warnings
58+
env:
59+
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
4360

4461
- name: Check (no features)
4562
run: cargo check --workspace
63+
env:
64+
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
4665

4766
# ─────────────────────────────────────────────────────────────
4867
# TypeScript Checks (fast)
@@ -82,20 +101,27 @@ jobs:
82101
runs-on: ${{ matrix.os }}
83102
steps:
84103
- uses: actions/checkout@v4
104+
105+
- name: Install Linux deps
106+
if: matrix.os == 'ubuntu-latest'
107+
run: |
108+
sudo apt-get update
109+
sudo apt-get install -y pkg-config libglib2.0-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libsecret-1-dev
110+
echo "=== Verifying glib-2.0 installation ==="
111+
dpkg -l | grep libglib2.0-dev || echo "libglib2.0-dev not installed"
112+
find /usr -name 'glib-2.0.pc' 2>/dev/null || echo "glib-2.0.pc not found"
113+
pkg-config --modversion glib-2.0 || echo "pkg-config cannot find glib-2.0"
114+
pkg-config --exists 'glib-2.0 >= 2.70' && echo "glib-2.0 >= 2.70 found" || (echo "ERROR: glib-2.0 >= 2.70 not found"; exit 1)
115+
echo "PKG_CONFIG_PATH=$(pkg-config --variable pc_path pkg-config)" >> $GITHUB_ENV
116+
85117
- uses: dtolnay/rust-toolchain@stable
86118
with:
87119
targets: ${{ matrix.target }}
120+
88121
- uses: Swatinem/rust-cache@v2
89122
with:
90123
key: ${{ matrix.target }}
91124

92-
# Linux dependencies for Tauri
93-
- name: Install Linux deps
94-
if: matrix.os == 'ubuntu-latest'
95-
run: |
96-
sudo apt-get update
97-
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libsecret-1-dev
98-
99125
# Install cargo-nextest
100126
- name: Install nextest
101127
uses: taiki-e/install-action@nextest
@@ -131,27 +157,39 @@ jobs:
131157
runs-on: ${{ matrix.os }}
132158
steps:
133159
- uses: actions/checkout@v4
160+
161+
- name: Install Linux deps
162+
if: matrix.os == 'ubuntu-latest'
163+
run: |
164+
sudo apt-get update
165+
sudo apt-get install -y pkg-config libglib2.0-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libsecret-1-dev
166+
echo "=== Verifying glib-2.0 installation ==="
167+
dpkg -l | grep libglib2.0-dev || echo "libglib2.0-dev not installed"
168+
find /usr -name 'glib-2.0.pc' 2>/dev/null || echo "glib-2.0.pc not found"
169+
pkg-config --modversion glib-2.0 || echo "pkg-config cannot find glib-2.0"
170+
pkg-config --exists 'glib-2.0 >= 2.70' && echo "glib-2.0 >= 2.70 found" || (echo "ERROR: glib-2.0 >= 2.70 not found"; exit 1)
171+
134172
- uses: dtolnay/rust-toolchain@stable
135173
with:
136174
targets: ${{ matrix.target }}
175+
env:
176+
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
177+
137178
- uses: Swatinem/rust-cache@v2
138179
with:
139180
key: ${{ matrix.target }}-build
181+
env:
182+
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
140183
- uses: pnpm/action-setup@v4
141184
- uses: actions/setup-node@v4
142185
with:
143186
node-version: 20
144187
cache: 'pnpm'
145188

146-
- name: Install Linux deps
147-
if: matrix.os == 'ubuntu-latest'
148-
run: |
149-
sudo apt-get update
150-
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libsecret-1-dev
151-
152189
- run: pnpm install --frozen-lockfile
153190
- run: pnpm build
154191
env:
192+
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
155193
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
156194

157195
# ─────────────────────────────────────────────────────────────
@@ -215,21 +253,33 @@ jobs:
215253
runs-on: ${{ matrix.os }}
216254
steps:
217255
- uses: actions/checkout@v4
256+
257+
- name: Install Linux deps
258+
if: matrix.os == 'ubuntu-latest'
259+
run: |
260+
sudo apt-get update
261+
sudo apt-get install -y pkg-config libglib2.0-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libsecret-1-dev webkit2gtk-driver xvfb
262+
echo "=== Verifying glib-2.0 installation ==="
263+
dpkg -l | grep libglib2.0-dev || echo "libglib2.0-dev not installed"
264+
find /usr -name 'glib-2.0.pc' 2>/dev/null || echo "glib-2.0.pc not found"
265+
pkg-config --modversion glib-2.0 || echo "pkg-config cannot find glib-2.0"
266+
pkg-config --exists 'glib-2.0 >= 2.70' && echo "glib-2.0 >= 2.70 found" || (echo "ERROR: glib-2.0 >= 2.70 not found"; exit 1)
267+
218268
- uses: dtolnay/rust-toolchain@stable
219-
- uses: Swatinem/rust-cache@v2
220-
with:
221-
key: ${{ matrix.os }}-e2e
269+
env:
270+
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
271+
222272
- uses: pnpm/action-setup@v4
223273
- uses: actions/setup-node@v4
224274
with:
225275
node-version: 20
226276
cache: 'pnpm'
227277

228-
- name: Install Linux deps
229-
if: matrix.os == 'ubuntu-latest'
230-
run: |
231-
sudo apt-get update
232-
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libsecret-1-dev webkit2gtk-driver xvfb
278+
- uses: Swatinem/rust-cache@v2
279+
with:
280+
key: ${{ matrix.os }}-e2e
281+
env:
282+
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
233283

234284
# Cache tauri-driver binary
235285
- name: Cache tauri-driver
@@ -242,12 +292,15 @@ jobs:
242292
- name: Install tauri-driver
243293
if: steps.tauri-driver-cache.outputs.cache-hit != 'true'
244294
run: cargo install tauri-driver --locked
295+
env:
296+
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
245297

246298
- run: pnpm install --frozen-lockfile
247299

248300
- name: Build app
249301
run: pnpm build
250302
env:
303+
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
251304
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
252305

253306
- name: Run Tauri E2E tests (Linux)

.github/workflows/e2e-tauri-comment.yml

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ on:
77
issue_comment:
88
types: [created]
99

10+
env:
11+
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
12+
1013
jobs:
1114
e2e-tauri:
1215
# Only run when comment on a PR contains /e2e-tauri
@@ -43,23 +46,33 @@ jobs:
4346
with:
4447
ref: ${{ steps.pr.outputs.sha }}
4548

49+
- name: Install Linux deps
50+
if: matrix.os == 'ubuntu-latest'
51+
run: |
52+
sudo apt-get update
53+
sudo apt-get install -y pkg-config libglib2.0-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libsecret-1-dev webkit2gtk-driver xvfb
54+
echo "=== Verifying glib-2.0 installation ==="
55+
dpkg -l | grep libglib2.0-dev || echo "libglib2.0-dev not installed"
56+
find /usr -name 'glib-2.0.pc' 2>/dev/null || echo "glib-2.0.pc not found"
57+
pkg-config --modversion glib-2.0 || echo "pkg-config cannot find glib-2.0"
58+
pkg-config --exists 'glib-2.0 >= 2.70' && echo "glib-2.0 >= 2.70 found" || (echo "ERROR: glib-2.0 >= 2.70 not found"; exit 1)
59+
4660
- uses: dtolnay/rust-toolchain@stable
61+
env:
62+
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
63+
4764
- uses: Swatinem/rust-cache@v2
4865
with:
4966
key: ${{ matrix.os }}-e2e-comment
67+
env:
68+
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
5069

5170
- uses: pnpm/action-setup@v4
5271
- uses: actions/setup-node@v4
5372
with:
5473
node-version: 20
5574
cache: 'pnpm'
5675

57-
- name: Install Linux deps
58-
if: matrix.os == 'ubuntu-latest'
59-
run: |
60-
sudo apt-get update
61-
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libsecret-1-dev webkit2gtk-driver xvfb
62-
6376
- name: Cache tauri-driver
6477
uses: actions/cache@v4
6578
id: tauri-driver-cache
@@ -70,12 +83,15 @@ jobs:
7083
- name: Install tauri-driver
7184
if: steps.tauri-driver-cache.outputs.cache-hit != 'true'
7285
run: cargo install tauri-driver --locked
86+
env:
87+
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
7388

7489
- run: pnpm install --frozen-lockfile
7590

7691
- name: Build app
7792
run: pnpm build
7893
env:
94+
PKG_CONFIG_PATH: /usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
7995
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
8096

8197
- name: Run Tauri E2E tests (Linux)

apps/desktop/src-tauri/build.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ fn main() {
1212
}
1313
}
1414
}
15-
15+
1616
// Tell Cargo to re-run this script if tauri.conf.json changes
1717
println!("cargo:rerun-if-changed=tauri.conf.json");
18-
18+
1919
tauri_build::build()
2020
}

apps/desktop/src-tauri/src/commands/client.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ use tauri::State;
1010
use tokio::sync::RwLock;
1111
use uuid::Uuid;
1212

13-
use crate::state::AppState;
1413
use crate::commands::gateway::GatewayAppState;
14+
use crate::state::AppState;
1515

1616
/// Response for client listing
1717
#[derive(Debug, Serialize)]
@@ -28,7 +28,9 @@ pub struct ClientResponse {
2828
impl From<Client> for ClientResponse {
2929
fn from(c: Client) -> Self {
3030
let (mode, locked_id) = match &c.connection_mode {
31-
ConnectionMode::Locked { space_id } => ("locked".to_string(), Some(space_id.to_string())),
31+
ConnectionMode::Locked { space_id } => {
32+
("locked".to_string(), Some(space_id.to_string()))
33+
}
3234
ConnectionMode::FollowActive => ("follow_active".to_string(), None),
3335
ConnectionMode::AskOnChange { .. } => ("ask_on_change".to_string(), None),
3436
};
Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
//! Commands for managing client-specific custom feature sets
22
3-
use tauri::State;
43
use crate::state::AppState;
54
use mcpmux_core::{FeatureSet, FeatureSetType};
5+
use tauri::State;
66

77
/// Find or create a custom feature set for a specific client in a space
88
/// This ensures only one custom feature set exists per client per space
@@ -13,20 +13,20 @@ pub async fn find_or_create_client_custom_feature_set(
1313
space_id: String,
1414
) -> Result<FeatureSet, String> {
1515
let custom_set_name = format!("{} - Custom", client_name);
16-
16+
1717
// First, try to find existing custom feature set
1818
let existing_sets = state
1919
.feature_set_repository
2020
.list_by_space(&space_id)
2121
.await
2222
.map_err(|e| format!("Failed to list feature sets: {}", e))?;
23-
23+
2424
// Look for existing custom feature set with this name
25-
if let Some(existing) = existing_sets.iter().find(|fs|
26-
fs.name == custom_set_name &&
27-
fs.feature_set_type == FeatureSetType::Custom &&
28-
!fs.is_deleted
29-
) {
25+
if let Some(existing) = existing_sets.iter().find(|fs| {
26+
fs.name == custom_set_name
27+
&& fs.feature_set_type == FeatureSetType::Custom
28+
&& !fs.is_deleted
29+
}) {
3030
// Load members
3131
return state
3232
.feature_set_repository
@@ -35,18 +35,17 @@ pub async fn find_or_create_client_custom_feature_set(
3535
.map_err(|e| format!("Failed to load feature set: {}", e))?
3636
.ok_or_else(|| "Feature set not found".to_string());
3737
}
38-
38+
3939
// No existing set found, create a new one
4040
let new_set = FeatureSet::new_custom(&custom_set_name, &space_id)
4141
.with_description(format!("Custom features for {}", client_name))
4242
.with_icon("⚙️");
43-
43+
4444
state
4545
.feature_set_repository
4646
.create(&new_set)
4747
.await
4848
.map_err(|e| format!("Failed to create custom feature set: {}", e))?;
49-
49+
5050
Ok(new_set)
5151
}
52-

0 commit comments

Comments
 (0)