From c10408b4c82a0e396bd987375992e4558668e80d Mon Sep 17 00:00:00 2001 From: Lesther Caballero Date: Fri, 21 Jun 2024 11:50:03 +0200 Subject: [PATCH] foundry example added (#16) * foundry example added * dependencies removed * dependencies removed from repo * code added * issue fixed * just counter included --------- Co-authored-by: Lesther Caballero --- .../.github/workflows/test.yml | 34 +++++++++++++++++++ Contract_deployment_foundry/.gitignore | 16 +++++++++ Contract_deployment_foundry/README.md | 15 ++++++++ Contract_deployment_foundry/foundry.toml | 10 ++++++ Contract_deployment_foundry/remappings.txt | 4 +++ .../script/Counter.s.sol | 12 +++++++ Contract_deployment_foundry/soldeer.lock | 12 +++++++ Contract_deployment_foundry/src/Counter.sol | 14 ++++++++ .../test/Counter.t.sol | 24 +++++++++++++ 9 files changed, 141 insertions(+) create mode 100644 Contract_deployment_foundry/.github/workflows/test.yml create mode 100644 Contract_deployment_foundry/.gitignore create mode 100644 Contract_deployment_foundry/README.md create mode 100644 Contract_deployment_foundry/foundry.toml create mode 100644 Contract_deployment_foundry/remappings.txt create mode 100644 Contract_deployment_foundry/script/Counter.s.sol create mode 100644 Contract_deployment_foundry/soldeer.lock create mode 100644 Contract_deployment_foundry/src/Counter.sol create mode 100644 Contract_deployment_foundry/test/Counter.t.sol diff --git a/Contract_deployment_foundry/.github/workflows/test.yml b/Contract_deployment_foundry/.github/workflows/test.yml new file mode 100644 index 0000000..9282e82 --- /dev/null +++ b/Contract_deployment_foundry/.github/workflows/test.yml @@ -0,0 +1,34 @@ +name: test + +on: workflow_dispatch + +env: + FOUNDRY_PROFILE: ci + +jobs: + check: + strategy: + fail-fast: true + + name: Foundry project + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + + - name: Run Forge build + run: | + forge --version + forge build --sizes + id: build + + - name: Run Forge tests + run: | + forge test -vvv + id: test diff --git a/Contract_deployment_foundry/.gitignore b/Contract_deployment_foundry/.gitignore new file mode 100644 index 0000000..f4626a8 --- /dev/null +++ b/Contract_deployment_foundry/.gitignore @@ -0,0 +1,16 @@ +# Compiler files +cache/ +out/ + +# Ignores development broadcast logs +!/broadcast +/broadcast/*/31337/ +/broadcast/**/dry-run/ + +# Docs +docs/ + +# Dotenv file +.env + +dependencies \ No newline at end of file diff --git a/Contract_deployment_foundry/README.md b/Contract_deployment_foundry/README.md new file mode 100644 index 0000000..880ccc5 --- /dev/null +++ b/Contract_deployment_foundry/README.md @@ -0,0 +1,15 @@ +# SWTRPRoxy with Foundry + +## Install + +`forge soldeer update` + +## Build + +`forge build` + +## Deploy + +To deploy run: +`forge create src/Counter.sol:Counter --rpc-url https://json-rpc.testnet.swisstronik.com --private-key ` + diff --git a/Contract_deployment_foundry/foundry.toml b/Contract_deployment_foundry/foundry.toml new file mode 100644 index 0000000..5ee29ca --- /dev/null +++ b/Contract_deployment_foundry/foundry.toml @@ -0,0 +1,10 @@ +[profile.default] +src = "src" +out = "out" +libs = ["lib", "dependencies"] + +# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options + +[dependencies] +"@openzeppelin-contracts" = { version = "5.0.2" } +forge-std = { version = "1.8.2" } \ No newline at end of file diff --git a/Contract_deployment_foundry/remappings.txt b/Contract_deployment_foundry/remappings.txt new file mode 100644 index 0000000..b978f65 --- /dev/null +++ b/Contract_deployment_foundry/remappings.txt @@ -0,0 +1,4 @@ +@openzeppelin/contracts=dependencies/@openzeppelin-contracts-5.0.2 +forge-std=dependencies/forge-std-1.8.2/src +@openzeppelin-contracts-5.0.2=dependencies/@openzeppelin-contracts-5.0.2 +@forge-std-1.8.2=dependencies/forge-std-1.8.2 \ No newline at end of file diff --git a/Contract_deployment_foundry/script/Counter.s.sol b/Contract_deployment_foundry/script/Counter.s.sol new file mode 100644 index 0000000..df9ee8b --- /dev/null +++ b/Contract_deployment_foundry/script/Counter.s.sol @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import {Script, console} from "forge-std/Script.sol"; + +contract CounterScript is Script { + function setUp() public {} + + function run() public { + vm.broadcast(); + } +} diff --git a/Contract_deployment_foundry/soldeer.lock b/Contract_deployment_foundry/soldeer.lock new file mode 100644 index 0000000..a493b24 --- /dev/null +++ b/Contract_deployment_foundry/soldeer.lock @@ -0,0 +1,12 @@ + +[[dependencies]] +name = "@openzeppelin-contracts" +version = "5.0.2" +source = "https://soldeer-revisions.s3.amazonaws.com/@openzeppelin-contracts/5_0_2_14-03-2024_06:11:59_contracts.zip" +checksum = "8bc4f0acc7c187771b878d46f7de4bfad1acad2eb5d096d9d05d34035853f5c3" + +[[dependencies]] +name = "forge-std" +version = "1.8.2" +source = "https://soldeer-revisions.s3.amazonaws.com/forge-std/1_8_2_19-05-2024_18:52:07_forge-std-1.8.2.zip" +checksum = "88a37e1d79f60b8aad08c7bd50a7a5ef973fc172b1495028d0725a17f5a4976c" diff --git a/Contract_deployment_foundry/src/Counter.sol b/Contract_deployment_foundry/src/Counter.sol new file mode 100644 index 0000000..aded799 --- /dev/null +++ b/Contract_deployment_foundry/src/Counter.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +contract Counter { + uint256 public number; + + function setNumber(uint256 newNumber) public { + number = newNumber; + } + + function increment() public { + number++; + } +} diff --git a/Contract_deployment_foundry/test/Counter.t.sol b/Contract_deployment_foundry/test/Counter.t.sol new file mode 100644 index 0000000..54b724f --- /dev/null +++ b/Contract_deployment_foundry/test/Counter.t.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import {Test, console} from "forge-std/Test.sol"; +import {Counter} from "../src/Counter.sol"; + +contract CounterTest is Test { + Counter public counter; + + function setUp() public { + counter = new Counter(); + counter.setNumber(0); + } + + function test_Increment() public { + counter.increment(); + assertEq(counter.number(), 1); + } + + function testFuzz_SetNumber(uint256 x) public { + counter.setNumber(x); + assertEq(counter.number(), x); + } +}