ic-test 0.3.2

This tool helps to organize IC Rust canister testing as well as cross-testing between ICP and EVM.
Documentation
# ic-test

**ic-test** is a command-line tool that helps to set up and manage Rust canister tests on the Internet Computer (IC) using.
It makes it easier to create a test project and includes the basic files and setup needed for both IC canisters and optionally EVM (Ethereum Virtual Machine) smart contracts.

The tool reads the `dfx.json` (must exist) and the `foundry.toml` (may exist) files in order to build the test environment automatically. It uses `pocket-ic` and `alloy` (foundry) to run tests.
The generated code and helpers provide:

- A simple way to start a test project.
- A single, easy-to-use interface for testing both IC and EVM parts.  
- Type checking and auto-completion support.
- Easy functions for deploying and calling canisters or contracts.

For more information, see the [ic-test Book](https://wasm-forge.github.io/ic-test/).

## Quick Overview

**ic-test** will:

- Read `dfx.json` to get canister details.  
- Read `foundry.toml` to get contract details.  
- Generate Rust types from Candid (`.did`) files.  
- Generate contract interfaces from Solidity (`.sol`) files.  
- Provide API to work with `.wasm` canisters and `.json` contract files in tests.

## Requirements

- [Rust]https://www.rust-lang.org/tools/install
- [DFX]https://internetcomputer.org/docs/building-apps/getting-started/install#installing-dfx-via-dfxvm – to build and locally deploy canisters.
- [Foundry]https://book.getfoundry.sh/getting-started/installation – optional, if you want to test EVM contract's interaction with canisters.

## Installation

```bash
cargo install ic-test
```

## Tool usage

```bash
ic-test <COMMAND> [OPTIONS]
```

Without arguments it starts in interactive mode to create a new test project. If an `ic-test.json` config file exists already, the "update" mode will regenerate the existing test project bindings.

### Create a new test project

```bash
ic-test new tests
```

- Creates a new test project in the `tests` folder.
- Looks for canisters and contracts, generates API bindings and a sample test.
- Generates the `ic-test.json` configuration file.
- Fails if the `tests` folder already exists, the user would need to choose a different name.


### Update/regenerate an existing test project

```bash
ic-test update
```

Regenerates bindings using the configuration in `ic-test.json`.


## Examples

For other examples, see https://github.com/wasm-forge/ic-test-examples.

## Licence 

Licensed under <a href="LICENSE">MIT license</a>.