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"},
]
end
mix deps.get
Usages
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 10
Configurations
.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
└── 200
Features
- [x] to dwonload testcases for any problem
- [ ] additional options for
mix yuki.test
- [ ] to specify module name
- [ ]
timeout
option - [ ]
force
option
- [ ] to juadge testcase
- [x] CE
- [x] 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