YukiHelper
YukiHelper provides helpers to download testcases and to compile the source code in order to help test (judge) your souce code (e.g. ac, wa, re) in your local environment.
Current version supports YukiCoder and Elixir.
Note that YukiHelper needs your access token to download testcases for any problem.
Please set the access token into your configuration file described later.
Installation
Add to your project dependencies in mix.exs
def deps do
[
{:yuki_helper, "~> 0.1.0"},
]
endmix deps.getUsages
Provides the following commands.
See detail usages using the help command such as
mix help yuki.test
# prints current configuration
mix yuki.config
# prints a list of testcase for Problem No. 10
mix yuki.testcase.list 10
# prints a list of testcase for Problem Id 10
mix yuki.testcase.list 10 --problem-id
# downloads a list of testcase for Problem No. 10
mix yuki.testcase.download 10
# tests your source code for Problem No. 10
# tries to execute `elixirc lib/path/to/10.ex` and `elixir -e P10.main` sequentially
mix yuki.test 10Configurations
.yuki_helper.default.config.yml is an example configuration.
There are three pattern of locations of configuration file in the following.
~/.yukihelper.config.yml~/.config/yukihelper/.config.yml./.yuki_helper.config.yml
Configurations are overridden in the order of the above, with the manner that any nil value is skipped or ignored in current version.
Note that name of the configuration file depends on the directory.
Example Configuration
YukiHelper needs your access token for Yukicoder to download any testcase.
Please get your access token from Yukicoder homepage and set it in your configuration files.
# .yuki_helper.default.config.yml
testcase:
# Positive integer value more than 10.
# If `bundile` is 100, directory of testcase for problem 10 is `testcase/100/p10`.
bundle: null
# Root direcotry of testcases to download
directory: "testcase"
# Prefix of testcase `testcase/p10` and source code `lib/p10.ex`
prefix: "p"
yukicoder:
# Access Token for Yukicoder. Be careful to treat.
access_token: "your access token"Directory Structure
- Initial Configuration
# .yuki_helper.config.yml
testcase:
bundle: null
directory: "testcase"
prefix: null├── lib
│ ├── 10.ex
│ └── 11.ex
└── testcase
├── 10
│ ├── in
│ └── out
└── 11- Custum Configuration
# .yuki_helper.config.yml
testcase:
bundle: 100
directory: "test-case"
prefix: "p"├── lib
│ ├─── 100
│ │ ├── p10.ex
│ │ └── p11.ex
│ └── p12.ex
└── test-case
├─── 100
│ ├── p10
│ │ ├── in
│ │ └── out
│ └── p11
└── 200Features
- to dwonload testcases for any problem
-
additional options for
mix yuki.test- to specify module name
timeoutoptionforceoption
-
to juadge testcase
- CE
- AC/WA/RE
- TLE
- MLE
- to support for handling unexpected error (e.g. communication)
- to support for other languages
- to support for other provider (except YukiCoder) if necessary