Skip to content

Contest2#323

Merged
Y-Nak merged 25 commits intoargotorg:mainfrom
Y-Nak:contest2
Mar 10, 2026
Merged

Contest2#323
Y-Nak merged 25 commits intoargotorg:mainfrom
Y-Nak:contest2

Conversation

@Y-Nak
Copy link
Copy Markdown
Member

@Y-Nak Y-Nak commented Mar 3, 2026

This PR is a successor to #276.

The main changes from #276 are

  1. Contract test is now integrated intocabal
  2. By default, tests fail if testrunner/evmone are missing (skip only with SOLCORE_CONTRACT_TESTS_ALLOW_SKIP=1)
  3. intx and blst are pinned in nix/evmone-pins.nix and checked against evmone’s own CMake pins at build time

mbenke and others added 19 commits November 28, 2025 13:18
Allow overriding paths and commands via environment variables:
- SOLCORE_CMD (default: cabal exec sol-core --)
- YULE_CMD (default: cabal run yule --)
- testrunner_exe (default: test/testrunner/testrunner)
- evmone (default: ~/.local/lib/libevmone.so)

This preserves the ability to run scripts outside of Nix builds while
allowing Nix to override these values as needed.
Documents:
- C++ testrunner architecture and components
- Contest integration test system
- Environment variable configuration
- Nix build system and packages
- Development workflow for local and Nix builds
Documents:
- Building the C++ testrunner with cmake
- Running integration tests manually and via Nix
- Distinction between Haskell unit tests and integration tests
- Test case structure and usage
- Using contest.sh for individual test execution
Adds parallel 'integration-tests' job that runs 'nix flake check' to
execute the C++ testrunner and contest integration tests on every PR.

The workflow now has two parallel jobs:
- build: Builds sol-core (existing)
- integration-tests: Runs full pipeline tests (new)
Removes branch restriction from pull_request trigger so the workflow
runs on all PRs regardless of target branch. Keeps push trigger
restricted to main branch to avoid duplicate runs.
Replaces separate 'build' and 'integration-tests' jobs with a single
'build-and-test' job that runs 'nix flake check'.

This is more efficient because:
- nix flake check builds sol-core as a dependency (no duplicate builds)
- Single job is simpler and clearer
- Still runs full integration test suite
Co-authored-by: Yoshitomo Nakanishi <yurayura.rounin.3@gmail.com>
Comment thread run_contests.sh Outdated
Comment thread testsol.sh Outdated
Copy link
Copy Markdown
Collaborator

@rodrigogribeiro rodrigogribeiro left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

Copy link
Copy Markdown
Collaborator

@mbenke mbenke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After checking out to a fresh dir and running cabal test I get an error


CMake Error at CMakeLists.txt:13 (find_package):
  By not providing "Findnlohmann_json.cmake" in CMAKE_MODULE_PATH this
  project has asked CMake to find a package configuration file provided by
  "nlohmann_json", but CMake did not find one.

  Could not find a package configuration file provided by "nlohmann_json"
  with any of the following names:

    nlohmann_jsonConfig.cmake
    nlohmann_json-config.cmake

  Add the installation prefix of "nlohmann_json" to CMAKE_PREFIX_PATH or set
  "nlohmann_json_DIR" to a directory containing one of the above files.  If
  "nlohmann_json" provides a separate development package or SDK, be sure it
  has been installed.


-- Configuring incomplete, errors occurred!

Then running git submodule update

$ git submodule update --init --depth 1 deps/nlohmann_json
remote: Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
fatal: remote error: upload-pack: not our ref a0e9fb1e638cfbb5b8b556b7c51eaa81977bad48
fatal: Fetched in submodule path 'deps/nlohmann_json', but it did not contain a0e9fb1e638cfbb5b8b556b7c51eaa81977bad48. Direct fetching of that commit failed.

This error seems to be silenced in the script:

    if [[ ! -f "$root_dir/deps/nlohmann_json/CMakeLists.txt" ]] && command -v git >/dev/null 2>&1; then
        git -C "$root_dir" submodule update --init --depth 1 deps/nlohmann_json >/dev/null 2>&1 || true
    fi

Running nix develop then cabal build and cabal test separately also does not help:

@mbenke
Copy link
Copy Markdown
Collaborator

mbenke commented Mar 4, 2026

Sorry, it partly my fault - it seems that the directory wasn't as clean as I thought - git worktree copied tainted submodules there. But the point about silencing the error still stands:

    if [[ ! -f "$root_dir/deps/nlohmann_json/CMakeLists.txt" ]] && command -v git >/dev/null 2>&1; then
        git -C "$root_dir" submodule update --init --depth 1 deps/nlohmann_json >/dev/null 2>&1 || true
    fi

causes errors to be silently ignored here and explode in cmake.

@Y-Nak
Copy link
Copy Markdown
Member Author

Y-Nak commented Mar 5, 2026

I'll look into this problem this weekend(I can't work Wednesday and Thursday this week).

@Y-Nak Y-Nak requested a review from mbenke March 10, 2026 00:36
Copy link
Copy Markdown
Collaborator

@mbenke mbenke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well done 👌

@Y-Nak Y-Nak merged commit 92f0523 into argotorg:main Mar 10, 2026
4 checks passed
@Y-Nak Y-Nak deleted the contest2 branch March 10, 2026 12:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants