diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 8e8a957ee31..98b718f5a1d 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -535,8 +535,8 @@ steps: key: windows-testing-bundle depends_on: - trigger-build-windows-artifacts - command: nix build -o result/windows-tests .#ci.artifacts.win64.tests - artifact_paths: [ "./result/windows-tests/**" ] + command: nix build -o windows-tests .#ci.artifacts.win64.tests + artifact_paths: [ "./windows-tests/**" ] agents: system: ${linux} @@ -547,8 +547,7 @@ steps: steps: - label: Windows Unit Tests command: | - cd test\e2e - bundle exec rake get_latest_windows_tests[%BUILDKITE_BRANCH%,cardano-wallet-tests-win64,any,latest] + buildkite-agent artifact download "windows-tests/cardano-wallet-tests-win64/*" . cd cardano-wallet-tests-win64 .\cardano-wallet-unit-test-unit.exe --color --jobs 1 --skip /Cardano.Wallet.DB.Sqlite/ +RTS -M2G -N2 agents: @@ -560,8 +559,7 @@ steps: - label: Windows Text Class Tests command: | - cd test\e2e - bundle exec rake get_latest_windows_tests[%BUILDKITE_BRANCH%,cardano-wallet-tests-win64,any,latest] + buildkite-agent artifact download "windows-tests/cardano-wallet-tests-win64/*" . cd cardano-wallet-tests-win64 .\text-class-test-unit.exe --color agents: diff --git a/scripts/buildkite/main/windows-e2e.bat b/scripts/buildkite/main/windows-e2e.bat index 9399fc68a47..b16d66834e2 100755 --- a/scripts/buildkite/main/windows-e2e.bat +++ b/scripts/buildkite/main/windows-e2e.bat @@ -1,7 +1,5 @@ set PATH=%PATH%;C:\Users\hal\AppData\Local\Microsoft\WinGet\Links - -cd test\e2e -call bundle install -call bundle exec rake get_latest_windows_tests[%BUILDKITE_BRANCH%,bins,any,latest] -bins\cardano-wallet-integration-test-e2e.exe +buildkite-agent artifact download "windows-tests/cardano-wallet-tests-win64/*" . +cd cardano-wallet-tests-win64 +cardano-wallet-integration-test-e2e.exe exit /b %ERRORLEVEL% diff --git a/test/e2e/.envrc b/test/e2e/.envrc deleted file mode 100644 index fdb3995c2fe..00000000000 --- a/test/e2e/.envrc +++ /dev/null @@ -1,17 +0,0 @@ -if [ -e .envrc-override ]; then - # This env file will trump lorri, if present. - source_env .envrc-override -elif type lorri &>/dev/null; then - eval "$(lorri direnv)" -else - # Fall back to using direnv's builtin nix support - # to prevent bootstrapping problems. - # It's definitely better to use lorri, because direnv won't - # be fast like this. - use flake -fi - -# Source a user-specific config in .envrc-local at the project -# top-level. -# This file can contain your customizations of `env.rb`. -source_env_if_exists ../../.envrc-local diff --git a/test/e2e/.gitattributes b/test/e2e/.gitattributes deleted file mode 100644 index bb362ff9516..00000000000 --- a/test/e2e/.gitattributes +++ /dev/null @@ -1,9 +0,0 @@ -# Pin line endings for genesis files. -# -# Genesis files are -# * human-readable text data -# * but they also have a hash. -# -# `cardano-node` is sensitive to the line endings in the genesis file. -# -/state/configs/*/*.json text eol=lf diff --git a/test/e2e/.gitignore b/test/e2e/.gitignore deleted file mode 100644 index 7286e195758..00000000000 --- a/test/e2e/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -# data for tests -/bins/ -/state/logs/ -/state/node_db/ -/state/wallet_db/ - -# secrets -/fixtures/fixture_wallets.json - -# local environment variables -/.envrc-local - -# rspec reports and failure tracking -/spec/reports/ -.rspec_status - -# temporary files -/.bundle/ -/tmp/ -/cardano-wallet-*/ -/binaryDist/ -*binary-dist* -*.prv - -# rake -/.rakeTasks/ diff --git a/test/e2e/.rake_tasks~ b/test/e2e/.rake_tasks~ deleted file mode 100644 index f63a6ecdfb9..00000000000 --- a/test/e2e/.rake_tasks~ +++ /dev/null @@ -1,21 +0,0 @@ -clean_bins -clean_logs -clean_node_db -clean_wallet_db -datetime -display_versions -secrets_decode -secrets_encode -fixture_wallets_template -get_docker_logs -get_latest_bins -get_latest_configs -get_latest_node_db -run_on -spec -setup -start_node_and_wallet -stop_node_and_wallet -start_wallet_light -stop_wallet_light -wait_until_node_synced diff --git a/test/e2e/.rspec b/test/e2e/.rspec deleted file mode 100644 index 34c5164d9b5..00000000000 --- a/test/e2e/.rspec +++ /dev/null @@ -1,3 +0,0 @@ ---format documentation ---color ---require spec_helper diff --git a/test/e2e/.rubocop.yml b/test/e2e/.rubocop.yml deleted file mode 100644 index bee05376449..00000000000 --- a/test/e2e/.rubocop.yml +++ /dev/null @@ -1,44 +0,0 @@ -AllCops: - TargetRubyVersion: 3.1 - NewCops: enable - -Metrics/AbcSize: - Enabled: false - -Metrics/ModuleLength: - Enabled: false - -Metrics/BlockLength: - Enabled: false - -Metrics/ClassLength: - Enabled: false - -Layout/LineLength: - Enabled: false - -Layout/TrailingWhitespace: - Enabled: false - -Style/RedundantLineContinuation: - Enabled: false - -Metrics/MethodLength: - Enabled: false - -Metrics/ParameterLists: - Max: 15 - MaxOptionalParameters: 10 - -Naming/VariableNumber: - CheckSymbols: false - -Naming/MethodParameterName: - Enabled: false - -Style/HashSyntax: - EnforcedStyle: no_mixed_keys - EnforcedShorthandSyntax: either - -Style/MixinUsage: - Enabled: false \ No newline at end of file diff --git a/test/e2e/.ruby-version b/test/e2e/.ruby-version deleted file mode 100644 index ef538c28109..00000000000 --- a/test/e2e/.ruby-version +++ /dev/null @@ -1 +0,0 @@ -3.1.2 diff --git a/test/e2e/Gemfile b/test/e2e/Gemfile deleted file mode 100644 index 9e6b7b86c7e..00000000000 --- a/test/e2e/Gemfile +++ /dev/null @@ -1,12 +0,0 @@ -# frozen_string_literal: true - -source 'https://rubygems.org' - -gem 'cardano_wallet', '~> 0.4.2' -# gem 'cardano_wallet', path: "~/wb/cardano_wallet" -gem 'blake2b', '0.10.0' -gem 'buildkit', '1.5' -gem 'cbor', '0.5.9.8' -gem 'mustache', '1.1.1' -gem 'rake', '12.3.3' -gem 'rspec', '3.11.0' diff --git a/test/e2e/Gemfile.lock b/test/e2e/Gemfile.lock deleted file mode 100644 index 18bfb1b8c2b..00000000000 --- a/test/e2e/Gemfile.lock +++ /dev/null @@ -1,58 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - addressable (2.8.1) - public_suffix (>= 2.0.2, < 6.0) - bip_mnemonic (0.0.4) - blake2b (0.10.0) - buildkit (1.5.0) - sawyer (>= 0.6) - cardano_wallet (0.4.2) - bip_mnemonic (= 0.0.4) - httparty (~> 0.21.0) - cbor (0.5.9.8) - diff-lcs (1.5.0) - faraday (2.7.1) - faraday-net_http (>= 2.0, < 3.1) - ruby2_keywords (>= 0.0.4) - faraday-net_http (3.0.2) - httparty (0.21.0) - mini_mime (>= 1.0.0) - multi_xml (>= 0.5.2) - mini_mime (1.1.2) - multi_xml (0.6.0) - mustache (1.1.1) - public_suffix (5.0.1) - rake (12.3.3) - rspec (3.11.0) - rspec-core (~> 3.11.0) - rspec-expectations (~> 3.11.0) - rspec-mocks (~> 3.11.0) - rspec-core (3.11.0) - rspec-support (~> 3.11.0) - rspec-expectations (3.11.1) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.11.0) - rspec-mocks (3.11.1) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.11.0) - rspec-support (3.11.1) - ruby2_keywords (0.0.5) - sawyer (0.9.2) - addressable (>= 2.3.5) - faraday (>= 0.17.3, < 3) - -PLATFORMS - ruby - -DEPENDENCIES - blake2b (= 0.10.0) - buildkit (= 1.5) - cardano_wallet (~> 0.4.2) - cbor (= 0.5.9.8) - mustache (= 1.1.1) - rake (= 12.3.3) - rspec (= 3.11.0) - -BUNDLED WITH - 2.4.22 diff --git a/test/e2e/README.md b/test/e2e/README.md deleted file mode 100644 index 8df837cefe2..00000000000 --- a/test/e2e/README.md +++ /dev/null @@ -1,174 +0,0 @@ -# E2E testing - -E2E functional tests of cardano-wallet are running nightly on [cardano preprod testnet](https://book.world.dev.cardano.org/environments.html). Running tests against public testnet allows to exercise cardano-wallet on environment close to production (mainnet) utilizing and integrating maximally all components of the Cardano ecosystem like Stake pools, SMASH, metadata token server etc. - - -## Running tests - -In order to run tests one needs to [have ruby](https://www.ruby-lang.org/en/documentation/installation/) (at least 3.1.2). - -### Configuring test project -1. Get necessary _gems_. -```bash -cd test/e2e -bundle install -``` -2. Decrypt secret files using `$TESTS_E2E_FIXTURES` secret: - - `fixture_wallets.json.gpg` containing mnemonics of testnet fixture wallets - -```bash -export TESTS_E2E_FIXTURES=******* -rake secrets_decode -``` -> :information_source: **_TESTS_E2E_FIXTURES_** secret -Note that this step is also executed on very first test run. -> :information_source: **_TESTS_E2E_FIXTURES_** is also kept in the team's 1Password. - -#### Fixture wallets -The command `rake secrets_decode` can be used to decode the file [fixture_wallets.json.gpg](https://github.com/cardano-foundation/cardano-wallet/blob/master/test/e2e/fixtures/fixture_wallets.json.gpg) into a plain JSON file named `fixture_wallets.json`. This file contains mnemonic sentences of the wallets that are utilized in tests. The test framework will retrieve these wallets from the file. It is important to note that there are separate sets of wallets for different operating systems, namely Linux, MacOS, and Windows. This allows tests to be run in parallel on different operating systems. - -#### Fixture wallets update -If there is a need to update the mnemonics to new ones, it is certainly possible. After making the updates, remember to use the `rake secrets_encode` command to encode the updated plain JSON file into a GPG-encoded file. The updated GPG file then needs to be pushed to the repository so that it can be used by the continuous integration (CI) system. - -> :information_source: There is a utility command `rake fixture_wallets_template` which generates the file `fixture_wallets.json` from scratch with new mnemonic sentences. - -Please note that the wallets used in tests must have ADA and specific assets on their balance. Test ADA can be obtained from the [Faucet](https://docs.cardano.org/cardano-testnet/tools/faucet/). The assets required on the wallet's balance are: - -- SadCoin (with [metadata](https://metadata.world.dev.cardano.org/metadata/ee1ce9d7560f48a4ba3867037dbec2d8fed776d94dd6b00a35309073)) -- HappyCoin (with [metadata](https://metadata.world.dev.cardano.org/metadata/919e8a1922aaa764b1d66407c6f62244e77081215f385b60a62091494861707079436f696e)) - -Both assets have metadata in the [Testnet Metadata Registry](https://github.com/input-output-hk/metadata-registry-testnet), and there are tests in place to ensure that the wallet reads data from there correctly. Both assets can be minted outside of the wallet using tools such as `cardano-cli` or [token-minter](https://github.com/piotr-iohk/token_minter), and then sent to the balances of the fixture wallets. Policy scripts and keys required for minting are availeble in [tests/e2e/fixtuers/wallet_assets](https://github.com/cardano-foundation/cardano-wallet/tree/master/test/e2e/fixtures/wallet_assets). - -#### Further test setup -There may be certain tests that require additional actions to be performed before they can be successfully executed. In such cases, the test will fail and display an appropriate message with instructions. An example of such a test is `AlwaysFails.plutus with collateral return to the wallet`, which requires a specific UTXO to be set up on the testnet where the test will be executed. This setup is a one-time operation and is only necessary when running tests on a new testnet or when the existing testnet has been reset. The scenario is accompanied by detailed comments and step-by-step instructions on how to proceed. If the required actions have not been taken, the test will fail and display the appropriate message. - -### Running all tests -In order to run all `e2e` tests one can simply run single [rake](https://github.com/ruby/rake) task: -```bash -$ rake run_on[preprod] -``` -This master task is performing also all the necessary configuration steps (i.e. getting latest testnet configs and wallet/node binaries from [Cardano Book](https://book.world.dev.cardano.org/environments.html), starting everything up). All steps can also be executed as separate tasks , i.e.: - -```bash -$ rake secrets_decode -$ rake get_latest_bins -$ rake get_latest_configs[preprod] -$ rake start_node_and_wallet[preprod] -$ rake wait_until_node_synced -$ rake spec -$ rake stop_node_and_wallet[preprod] -``` -> :information_source: **_Linux / MacOS_** -cardano-node and cardano-wallet are started as separate [screen](https://www.gnu.org/software/screen/manual/screen.html) sessions. One can attach to the respective session using: ->```bash ->$ screen -r NODE_preprod ->$ screen -r WALLET_preprod ->``` - -> :information_source: **_Windows_** -cardano-node and cardano-wallet are started as separate Windows services using [nssm](https://nssm.cc/) tool. One can examine services using Windows service manager like `services.msc`. - -> :information_source: **_Docker_** -One can also start tests against cardano-wallet docker. There is docker-compose-test.yml provided that includes cardano-node and cardano-wallet. To start it several env variables need to be set to feed docker-compose: ->```bash ->NETWORK=preprod \ ->TESTS_E2E_TOKEN_METADATA=https://metadata.world.dev.cardano.org/ \ ->WALLET=dev-master \ ->NODE=10.1.4 \ ->NODE_CONFIG_PATH=`pwd`/state/configs/$NETWORK \ ->DATA=`pwd`/state/node_db/$NETWORK ->docker-compose -f docker-compose-test.yml up ->``` -> Then running tests against docker is just: ->```bash ->$ rake wait_until_node_synced ->$ rake spec ->``` - -#### Running tests against local wallet -One can also run tests against `cardano-wallet` and `cardano-node` which are specified on machine's `$PATH`: - -```bash -$ TESTS_E2E_BINDIR="" rake run_on[testnet] -``` -Running tests as such skips downloading latest wallet and node binaries. - -### Test artifacts - -By default following locations are used for different artifacts used by the tests: -- `./bins` - location for wallet and node binaries (will be downloaded here from [Buildkite](https://buildkite.com/cardano-foundation/cardano-wallet)) -- `./state` - wallet/node databases, logs and configs - -Locations are relative to `test/e2e` directory. -Default values can be changed by providing environment variables, for instance: - -```bash -TESTS_E2E_STATEDIR=~/state \ -TESTS_E2E_BINDIR=~/bins \ -rake run_on[preprod] -``` -Full list of environment variables is available in `e2e/env.rb`. - -### Running specific tests -There are two types of tests within the suite: - - `e2e` - tests that require node and wallet to be synced with the network (i.e. `rake wait_until_node_synced` step needs to pass before running them) - - `non-e2e` - tests do not require node to be fully synced - -One can run specific tests using by providing `SPEC` or `SPEC_OPTS` arguments to the rake task. For example: - - - run all tests (by default it'll download binaries from Hydra and wait for node to be synced before starting tests) - ```ruby - $ rake run_on[preprod] - ``` - - run only `e2e` tests - ```ruby - $ rake run_on[preprod] SPEC_OPTS="-t e2e" - ``` - - run only `non-e2e` tests on downloaded binaries and don't wait for node to be synced - ```ruby - $ rake run_on[preprod,no-sync] SPEC_OPTS="-t ~e2e" - ``` - - run only tests matching specific string - ```ruby - $ rake run_on[preprod] SPEC_OPTS="-e 'CardanoWallet::Shelley::Wallets'" - ``` - - run only specific test identified by line of test code against node and wallet from the `$PATH` (skips downloading from CI) - ```ruby - $ TESTS_E2E_BINDIR="" rake run_on[preprod] SPEC=spec/shelley_spec.rb:9 - ``` - ->:information_source: Tests can be also executed using `rspec`. - -### Skipping / making test pending - -When test is failing due to a bug it can be marked as `pending`. This mark expects test to fail. When such test actually passes the report will indicate such test as failure indicating that it can be turned on again. - -```ruby -it "Wallet can make multi-address transaction" do - pending "ADP-777 - Failures on multi-address transactions" - ... -end -``` - -Test can be also skipped, so it is not executed at all. - -```ruby -it "Wallet can show utxo distribution" do - skip "This functionality works intermittently - to be investigated" - ... -end -``` - -### Running tests from CI - -There are several steps in the Buildkite pipeline for testing against different platforms (Linux, MacOS, Windows), which can be triggered manually if desired. - -#### Node DB cache - -For speeding up execution in wallet's full mode we use cardano-node DB from cache. Thanks to this we don't have to wait for hours on each execution until cardano-node is synced with the chain. - -## Documentation - -Cardano-wallet-rb repository: https://github.com/piotr-iohk/cardano-wallet-rb. - -Ruby doc: https://piotr-iohk.github.io/cardano-wallet-rb/master/. diff --git a/test/e2e/Rakefile b/test/e2e/Rakefile deleted file mode 100644 index 9cf67096f85..00000000000 --- a/test/e2e/Rakefile +++ /dev/null @@ -1,440 +0,0 @@ -# frozen_string_literal: true - -require 'rspec/core/rake_task' -require 'cardano_wallet' -require_relative 'env' -require_relative 'helpers/utils' -require_relative 'helpers/buildkite' -require 'io/console' - -include Helpers::Utils - -$stdout.sync = true - -STATE = absolute_path ENV.fetch('TESTS_E2E_STATEDIR', nil) -CONFIGS = absolute_path ENV.fetch('CARDANO_NODE_CONFIGS', nil) -LOGS = absolute_path ENV.fetch('TESTS_LOGDIR', nil) -NODE_DB = absolute_path ENV.fetch('TESTS_NODE_DB', nil) -WALLET_DB = absolute_path ENV.fetch('TESTS_WALLET_DB', nil) -NODE_SOCKET_PATH = ENV.fetch('CARDANO_NODE_SOCKET_PATH', nil) - -BINS = absolute_path ENV.fetch('TESTS_E2E_BINDIR', nil) - -FIXTURES_FILE = absolute_path ENV.fetch('TESTS_E2E_FIXTURES_FILE', nil) -FIXTURES_SECRET = ENV.fetch('TESTS_E2E_FIXTURES', nil) - -TOKEN_METADATA = ENV.fetch('TESTS_E2E_TOKEN_METADATA', nil) -WALLET_PORT = ENV.fetch('WALLET_PORT', nil) - -path_separator = win? ? ';' : ':' -ENV['PATH'] = "#{BINS}#{path_separator}#{ENV.fetch('PATH', nil)}" - -RSpec::Core::RakeTask.new(:spec) -task default: :spec - -task :secrets_encode do - desc 'Encode secrets using $TESTS_E2E_FIXTURES phrase' - - log ">> Encoding #{FIXTURES_FILE}..." - log `gpg --pinentry-mode loopback --passphrase=#{FIXTURES_SECRET} --symmetric --output=#{FIXTURES_FILE}.gpg #{FIXTURES_FILE}` -end - -task :secrets_decode do - desc 'Decode secrets using $TESTS_E2E_FIXTURES phrase' - - if File.exist?(FIXTURES_FILE) - log ">> Skipping decoding #{FIXTURES_FILE}.gpg... #{FIXTURES_FILE} already exists!" - else - log ">> Decoding #{FIXTURES_FILE}.gpg..." - log `gpg --pinentry-mode loopback --yes --passphrase=#{FIXTURES_SECRET} --output #{FIXTURES_FILE} --decrypt #{FIXTURES_FILE}.gpg` - end -end - -task :fixture_wallets_template do - log ">> Creating #{FIXTURES_FILE}" - utils = CardanoWallet.new.utils - fixture_wallets = { linux: { - fixture: { shelley: { mnemonics: utils.mnemonic_sentence(24) }, - icarus: { mnemonics: utils.mnemonic_sentence(24) }, - random: { mnemonics: utils.mnemonic_sentence(24) }, - shared: { mnemonics: utils.mnemonic_sentence(24) }, - shared2: { mnemonics: utils.mnemonic_sentence(24) } }, - target: { shelley: { mnemonics: utils.mnemonic_sentence(24) } } - }, - macos: { - fixture: { shelley: { mnemonics: utils.mnemonic_sentence(24) }, - icarus: { mnemonics: utils.mnemonic_sentence(24) }, - random: { mnemonics: utils.mnemonic_sentence(24) }, - shared: { mnemonics: utils.mnemonic_sentence(24) }, - shared2: { mnemonics: utils.mnemonic_sentence(24) } }, - target: { shelley: { mnemonics: utils.mnemonic_sentence(24) } } - }, - windows: { - fixture: { shelley: { mnemonics: utils.mnemonic_sentence(24) }, - icarus: { mnemonics: utils.mnemonic_sentence(24) }, - random: { mnemonics: utils.mnemonic_sentence(24) }, - shared: { mnemonics: utils.mnemonic_sentence(24) }, - shared2: { mnemonics: utils.mnemonic_sentence(24) } }, - target: { shelley: { mnemonics: utils.mnemonic_sentence(24) } } - }, - currency_contract_wallet: { mnemonics: utils.mnemonic_sentence(24) } } - if File.exist?(FIXTURES_FILE) - err = " - File #{FIXTURES_FILE} already exists! - I don't want to overwrite it in case it - contains fixture wallets already... - " - warn err - else - File.write(FIXTURES_FILE, JSON.pretty_generate(fixture_wallets)) - end -end - -task :clean_logs, [:env] do |_task, args| - log '>> Removing logs' - log_dir = File.join(LOGS, args[:env]) - rm_files(log_dir) -end - -task :clean_node_db, [:env] do |_task, args| - log '>> Removing node_db' - rm_files(File.join(NODE_DB, args[:env])) - rm_files(File.join(NODE_DB, "db-#{args[:env]}.tar.gz")) -end - -task :clean_wallet_db, [:env] do |_task, args| - log '>> Removing wallet_db' - rm_files(File.join(WALLET_DB, args[:env])) -end - -task :clean_bins do - log '>> Removing old bins' - rm_files(BINS) -end - -task :wait_until_node_synced do - log '>> Waiting for node to be synced' - - network = CardanoWallet.new.misc.network - # allow 180 mins for connecting to the node in case it needs to replay ledger - timeout = 180 * 60 - current_time = Time.now - timeout_treshold = current_time + timeout - log "Timeout: #{timeout}s" - log "Current time: #{current_time}" - log "Threshold: #{timeout_treshold}" - log 'Waiting for node to start...' - begin - current_time = Time.now - while network.information['sync_progress']['status'] == 'syncing' - log "Syncing node... #{network.information['sync_progress']['progress']['quantity']}%" - - sleep 5 - end - rescue StandardError => e - if current_time <= timeout_treshold - log "Retrying after error #{e}" - sleep 5 - retry - end - raise("[#{Time.now}] Could not connect to wallet within #{timeout} seconds, last error: #{e}") - end - - log '>> Cardano-node and cardano-wallet are synced! <<' -end - -## -# `rake start_node_and_wallet[testnet]' assumes cardano-node and cardano-wallet in $TESTS_E2E_BINDIR -task :start_node_and_wallet, [:env] do |_task, args| - log '>> Setting up cardano-node and cardano-wallet' - - bin_dir = BINS == '' ? BINS : "#{BINS}/" - log ">> Using binaries from '#{bin_dir}'" - config_dir = File.join(CONFIGS, args[:env]) - log ">> Using config directory '#{config_dir}'" - log_dir = File.join(LOGS, args[:env]) - log ">> Using log directory '#{log_dir}'" - wallet_db_dir = File.join(WALLET_DB, args[:env]) - log ">> Using wallet_db directory '#{wallet_db_dir}'" - node_db_dir = File.join(NODE_DB, args[:env]) - log ">> Using node_db directory '#{node_db_dir}'" - cd = Dir.pwd - mk_dir(STATE) - mk_dir(log_dir) - network = args[:env] == 'mainnet' ? '--mainnet' : "--testnet #{config_dir}/byron-genesis.json" - - if win? - # create cardano-node.bat file - node_cmd = "#{bin_dir}cardano-node.exe run --config #{config_dir}/config.json --topology #{config_dir}/topology.json --database-path #{node_db_dir} --socket-path \\\\.\\pipe\\cardano-node-testnet" - log ">> Starting cardano-node with command: #{node_cmd}" - File.write('cardano-node.bat', node_cmd) - - # create cardano-wallet.bat file - wallet_cmd = "#{bin_dir}cardano-wallet.exe serve --port #{WALLET_PORT} --node-socket \\\\.\\pipe\\cardano-node-testnet #{network} --database #{wallet_db_dir} --token-metadata-server #{TOKEN_METADATA}" - File.write('cardano-wallet.bat', wallet_cmd) - - install_node = "nssm install cardano-node #{cd}/cardano-node.bat" - install_wallet = "nssm install cardano-wallet #{cd}/cardano-wallet.bat" - log_stdout_node = "nssm set cardano-node AppStdout #{log_dir}/node.log" - log_stderr_node = "nssm set cardano-node AppStderr #{log_dir}/node.log" - log_stdout_wallet = "nssm set cardano-wallet AppStdout #{log_dir}/wallet.log" - log_stderr_wallet = "nssm set cardano-wallet AppStderr #{log_dir}/wallet.log" - start_node = 'nssm start cardano-node' - start_wallet = 'nssm start cardano-wallet' - - - # echo PATH to help troubleshoot command issues - path = `echo %PATH%` - log ">> path: #{path}" - - cmd install_node - cmd install_wallet - cmd log_stdout_node - cmd log_stderr_node - cmd log_stdout_wallet - cmd log_stderr_wallet - cmd start_node - cmd start_wallet - - else - start_node = <<~CMD - #{bin_dir}cardano-node run \ - --config #{config_dir}/config.json \ - --topology #{config_dir}/topology.json \ - --database-path #{node_db_dir} \ - --socket-path #{NODE_SOCKET_PATH} - CMD - log ">> Starting cardano-node with command: #{start_node}" - # wait a couple of seconds for the node to provide a socket file, at least - sleep 5.0 - - start_wallet = <<~CMD - #{bin_dir}cardano-wallet serve #{network} \ - --port #{WALLET_PORT} \ - --node-socket #{NODE_SOCKET_PATH} \ - --database #{wallet_db_dir} \ - --token-metadata-server #{TOKEN_METADATA} - CMD - log ">> Starting cardano-wallet with command: #{start_wallet}" - cmd <<~CMD - screen -dmS NODE_#{args[:env]} -L \ - -Logfile #{log_dir}/node.log \ - #{start_node} - CMD - cmd <<~CMD - screen -dmS WALLET_#{args[:env]} -L \ - -Logfile #{log_dir}/wallet.log \ - #{start_wallet} - CMD - cmd 'screen -ls', display_result: true - end -end - -task :stop_node_and_wallet, [:env] do |_task, args| - log '>> Stopping cardano-node and cardano-wallet' - - if win? - cmd 'nssm stop cardano-wallet' - cmd 'nssm stop cardano-node' - - cmd 'nssm remove cardano-wallet confirm' - cmd 'nssm remove cardano-node confirm' - else - cmd "screen -S WALLET_#{args[:env]} -X at '0' stuff '^C'" - cmd "screen -XS WALLET_#{args[:env]} quit" - cmd "screen -S NODE_#{args[:env]} -X at '0' stuff '^C'" - cmd "screen -XS NODE_#{args[:env]} quit" - end -end - -task :display_versions, [:bin_dir] do |_task, args| - puts "\n >> cardano-node and cardano-wallet versions:" - bin_dir = args[:bin_dir] || BINS - - if win? - cmd "#{bin_dir}/cardano-wallet.exe version", display_result: true - cmd "#{bin_dir}/cardano-node.exe version", display_result: true - else - cmd "#{bin_dir}/cardano-wallet version", display_result: true - cmd "#{bin_dir}/cardano-node version", display_result: true - end -end - -task :get_latest_windows_tests, [:branch, :destination, :status, :build] do |_task, args| - destination = args[:destination] || 'cardano-wallet-tests-win64' - job_key = 'windows-testing-bundle' - bk = Buildkite.new - status = args[:status] - branch = args[:branch] || 'master' - build = args[:build] || 'latest' - options = status == 'any' ? { branch: branch } : { branch: branch, state: status } - last_build = - build == 'latest' ? bk.last_build_number(options) : build - log "Latest passing buildkite '#{bk.pipeline}' pipeline for branch '#{branch}' is #{last_build}" - jobs = bk.jobs(last_build) - mk_dir(destination) - log "Getting '#{job_key}' artifact 👇" - bk.get_artifacts(last_build, jobs[job_key], destination, 'cardano-wallet-tests-win64.zip', unzip: true) -end - -task :get_bins, [:nb] do |_task, args| - log ">> Getting node and wallet binaries from Buildkite into #{BINS}" - last_build = args[:nb] || 1 - bk = Buildkite.new - log "Latest passing buildkite '#{bk.pipeline}' pipeline build is #{last_build}" - jobs = bk.jobs(last_build) - mk_dir(BINS) - - if linux? - job_key = 'linux-package' - log "Getting '#{job_key}' artifact 👇" - bk.get_artifacts(last_build, jobs[job_key], BINS) - elsif win? - job_key = 'windows-package' - log "Getting '#{job_key}' artifact 👇" - bk.get_artifacts(last_build, jobs[job_key], BINS) - elsif mac? - job_key = 'macos-package' - log "Getting '#{job_key}' artifact 👇" - bk.get_artifacts(last_build, jobs[job_key], BINS) - end -end - -task :get_latest_bins, [:branch, :state] do |_task, args| - log ">> Getting latest node and wallet binaries from Buildkite into #{BINS}" - branch = args[:branch] || 'master' - state = args[:state] || 'any' - filter = state == 'any' ? { branch: branch } : { branch: branch, state: state } - bk = Buildkite.new - last_build = bk.last_build_number(filter) - log "Latest #{filter} buildkite '#{bk.pipeline}' pipeline build is #{last_build}" - jobs = bk.jobs(last_build) - mk_dir(BINS) - - if linux? - job_key = 'linux-package' - log "Getting '#{job_key}' artifact 👇" - bk.get_artifacts(last_build, jobs[job_key], BINS) - elsif win? - job_key = 'windows-package' - log "Getting '#{job_key}' artifact 👇" - bk.get_artifacts(last_build, jobs[job_key], BINS) - elsif mac? - job_key = 'macos-intel-package' - log "Getting '#{job_key}' artifact 👇" - bk.get_artifacts(last_build, jobs[job_key], BINS) - end -end - -task :get_latest_configs, [:env] do |_task, args| - env = args[:env] - out = File.join(CONFIGS, env) - log ">> Getting latest configs in #{out} for '#{env}'" - if File.exist?(out) - # The config directory is probably a /nix/store path - log ">> Using config directory '#{out}'" - else - log ">> Getting latest configs for '#{env}' into #{CONFIGS}" - - base_url = get_latest_configs_base_url(env) - mk_dir(STATE) - mk_dir(CONFIGS) - mk_dir(out) - log ">> Getting latest configs from #{base_url}" - config_file = File.join(out, 'config.json') - wget("#{base_url}config.json", config_file) - wget("#{base_url}byron-genesis.json", "#{out}/byron-genesis.json") - wget("#{base_url}shelley-genesis.json", "#{out}/shelley-genesis.json") - wget("#{base_url}alonzo-genesis.json", "#{out}/alonzo-genesis.json") - wget("#{base_url}conway-genesis.json", "#{out}/conway-genesis.json") - wget("#{base_url}topology.json", "#{out}/topology.json") - log ">> Configs are ready in #{out}" - config_dir = File.join(CONFIGS, args[:env]) - # Temporary/ad-hoc config changes for cardano-node: - config_json = JSON.parse(File.read("#{config_dir}/config.json")) - config_json['EnableP2P'] = false - File.write("#{config_dir}/config.json", JSON.pretty_generate(config_json)) - - topology = %({ - "Producers": [ - { - "addr": "#{ENV.fetch('NETWORK', nil)}-node.world.dev.cardano.org", - "port": 30000, - "valency": 2 - } - ] - }) - File.write("#{config_dir}/topology.json", topology) - log ">> Configs are ready in #{out}" - end -end - -task :get_docker_logs do - log ">> Getting docker logs into #{LOGS}" - - mk_dir(LOGS) - node_logfile = `docker inspect --format='{{.LogPath}}' cardano-node`.gsub("\n", '') - wallet_logfile = `docker inspect --format='{{.LogPath}}' cardano-wallet`.gsub("\n", '') - - cmd "sudo cp #{node_logfile} #{LOGS}/node.log" - cmd "sudo cp #{wallet_logfile} #{LOGS}/wallet.log" - - # Add permissions so logs can be uploaded from workflow - cmd "sudo chmod a+rw #{LOGS}/node.log" - cmd "sudo chmod a+rw #{LOGS}/wallet.log" -end - -## -# Setup utility task getting node and wallet binaries, configs and decoding fixtures -# so it is ready to start -task :setup, [:env, :branch, :skip_bins, :skip_configs] do |_task, args| - log '>> Getting latest binaries and configs and decoding fixtures...' - env = args[:env] - branch = args[:branch] || 'master' - - if args[:skip_bins] - log '>> Skipping getting latest binaries. Will test wallet and node from $PATH.' - else - Rake::Task[:get_latest_bins].invoke(branch) - end - - if args[:skip_configs] - log '>> Skipping getting latest configs.' - else - log '>> Getting latest configs...' - Rake::Task[:get_latest_configs].invoke(env) - end - - Rake::Task[:secrets_decode].invoke -end - -task :run_on, [:env, :sync_strategy, :skip_bins, :skip_configs, :branch] do |_task, args| - log '>> Setting up env and running tests...' - log "TESTS_E2E_STATEDIR=#{STATE}" - env = args[:env] - sync_strategy = args[:sync_strategy] || :sync - branch = args[:branch] || nil - - Rake::Task[:setup].invoke(env, branch, args[:skip_bins], args[:skip_configs]) - Rake::Task[:display_versions].invoke - - Rake::Task[:stop_node_and_wallet].invoke(env) - Rake::Task[:start_node_and_wallet].invoke(env) - - if sync_strategy == 'no-sync' - log '>> Skipping waiting for node to be synced...' - else - Rake::Task[:wait_until_node_synced].invoke - end - - Rake::Task[:spec].invoke - Rake::Task[:stop_node_and_wallet].invoke(env) -end - -## -# print datetime in format that's consistent across different OS -# $ rake datetime -# 20211122-94332 -task :datetime do - puts Time.now.strftime('%Y%m%d-%H%M%S') -end diff --git a/test/e2e/flake.lock b/test/e2e/flake.lock deleted file mode 100644 index 16bdea31b2e..00000000000 --- a/test/e2e/flake.lock +++ /dev/null @@ -1,2784 +0,0 @@ -{ - "nodes": { - "CHaP": { - "flake": false, - "locked": { - "lastModified": 1733408643, - "narHash": "sha256-IH5nYTjx+CYAK4zQAkOs475X+AOhP/GPgwXm5LQHsEE=", - "owner": "intersectmbo", - "repo": "cardano-haskell-packages", - "rev": "e062328804c933d296e5956c989b326ea3c69eeb", - "type": "github" - }, - "original": { - "owner": "intersectmbo", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_2": { - "flake": false, - "locked": { - "lastModified": 1735857786, - "narHash": "sha256-X6Fp2uU++62rgaH4J1pIN5AalfV7f9rM5dmFaByMWqU=", - "owner": "intersectmbo", - "repo": "cardano-haskell-packages", - "rev": "b9eaf0bbe60ccf64b7afc969b79f9820a4534bcf", - "type": "github" - }, - "original": { - "owner": "intersectmbo", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "HTTP": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_2": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "blank": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "blank", - "type": "github" - } - }, - "blank_2": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "blank", - "type": "github" - } - }, - "blst": { - "flake": false, - "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", - "type": "github" - }, - "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", - "type": "github" - } - }, - "blst_2": { - "flake": false, - "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", - "type": "github" - }, - "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", - "type": "github" - } - }, - "cabal-32": { - "flake": false, - "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", - "type": "github" - } - }, - "cabal-32_2": { - "flake": false, - "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34": { - "flake": false, - "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34_2": { - "flake": false, - "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-36": { - "flake": false, - "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, - "cabal-36_2": { - "flake": false, - "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, - "call-flake": { - "locked": { - "lastModified": 1687380775, - "narHash": "sha256-bmhE1TmrJG4ba93l9WQTLuYM53kwGQAjYHRvHOeuxWU=", - "owner": "divnix", - "repo": "call-flake", - "rev": "74061f6c241227cd05e79b702db9a300a2e4131a", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "call-flake", - "type": "github" - } - }, - "cardano-automation": { - "inputs": { - "flake-utils": "flake-utils_2", - "haskellNix": [ - "wallet", - "cardano-node-runtime", - "haskellNix" - ], - "nixpkgs": [ - "wallet", - "cardano-node-runtime", - "nixpkgs" - ], - "tullia": "tullia" - }, - "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", - "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-automation", - "type": "github" - } - }, - "cardano-mainnet-mirror": { - "inputs": { - "nixpkgs": "nixpkgs_5" - }, - "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", - "type": "github" - } - }, - "cardano-node-runtime": { - "inputs": { - "CHaP": "CHaP_2", - "cardano-automation": "cardano-automation", - "cardano-mainnet-mirror": "cardano-mainnet-mirror", - "customConfig": "customConfig", - "em": "em", - "empty-flake": "empty-flake", - "flake-compat": "flake-compat_2", - "hackageNix": "hackageNix", - "haskellNix": "haskellNix", - "hostNixpkgs": [ - "wallet", - "cardano-node-runtime", - "nixpkgs" - ], - "iohkNix": "iohkNix", - "nixpkgs": [ - "wallet", - "cardano-node-runtime", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib", - "std": "std_2", - "utils": "utils_2" - }, - "locked": { - "lastModified": 1736202991, - "narHash": "sha256-Oys38YkpSpB48/H2NseP9kTWXm92a7kjAZtdnorcIEY=", - "owner": "IntersectMBO", - "repo": "cardano-node", - "rev": "1f63dbf2ab39e0b32bf6901dc203866d3e37de08", - "type": "github" - }, - "original": { - "owner": "IntersectMBO", - "ref": "10.1.4", - "repo": "cardano-node", - "type": "github" - } - }, - "cardano-shell": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_2": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "crane": { - "locked": { - "lastModified": 1734808813, - "narHash": "sha256-3aH/0Y6ajIlfy7j52FGZ+s4icVX0oHhqBzRdlOeztqg=", - "owner": "ipetkov", - "repo": "crane", - "rev": "72e2d02dbac80c8c86bf6bf3e785536acf8ee926", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, - "customConfig": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "customConfig_2": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "devshell": { - "inputs": { - "flake-utils": [ - "wallet", - "cardano-node-runtime", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "wallet", - "cardano-node-runtime", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "dmerge": { - "inputs": { - "nixlib": [ - "wallet", - "cardano-node-runtime", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "wallet", - "cardano-node-runtime", - "cardano-automation", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "dmerge_2": { - "inputs": { - "haumea": [ - "wallet", - "cardano-node-runtime", - "std", - "haumea" - ], - "nixlib": [ - "wallet", - "cardano-node-runtime", - "std", - "lib" - ], - "yants": [ - "wallet", - "cardano-node-runtime", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1686862774, - "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", - "owner": "divnix", - "repo": "dmerge", - "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", - "type": "github" - }, - "original": { - "owner": "divnix", - "ref": "0.2.1", - "repo": "dmerge", - "type": "github" - } - }, - "em": { - "flake": false, - "locked": { - "lastModified": 1685015066, - "narHash": "sha256-etAdEoYhtvjTw1ITh28WPNfwvvb5t/fpwCP6s7odSiQ=", - "owner": "deepfire", - "repo": "em", - "rev": "af69bb5c2ac2161434d8fea45f920f8f359587ce", - "type": "github" - }, - "original": { - "owner": "deepfire", - "repo": "em", - "type": "github" - } - }, - "empty-flake": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_2": { - "flake": false, - "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_3": { - "flake": false, - "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_4": { - "flake": false, - "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_5": { - "flake": false, - "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-parts": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib" - }, - "locked": { - "lastModified": 1735774679, - "narHash": "sha256-soePLBazJk0qQdDVhdbM98vYdssfs3WFedcq+raipRI=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "f2f7418ce0ab4a5309a4596161d154cfc877af66", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_2": { - "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_3": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_4": { - "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_5": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_6": { - "inputs": { - "systems": "systems_3" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "ghc-8.6.5-iohk": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_2": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc910X": { - "flake": false, - "locked": { - "lastModified": 1714520650, - "narHash": "sha256-4uz6RA1hRr0RheGNDM49a/B3jszqNNU8iHIow4mSyso=", - "ref": "ghc-9.10", - "rev": "2c6375b9a804ac7fca1e82eb6fcfc8594c67c5f5", - "revCount": 62663, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc911": { - "flake": false, - "locked": { - "lastModified": 1714817013, - "narHash": "sha256-m2je4UvWfkgepMeUIiXHMwE6W+iVfUY38VDGkMzjCcc=", - "ref": "refs/heads/master", - "rev": "fc24c5cf6c62ca9e3c8d236656e139676df65034", - "revCount": 62816, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "gomod2nix": { - "inputs": { - "nixpkgs": "nixpkgs_2", - "utils": "utils" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, - "hackage": { - "flake": false, - "locked": { - "lastModified": 1730680170, - "narHash": "sha256-CUPGIJ4PMrGKVC30bZfCrlzvTvlAjvz2bQ091DKqNNk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "3f9db9843a52f45de2e9884838de31fe7c526c75", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix": { - "flake": false, - "locked": { - "lastModified": 1729039425, - "narHash": "sha256-sIglYcw8Dacj4n0bRlUWo+NLkDMcVi6vtmKvUyG+ZrQ=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6dc43e5e01f113ce151056a8f94bce7bb2f13eb9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "haskellNix": { - "inputs": { - "HTTP": "HTTP", - "cabal-32": "cabal-32", - "cabal-34": "cabal-34", - "cabal-36": "cabal-36", - "cardano-shell": "cardano-shell", - "flake-compat": "flake-compat_3", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", - "ghc910X": "ghc910X", - "ghc911": "ghc911", - "hackage": [ - "wallet", - "cardano-node-runtime", - "hackageNix" - ], - "hls-1.10": "hls-1.10", - "hls-2.0": "hls-2.0", - "hls-2.2": "hls-2.2", - "hls-2.3": "hls-2.3", - "hls-2.4": "hls-2.4", - "hls-2.5": "hls-2.5", - "hls-2.6": "hls-2.6", - "hls-2.7": "hls-2.7", - "hls-2.8": "hls-2.8", - "hpc-coveralls": "hpc-coveralls", - "hydra": "hydra", - "iserv-proxy": "iserv-proxy", - "nixpkgs": [ - "wallet", - "cardano-node-runtime", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003", - "nixpkgs-2105": "nixpkgs-2105", - "nixpkgs-2111": "nixpkgs-2111", - "nixpkgs-2205": "nixpkgs-2205", - "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-2305": "nixpkgs-2305", - "nixpkgs-2311": "nixpkgs-2311", - "nixpkgs-unstable": "nixpkgs-unstable", - "old-ghc-nix": "old-ghc-nix", - "stackage": "stackage" - }, - "locked": { - "lastModified": 1718797200, - "narHash": "sha256-ueFxTuZrQ3ZT/Fj5sSeUWlqKa4+OkUU1xW0E+q/XTfw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "cb139fa956158397aa398186bb32dd26f7318784", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "cb139fa956158397aa398186bb32dd26f7318784", - "type": "github" - } - }, - "haskellNix_2": { - "inputs": { - "HTTP": "HTTP_2", - "cabal-32": "cabal-32_2", - "cabal-34": "cabal-34_2", - "cabal-36": "cabal-36_2", - "cardano-shell": "cardano-shell_2", - "flake-compat": "flake-compat_5", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", - "hackage": [ - "wallet", - "hackage" - ], - "hls-1.10": "hls-1.10_2", - "hls-2.0": "hls-2.0_2", - "hls-2.2": "hls-2.2_2", - "hls-2.3": "hls-2.3_2", - "hls-2.4": "hls-2.4_2", - "hls-2.5": "hls-2.5_2", - "hls-2.6": "hls-2.6_2", - "hls-2.7": "hls-2.7_2", - "hls-2.8": "hls-2.8_2", - "hls-2.9": "hls-2.9", - "hpc-coveralls": "hpc-coveralls_2", - "hydra": "hydra_2", - "iserv-proxy": "iserv-proxy_2", - "nixpkgs": [ - "wallet", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_2", - "nixpkgs-2105": "nixpkgs-2105_2", - "nixpkgs-2111": "nixpkgs-2111_2", - "nixpkgs-2205": "nixpkgs-2205_2", - "nixpkgs-2211": "nixpkgs-2211_2", - "nixpkgs-2305": "nixpkgs-2305_2", - "nixpkgs-2311": "nixpkgs-2311_2", - "nixpkgs-2405": "nixpkgs-2405", - "nixpkgs-unstable": "nixpkgs-unstable_2", - "old-ghc-nix": "old-ghc-nix_2", - "stackage": "stackage_2" - }, - "locked": { - "lastModified": 1723164643, - "narHash": "sha256-GvfPyg7BzEnz0PR9gHaB4lmz0v05ELGnXo+mShTna5Y=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "1d112d895f45335e28ccf819437703cbdfbaa744", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haumea": { - "inputs": { - "nixpkgs": [ - "wallet", - "cardano-node-runtime", - "std", - "lib" - ] - }, - "locked": { - "lastModified": 1685133229, - "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", - "owner": "nix-community", - "repo": "haumea", - "rev": "34dd58385092a23018748b50f9b23de6266dffc2", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "v0.2.2", - "repo": "haumea", - "type": "github" - } - }, - "hls-1.10": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_2": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_2": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_2": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_2": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_2": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_2": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_2": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_2": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.8": { - "flake": false, - "locked": { - "lastModified": 1715153580, - "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.8.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.8_2": { - "flake": false, - "locked": { - "lastModified": 1715153580, - "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.8.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.9": { - "flake": false, - "locked": { - "lastModified": 1718469202, - "narHash": "sha256-THXSz+iwB1yQQsr/PY151+2GvtoJnTIB2pIQ4OzfjD4=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "40891bccb235ebacce020b598b083eab9dda80f1", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.9.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hpc-coveralls": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_2": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hydra": { - "inputs": { - "nix": "nix", - "nixpkgs": [ - "wallet", - "cardano-node-runtime", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_2": { - "inputs": { - "nix": "nix_2", - "nixpkgs": [ - "wallet", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "incl": { - "inputs": { - "nixlib": [ - "wallet", - "cardano-node-runtime", - "std", - "lib" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, - "iohkNix": { - "inputs": { - "blst": "blst", - "nixpkgs": [ - "wallet", - "cardano-node-runtime", - "nixpkgs" - ], - "secp256k1": "secp256k1", - "sodium": "sodium" - }, - "locked": { - "lastModified": 1728687575, - "narHash": "sha256-38uD8SqT557eh5yyRYuthKm1yTtiWzAN0FH7L/01QKM=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "86c2bd46e8a08f62ea38ffe77cb4e9c337b42217", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_2": { - "inputs": { - "blst": "blst_2", - "nixpkgs": [ - "wallet", - "nixpkgs" - ], - "secp256k1": "secp256k1_2", - "sodium": "sodium_2" - }, - "locked": { - "lastModified": 1715898223, - "narHash": "sha256-G1LFsvP53twrqaC1FVard/6rjJJ3oitnpJ1E+mTZDGM=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "29f19cd41dc593cf17bbc24194e34e7c20889fc9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iserv-proxy": { - "flake": false, - "locked": { - "lastModified": 1717479972, - "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2ed34002247213fc435d0062350b91bab920626e", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_2": { - "flake": false, - "locked": { - "lastModified": 1717479972, - "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2ed34002247213fc435d0062350b91bab920626e", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "lib": { - "locked": { - "lastModified": 1694306727, - "narHash": "sha256-26fkTOJOI65NOTNKFvtcJF9mzzf/kK9swHzfYt1Dl6Q=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "c30b6a84c0b84ec7aecbe74466033facc9ed103f", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "lowdown-src": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_2": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "mdbook-kroki-preprocessor": { - "flake": false, - "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", - "type": "github" - }, - "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "type": "github" - } - }, - "mithril": { - "inputs": { - "crane": "crane", - "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_9", - "treefmt-nix": "treefmt-nix" - }, - "locked": { - "lastModified": 1733844450, - "narHash": "sha256-jT3sjtACWtiS1agD8XR6EKz73YpL0QelIS4RcBJy3F8=", - "owner": "input-output-hk", - "repo": "mithril", - "rev": "c6c7ebafae0158b2c1672eb96f6ef832fd542f93", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "2450.0", - "repo": "mithril", - "type": "github" - } - }, - "n2c": { - "inputs": { - "flake-utils": "flake-utils_5", - "nixpkgs": [ - "wallet", - "cardano-node-runtime", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix": { - "inputs": { - "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_6", - "nixpkgs-regression": "nixpkgs-regression" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix-nomad": { - "inputs": { - "flake-compat": "flake-compat", - "flake-utils": [ - "wallet", - "cardano-node-runtime", - "cardano-automation", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix", - "nixpkgs": [ - "wallet", - "cardano-node-runtime", - "cardano-automation", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "wallet", - "cardano-node-runtime", - "cardano-automation", - "tullia", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", - "type": "github" - }, - "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", - "type": "github" - } - }, - "nix2container": { - "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_3" - }, - "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix_2": { - "inputs": { - "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_8", - "nixpkgs-regression": "nixpkgs-regression_2" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nixago": { - "inputs": { - "flake-utils": [ - "wallet", - "cardano-node-runtime", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "wallet", - "cardano-node-runtime", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "wallet", - "cardano-node-runtime", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1738089207, - "narHash": "sha256-WyWDRkoYvD4mb6a6HuEjaFI4TRZ0dU3+3h4buYpwAOc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "402d9281fe3a8f5daebb46056e99af891f49d634", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_2": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_2": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_2": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_2": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_2": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_2": { - "locked": { - "lastModified": 1705033721, - "narHash": "sha256-K5eJHmL1/kev6WuqyqqbS1cdNnSidIZ3jeqJ7GbrYnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "a1982c92d8980a0114372973cbdfe0a307f1bdea", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_2": { - "locked": { - "lastModified": 1719957072, - "narHash": "sha256-gvFhEf5nszouwLAkT9nWsDzocUTqLWHuL++dvNjMp9I=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "7144d6241f02d171d25fba3edeaf15e0f2592105", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2405": { - "locked": { - "lastModified": 1720122915, - "narHash": "sha256-Nby8WWxj0elBu1xuRaUcRjPi/rU3xVbkAt2kj4QwX2U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "835cf2d3f37989c5db6585a28de967a667a75fb1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-24.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib": { - "locked": { - "lastModified": 1735774519, - "narHash": "sha256-CewEm1o2eVAnoqb6Ml+Qi9Gg/EfNAxbRx1lANGVyoLI=", - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/e9b51731911566bbf7e4895475a87fe06961de0b.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/e9b51731911566bbf7e4895475a87fe06961de0b.tar.gz" - } - }, - "nixpkgs-regression": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_2": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-unstable": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_2": { - "locked": { - "lastModified": 1720181791, - "narHash": "sha256-i4vJL12/AdyuQuviMMd1Hk2tsGt02hDNhA0Zj1m16N8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "4284c2b73c8bce4b46a6adf23e16d9e2ec8da4bb", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_3": { - "locked": { - "lastModified": 1716509168, - "narHash": "sha256-4zSIhSRRIoEBwjbPm3YiGtbd8HDWzFxJjw5DYSDy1n8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bfb7a882678e518398ce9a31a881538679f6f092", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-unstable", - "type": "indirect" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_5": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_6": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_7": { - "locked": { - "lastModified": 1708343346, - "narHash": "sha256-qlzHvterVRzS8fS0ophQpkh0rqw0abijHEOAKm0HmV0=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "9312b935a538684049cb668885e60f15547d4c5f", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "release-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_8": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_9": { - "locked": { - "lastModified": 1735617354, - "narHash": "sha256-5zJyv66q68QZJZsXtmjDBazGnF0id593VSy+8eSckoo=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "69b9a8c860bdbb977adfa9c5e817ccb717884182", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nosys": { - "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "nosys", - "type": "github" - } - }, - "old-ghc-nix": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_2": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "ops-lib": { - "flake": false, - "locked": { - "lastModified": 1713366514, - "narHash": "sha256-0hNlv+grFTE+TeXIbxSY97QoEEaUupOKMusZ4PesdrQ=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "19d83fa8eab1c0b7765f736eb4e8569d84d3e39d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ops-lib", - "type": "github" - } - }, - "paisano": { - "inputs": { - "call-flake": "call-flake", - "nixpkgs": [ - "wallet", - "cardano-node-runtime", - "std", - "nixpkgs" - ], - "nosys": "nosys", - "yants": [ - "wallet", - "cardano-node-runtime", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1708640854, - "narHash": "sha256-EpcAmvIS4ErqhXtVEfd2GPpU/E/s8CCRSfYzk6FZ/fY=", - "owner": "paisano-nix", - "repo": "core", - "rev": "adcf742bc9463c08764ca9e6955bd5e7dcf3a3fe", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "ref": "0.2.0", - "repo": "core", - "type": "github" - } - }, - "paisano-tui": { - "flake": false, - "locked": { - "lastModified": 1708637035, - "narHash": "sha256-R19YURSK+MY/Rw6FZnojQS9zuDh+OoTAyngQAjjoubc=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "231761b260587a64817e4ffae3afc15defaa15db", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "ref": "v0.5.0", - "repo": "tui", - "type": "github" - } - }, - "root": { - "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs", - "wallet": "wallet" - } - }, - "secp256k1": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_2": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "sodium": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_2": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "stackage": { - "flake": false, - "locked": { - "lastModified": 1718756571, - "narHash": "sha256-8rL8viTbuE9/yV1of6SWp2tHmhVMD2UmkOfmN5KDbKg=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "027672fb6fd45828b0e623c8152572d4058429ad", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_2": { - "flake": false, - "locked": { - "lastModified": 1723162293, - "narHash": "sha256-f2BFFbwNUi6g86ucTA5F0ABSXO2RTeXubLmg2T4b1LE=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "951d375ea7113198bc4e54e090e82fc8556bf7a7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "std": { - "inputs": { - "blank": "blank", - "devshell": "devshell", - "dmerge": "dmerge", - "flake-utils": "flake-utils_4", - "makes": [ - "wallet", - "cardano-node-runtime", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", - "microvm": [ - "wallet", - "cardano-node-runtime", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "n2c": "n2c", - "nixago": "nixago", - "nixpkgs": "nixpkgs_4", - "yants": "yants" - }, - "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", - "owner": "divnix", - "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, - "std_2": { - "inputs": { - "arion": [ - "wallet", - "cardano-node-runtime", - "std", - "blank" - ], - "blank": "blank_2", - "devshell": [ - "wallet", - "cardano-node-runtime", - "std", - "blank" - ], - "dmerge": "dmerge_2", - "haumea": "haumea", - "incl": "incl", - "lib": "lib", - "makes": [ - "wallet", - "cardano-node-runtime", - "std", - "blank" - ], - "microvm": [ - "wallet", - "cardano-node-runtime", - "std", - "blank" - ], - "n2c": [ - "wallet", - "cardano-node-runtime", - "std", - "blank" - ], - "nixago": [ - "wallet", - "cardano-node-runtime", - "std", - "blank" - ], - "nixpkgs": "nixpkgs_7", - "paisano": "paisano", - "paisano-tui": "paisano-tui", - "terranix": [ - "wallet", - "cardano-node-runtime", - "std", - "blank" - ], - "yants": "yants_2" - }, - "locked": { - "lastModified": 1715201063, - "narHash": "sha256-LcLYV5CDhIiJs3MfxGZFKsXPR4PtfnY4toZ75GM+2Pw=", - "owner": "divnix", - "repo": "std", - "rev": "b6924a7d37a46fc1dda8efe405040e27ecf1bbd6", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_2": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_3": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "treefmt-nix": { - "inputs": { - "nixpkgs": [ - "wallet", - "mithril", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1735807918, - "narHash": "sha256-8b09m8eIT/0TPkrT3BVRZ+Bc5LOP8l1CYkBzrfQ/aok=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "8cfde27e47460d80e92f759caadddfb31f391d0f", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - }, - "tullia": { - "inputs": { - "nix-nomad": "nix-nomad", - "nix2container": "nix2container", - "nixpkgs": [ - "wallet", - "cardano-node-runtime", - "cardano-automation", - "nixpkgs" - ], - "std": "std" - }, - "locked": { - "lastModified": 1668711738, - "narHash": "sha256-CBjky16o9pqsGE1bWu6nRlRajgSXMEk+yaFQLibqXcE=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "ead1f515c251f0e060060ef0e2356a51d3dfe4b0", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "tullia", - "type": "github" - } - }, - "utils": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_2": { - "inputs": { - "systems": "systems_2" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "wallet": { - "inputs": { - "CHaP": "CHaP", - "cardano-node-runtime": "cardano-node-runtime", - "customConfig": "customConfig_2", - "flake-compat": "flake-compat_4", - "flake-utils": "flake-utils_6", - "hackage": "hackage", - "haskellNix": "haskellNix_2", - "hostNixpkgs": [ - "wallet", - "nixpkgs" - ], - "iohkNix": "iohkNix_2", - "mithril": "mithril", - "nixpkgs": [ - "wallet", - "haskellNix", - "nixpkgs-unstable" - ], - "nixpkgs-unstable": "nixpkgs-unstable_3" - }, - "locked": { - "lastModified": 0, - "narHash": "sha256-1S2s6SsDdUlXwu00wmYlW1IwQxkrhaC5PXVEmd08WNA=", - "path": "/nix/store/fz0xaazf0rzqy47far7cg8acdzypyhzv-source", - "type": "path" - }, - "original": { - "path": "/nix/store/fz0xaazf0rzqy47far7cg8acdzypyhzv-source", - "type": "path" - } - }, - "yants": { - "inputs": { - "nixpkgs": [ - "wallet", - "cardano-node-runtime", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660507851, - "narHash": "sha256-BKjq7JnVuUR/xDtcv6Vm9GYGKAblisXrAgybor9hT/s=", - "owner": "divnix", - "repo": "yants", - "rev": "0b895ca02a8fa72bad50b454cb3e7d8a66407c96", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "yants", - "type": "github" - } - }, - "yants_2": { - "inputs": { - "nixpkgs": [ - "wallet", - "cardano-node-runtime", - "std", - "lib" - ] - }, - "locked": { - "lastModified": 1686863218, - "narHash": "sha256-kooxYm3/3ornWtVBNHM3Zh020gACUyFX2G0VQXnB+mk=", - "owner": "divnix", - "repo": "yants", - "rev": "8f0da0dba57149676aa4817ec0c880fbde7a648d", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "yants", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/test/e2e/flake.nix b/test/e2e/flake.nix deleted file mode 100644 index 33b00fbfb02..00000000000 --- a/test/e2e/flake.nix +++ /dev/null @@ -1,73 +0,0 @@ -{ - description = '' - Shell for the Ruby E2E tests. - ''; - - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs"; - flake-utils.url = "github:numtide/flake-utils"; - wallet.url = "../.."; - }; - - outputs = inputs: - let - supportedSystems = [ - "x86_64-linux" - "x86_64-darwin" - # The `blake2b` Ruby gem does not compile on aarch64-* - # "aarch64-linux" - # "aarch64-darwin" - ]; in - inputs.flake-utils.lib.eachSystem supportedSystems (system: - let - # Imports - walletPkgs - = inputs.wallet.packages.${system}; - pkgs - = inputs.nixpkgs.legacyPackages.${system}; - mithrilClient - = inputs.wallet.inputs.mithril.packages.${system}.mithril-client-cli; - cardanoNode - = walletPkgs.cardano-node.package.components.exes.cardano-node; - cardanoCli - = walletPkgs.cardano-cli.package.components.exes.cardano-cli; - cardanoAddresses - = inputs.wallet.packages.${system}.cardano-address.package.components.exes.cardano-address; - cardanoWallet - = walletPkgs.cardano-wallet; - - # To update gemset.nix, run: - # nix develop -c bundix - gems = pkgs.bundlerEnv { - name = "gems-cardano-wallet-e2e"; - gemdir = ./.; - ruby = pkgs.ruby_3_1; - }; - in { - packages = { }; - - devShells.default = pkgs.mkShell { - buildInputs = [ - pkgs.curl - pkgs.jq - gems - gems.wrappedRuby - pkgs.bundix - pkgs.screen - pkgs.gnupg - pkgs.rsync - pkgs.gnutar - mithrilClient - cardanoNode - cardanoCli - cardanoAddresses - cardanoWallet - - ]; - shellHook = '' - # use this hook to set up additional environment variables - ''; - }; - } - ); -} diff --git a/test/e2e/gemset.nix b/test/e2e/gemset.nix deleted file mode 100644 index 41d6f67a602..00000000000 --- a/test/e2e/gemset.nix +++ /dev/null @@ -1,232 +0,0 @@ -{ - addressable = { - dependencies = ["public_suffix"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1ypdmpdn20hxp5vwxz3zc04r5xcwqc25qszdlg41h8ghdqbllwmw"; - type = "gem"; - }; - version = "2.8.1"; - }; - bip_mnemonic = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0p9kdsy0i6x4170l83726lrm52c1g62pfzi6ip3nx0ysj6h3qffy"; - type = "gem"; - }; - version = "0.0.4"; - }; - blake2b = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1i7kxnnvv2lqglc1crhkqp0s9hybx20wgrl04jqkk7y2sawyb6hg"; - type = "gem"; - }; - version = "0.10.0"; - }; - buildkit = { - dependencies = ["sawyer"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1phnc6p52xphg8vx54gys70anip8wqx44yixjf6xqxlf46nbiqn0"; - type = "gem"; - }; - version = "1.5.0"; - }; - cardano_wallet = { - dependencies = ["bip_mnemonic" "httparty"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1igkk6mh3nwal86fifwa7swrmxyb1x8p1rn6xricsg9p1hbn0wvl"; - type = "gem"; - }; - version = "0.4.2"; - }; - cbor = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1dsf9gjc2cj79vrnz2vgq573biqjw7ad4b0idm05xg6rb3y9gq4y"; - type = "gem"; - }; - version = "0.5.9.8"; - }; - diff-lcs = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0rwvjahnp7cpmracd8x732rjgnilqv2sx7d1gfrysslc3h039fa9"; - type = "gem"; - }; - version = "1.5.0"; - }; - faraday = { - dependencies = ["faraday-net_http" "ruby2_keywords"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1wyz9ab0mzi84gpf81fs19vrixglmmxi25k6n1mn9h141qmsp590"; - type = "gem"; - }; - version = "2.7.1"; - }; - faraday-net_http = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "13byv3mp1gsjyv8k0ih4612y6vw5kqva6i03wcg4w2fqpsd950k8"; - type = "gem"; - }; - version = "3.0.2"; - }; - httparty = { - dependencies = ["mini_mime" "multi_xml"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "050jzsa6fbfvy2rldhk7mf1sigildaqvbplfz2zs6c0zlzwppvq0"; - type = "gem"; - }; - version = "0.21.0"; - }; - mini_mime = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0lbim375gw2dk6383qirz13hgdmxlan0vc5da2l072j3qw6fqjm5"; - type = "gem"; - }; - version = "1.1.2"; - }; - multi_xml = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0lmd4f401mvravi1i1yq7b2qjjli0yq7dfc4p1nj5nwajp7r6hyj"; - type = "gem"; - }; - version = "0.6.0"; - }; - mustache = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1l0p4wx15mi3wnamfv92ipkia4nsx8qi132c6g51jfdma3fiz2ch"; - type = "gem"; - }; - version = "1.1.1"; - }; - public_suffix = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0hz0bx2qs2pwb0bwazzsah03ilpf3aai8b7lk7s35jsfzwbkjq35"; - type = "gem"; - }; - version = "5.0.1"; - }; - rake = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1cvaqarr1m84mhc006g3l1vw7sa5qpkcw0138lsxlf769zdllsgp"; - type = "gem"; - }; - version = "12.3.3"; - }; - rspec = { - dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "19dyb6rcvgi9j2mksd29wfdhfdyzqk7yjhy1ai77559hbhpg61w9"; - type = "gem"; - }; - version = "3.11.0"; - }; - rspec-core = { - dependencies = ["rspec-support"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "118hkfw9b11hvvalr7qlylwal5h8dihagm9xg7k4gskg7587hca6"; - type = "gem"; - }; - version = "3.11.0"; - }; - rspec-expectations = { - dependencies = ["diff-lcs" "rspec-support"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "0l1bzk6a68i1b2qix83vs40r0pbjawv67hixiq2qxsja19bbq3bc"; - type = "gem"; - }; - version = "3.11.1"; - }; - rspec-mocks = { - dependencies = ["diff-lcs" "rspec-support"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "07vagjxdm5a6s103y8zkcnja6avpl8r196hrpiffmg7sk83dqdsm"; - type = "gem"; - }; - version = "3.11.1"; - }; - rspec-support = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1c01iicvrjk6vv744jgh0y4kk9d0kg2rd2ihdyzvg5p06xm2fpzq"; - type = "gem"; - }; - version = "3.11.1"; - }; - ruby2_keywords = { - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1vz322p8n39hz3b4a9gkmz9y7a5jaz41zrm2ywf31dvkqm03glgz"; - type = "gem"; - }; - version = "0.0.5"; - }; - sawyer = { - dependencies = ["addressable" "faraday"]; - groups = ["default"]; - platforms = []; - source = { - remotes = ["https://rubygems.org"]; - sha256 = "1jks1qjbmqm8f9kvwa81vqj39avaj9wdnzc531xm29a55bb74fps"; - type = "gem"; - }; - version = "0.9.2"; - }; -} diff --git a/test/e2e/helpers/buildkite.rb b/test/e2e/helpers/buildkite.rb deleted file mode 100644 index a231744daab..00000000000 --- a/test/e2e/helpers/buildkite.rb +++ /dev/null @@ -1,74 +0,0 @@ -# frozen_string_literal: true - -require 'buildkit' -require 'httparty' - -## -# Buildkite helper -class Buildkite - include HTTParty - include Helpers::Utils - - attr_reader :org, :pipeline, :client - - def initialize(pipeline = 'cardano-wallet') - @org = 'cardano-foundation' - @pipeline = pipeline - @api_token = ENV.fetch('BUILDKITE_API_TOKEN', nil) - @client = Buildkit.new(token: @api_token) - end - - def build_numbers(options = { branch: 'master' }) - num = @client.pipeline_builds(@org, @pipeline, options).map { |b| b[:number] } - raise "No builds found for #{options}" if num.empty? - - num - end - - def last_build_number(options = { branch: 'master' }) - build_numbers(options).first - end - - def build_details(build_no) - @client.build(@org, @pipeline, build_no) - end - - def last_build_details(options = { branch: 'master' }) - build_details(last_build_number(options)) - end - - # get job details for given build number: job_key => job_id - def jobs(build_no) - build_details(build_no)[:jobs].to_h { |j| [j[:step_key], j[:id]] } - end - - # get list of artifacts for given job_id - def artifacts(build_no, job_id) - @client.job_artifacts(@org, @pipeline, build_no, job_id) - end - - # get artifact urls for given job_id - def artifact_urls(build_no, job_id) - artifacts(build_no, job_id).map { |a| a[:download_url] } - end - - # artifact url is redirecting to s3 and requires auth, - # so we need to follow it to retrieve the downloadable url - def make_artifact_url_downloadable(url) - r = self.class.get(url, follow_redirects: false, - headers: { 'Authorization' => "Bearer #{@api_token}" }) - r.to_hash['url'] - end - - # we assume that there is only one artifact for given job - def get_artifact_url(build_no, job_id) - make_artifact_url_downloadable(artifact_urls(build_no, job_id).first) - end - - def get_artifacts(build_no, job_id, target_dir, target_file = 'binary-dist', unzip: true) - log "Downloading artifacts for build #{build_no} job #{job_id} to #{target_dir}" - url = get_artifact_url(build_no, job_id) - wget(url, target_file) - unzip_artifact(target_file, target_dir) if unzip - end -end diff --git a/test/e2e/helpers/utils.rb b/test/e2e/helpers/utils.rb deleted file mode 100644 index a4a5af97a9e..00000000000 --- a/test/e2e/helpers/utils.rb +++ /dev/null @@ -1,179 +0,0 @@ -# frozen_string_literal: true - -require 'httparty' -require 'fileutils' - -module Helpers - # general utility methods - module Utils - def log(message) - puts "[#{Time.now}] #{message}" - end - - def cmd(cmd, display_result: false) - cmd.gsub(/\s+/, ' ') - res = `#{cmd}` - log cmd if display_result - log res if display_result - res - end - - ## - # Generate Byron address from mnemonic sentence and derivation path - # $ cat mnemonics \ - # | cardano-address key from-recovery-phrase Byron > root.prv - # - # $ cat root.prv \ - # | cardano-address key child 14H/42H | tee addr.prv \ - # | cardano-address key public --with-chain-code \ - # | cardano-address address bootstrap --root $(cat root.prv | cardano-address key public --with-chain-code) \ - # --network-tag testnet 14H/42H - def cardano_address_get_byron_addr(mnemonics, derivation_path) - root = cmd(%(echo #{mnemonics.join(' ')} | cardano-address key from-recovery-phrase Byron | cardano-address key public --with-chain-code)).gsub( - "\n", '' - ) - cmd(%(echo #{mnemonics.join(' ')} \ - | cardano-address key from-recovery-phrase Byron \ - | cardano-address key child #{derivation_path} \ - | cardano-address key public --with-chain-code \ - | cardano-address address bootstrap \ - --root #{root} \ - --network-tag testnet #{derivation_path} - )).gsub("\n", '') - end - - def cardano_address_get_acc_xpub(mnemonics, derivation_path, wallet_type = 'Shared', - chain_code = '--with-chain-code', hex: false) - cmd(%(echo #{mnemonics.join(' ')} \ - | cardano-address key from-recovery-phrase #{wallet_type} \ - | cardano-address key child #{derivation_path} \ - | cardano-address key public #{chain_code} #{' | bech32' if hex})).gsub("\n", '') - end - - def bech32_to_base16(key) - cmd(%(echo #{key} | bech32)).gsub("\n", '') - end - - def hex_to_bytes(str) - str.scan(/../).map { |x| x.hex.chr }.join - end - - def binary_to_hex(binary_as_string) - format('%02x', binary_as_string.to_i(2)) - end - - ## - # encode string asset_name to hex representation - def asset_name(asset_name) - asset_name.unpack1('H*') - end - - def absolute_path(path) - if path.start_with? '.' - File.join(Dir.pwd, path[1..]) - else - path - end - end - - # Get wallet mnemonics/payment template/delegation template from fixures file - # @param kind [Symbol] :fixture or :target (fixture wallet with funds or target wallet) - # @param wallet_type [Symbol] wallet type = :shelley, :shared, :icarus, :random - # @param info_type [Symbol] wallet type = :mnemonics, :payment_template, :delegation_template - def get_fixture_wallet(kind, wallet_type, info_type = :mnemonics) - fixture = ENV.fetch('TESTS_E2E_FIXTURES_FILE', nil) - raise "File #{fixture} does not exist! (Hint: Template fixture file can be created with 'rake fixture_wallets_template'). Make sure to feed it with mnemonics of wallets with funds and assets." unless File.exist? fixture - - wallets = from_json(fixture) - if linux? - wallets[:linux][kind][wallet_type][info_type] - elsif mac? - wallets[:macos][kind][wallet_type][info_type] - elsif win? - wallets[:windows][kind][wallet_type][info_type] - else - raise 'Unsupported platform!' - end - end - - def from_json(file) - JSON.parse(File.read(file), { symbolize_names: true }) - end - - def wget(url, file = nil) - file ||= File.basename(url) - resp = HTTParty.get(url) - File.binwrite(file, resp.body) - log "#{url} -> #{resp.code}" - end - - def unzip_artifact(target_file, target_dir) - log "Unzipping #{target_file} to #{target_dir}" - if win? - cmd "unzip -o #{target_file} -d #{target_dir}" - cmd "del \\f #{target_file}" - else - cmd "tar -xvf #{target_file}" - cmd "cp -r cardano-wallet-*/* #{target_dir}" - cmd "rm -rf cardano-wallet-*/ #{target_file}" - end - end - - def mk_dir(path) - FileUtils.mkdir_p(path) - end - - def rm_files(path) - FileUtils.rm_rf(path, secure: true) - end - - def mv(src, dst) - FileUtils.mv(src, dst, force: true) - end - - def win? - RUBY_PLATFORM =~ /cygwin|mswin|mingw|bccwin|wince|emx/ - end - - def linux? - RUBY_PLATFORM =~ /linux/ - end - - def mac? - RUBY_PLATFORM =~ /darwin/ - end - - ## - # Latest Cardano configs - def get_latest_configs_base_url(env) - envs = %w[preview preprod].freeze - raise "Env '#{env}' is not supported, supported are: #{envs}" unless envs.include? env - - "https://book.world.dev.cardano.org/environments/#{env}/" - end - - ## - # Get protocol magic from byron-genesis.json corresponding to particular env - def get_protocol_magic(env) - config = File.join(absolute_path(ENV.fetch('CARDANO_NODE_CONFIGS', nil)), env) - byron_genesis = JSON.parse(File.read(File.join(config, 'byron-genesis.json'))) - byron_genesis['protocolConsts']['protocolMagic'].to_i - end - - def base64?(value) - value.is_a?(String) && Base64.strict_encode64(Base64.decode64(value)) == value - end - - def base16?(value) - value.is_a?(String) && value.match?(/^[[:xdigit:]]+$/) - end - end -end - -## -# extend String class with hexdump methods -class String - def cbor_to_hex - bytes.map { |x| format('%02x', x) }.join - end -end diff --git a/test/e2e/regenerate-nix.sh b/test/e2e/regenerate-nix.sh deleted file mode 100755 index 264e2809a36..00000000000 --- a/test/e2e/regenerate-nix.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -exec nix-shell --run "bundle lock && bundix"