fpgad 0.2.0

An FPGA manager daemon that handles the dirty work for you.
Documentation
// This file is part of fpgad, an application to manage FPGA subsystem together with device-tree and kernel modules.
//
// Copyright 2026 Canonical Ltd.
//
// SPDX-License-Identifier: GPL-3.0-only
//
// fpgad is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3, as published by the Free Software Foundation.
//
// fpgad is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along with this program.  If not, see http://www.gnu.org/licenses/.

use crate::common::proxies::control_proxy;
use crate::universal::{PLATFORM_STRING, setup};
use googletest::prelude::*;
use rstest::*;
use zbus::Connection;

#[gtest]
#[tokio::test]
#[rstest]
async fn remove_bitstream(_setup: ()) {
    let connection = Connection::system()
        .await
        .expect("failed to create connection");
    let proxy = control_proxy::ControlProxy::new(&connection)
        .await
        .expect("failed to create status proxy");
    let res = proxy.remove_bitstream(PLATFORM_STRING, "fpga0", "").await;

    expect_that!(
        &res,
        err(displays_as(contains_substring(
            "UniversalPlatform does not support removing bitstreams"
        )))
    );
}