1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
|
%global _empty_manifest_terminate_build 0
Name: python-vival
Version: 3.5.0
Release: 1
Summary: A simple commandline app for testing standard input/output applications.
License: MIT
URL: https://github.com/ViktorooReps/vival
Source0: https://mirrors.nju.edu.cn/pypi/web/packages/ee/f1/de65098703fc0e0a036a8fa05deaf12eab19efb6fb0588ac114cab014537/vival-3.5.0.tar.gz
BuildArch: noarch
Requires: python3-click
Requires: python3-tqdm
Requires: python3-pydantic
Requires: python3-setuptools
%description
INPUT | Test | What will executed program get on stdin.
CMD | Test | Command line arguments with which the program will be executed.
OUTPUT | Test | Expected contents of stdout.
COMMENT | Test | Some commentary on test that will be displayed if program fails it.
MAIN | File | Some auxillary code (usually just `int main() { ... }`) that will be compiled and linked with given source code (ignored if executable is given as argument).
FLAGS | File | Flags that will be passed to compiler.
DESCRIPTION | File | Description of tests file.
STARTUP | Test | Shell commands that will be executed before test.
CLEANUP | Test | Shell commands that will be executed after test.
TIMEOUT | File | Sets time limit in seconds for all tests in the file (default is 2.0 sec).
CHECKER | File | Shell command that will be used to check correctness of result.
The body of tests file consists of repeating sections of "wild space" and bracketed text: <...WS...>__/{__<...text...>__}/__ . Wild space is mostly skipped apart from tags that will define meaning of text in brackets. The text in brackets stays unformatted.
So, for example:
```
The text that is going to be skipped
INPUT
This will be skipped as well /{1 2 3}/
```
Will be converted to pair `(INPUT, "1 2 3")`.
If there are multiple tags only the last one will define bracketed text's meaning.
There are two categories of tags: the ones that define some features of a particular test and the ones that define features of an entire tests file. Only one definition of each feature is allowed, so when multiple File feature definitions are present in file, the last one is used. Redifinitions of Test features mark the beginning of a new test.
For example, file with such contents:
```
DESCRIPTION /{Description 1}/
DESCRIPTION /{Description 2}/ <- DESCRIPTION is redefined
COMMENT /{Empty test}/
MAIN /{int sum(int a, int b) { return a + b; }}/
COMMENT <- the start of a new test
/{Some other test}/
INPUT
/{1}/
OUTPUT
/{}/
```
Will be translated to File features: `{(DESCRIPTION, "Description 2"), (MAIN, "int sum(int a, int b) { return a + b; }")}`, and two tests: `{(COMMENT, "Empty test")}` and `{(COMMENT, "Some other test"), (INPUT, "1"), (OUTPUT, "")}`
Tests without `OUTPUT` feature are considered unfilled and VIVAL wont't run given program on them. These tests can be filled in manually or using another executable.
## Filling in
Fill mode activates with flag `-m`:
`vival <executable or source code> -t <path/tests.txt> -m fill`
VIVAL in fill mode runs given executable on unfilled tests, saving the output from stdout. \
But it will be lost unless `-o <path/output.txt>` is specified:
`vival <executable or source code> -t <path/tests.txt> -m fill -o <path/output.txt>`
In which case executable's output on a test will be saved as `OUTPUT` feature of test and then resulting filled tests will be written to `output.txt`.
# Contribution
If you found a bug or just isn't sure how to use VIVAL, please consider creating an issue describing your problem. It might help other users as well as future project development.
If you want to fix any known bug or add new functionality, fork this repository, add any changes you think are necessary, push, and create pull request. They will appear on PyPI as soon as your PR is merged.
%package -n python3-vival
Summary: A simple commandline app for testing standard input/output applications.
Provides: python-vival
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-pip
%description -n python3-vival
INPUT | Test | What will executed program get on stdin.
CMD | Test | Command line arguments with which the program will be executed.
OUTPUT | Test | Expected contents of stdout.
COMMENT | Test | Some commentary on test that will be displayed if program fails it.
MAIN | File | Some auxillary code (usually just `int main() { ... }`) that will be compiled and linked with given source code (ignored if executable is given as argument).
FLAGS | File | Flags that will be passed to compiler.
DESCRIPTION | File | Description of tests file.
STARTUP | Test | Shell commands that will be executed before test.
CLEANUP | Test | Shell commands that will be executed after test.
TIMEOUT | File | Sets time limit in seconds for all tests in the file (default is 2.0 sec).
CHECKER | File | Shell command that will be used to check correctness of result.
The body of tests file consists of repeating sections of "wild space" and bracketed text: <...WS...>__/{__<...text...>__}/__ . Wild space is mostly skipped apart from tags that will define meaning of text in brackets. The text in brackets stays unformatted.
So, for example:
```
The text that is going to be skipped
INPUT
This will be skipped as well /{1 2 3}/
```
Will be converted to pair `(INPUT, "1 2 3")`.
If there are multiple tags only the last one will define bracketed text's meaning.
There are two categories of tags: the ones that define some features of a particular test and the ones that define features of an entire tests file. Only one definition of each feature is allowed, so when multiple File feature definitions are present in file, the last one is used. Redifinitions of Test features mark the beginning of a new test.
For example, file with such contents:
```
DESCRIPTION /{Description 1}/
DESCRIPTION /{Description 2}/ <- DESCRIPTION is redefined
COMMENT /{Empty test}/
MAIN /{int sum(int a, int b) { return a + b; }}/
COMMENT <- the start of a new test
/{Some other test}/
INPUT
/{1}/
OUTPUT
/{}/
```
Will be translated to File features: `{(DESCRIPTION, "Description 2"), (MAIN, "int sum(int a, int b) { return a + b; }")}`, and two tests: `{(COMMENT, "Empty test")}` and `{(COMMENT, "Some other test"), (INPUT, "1"), (OUTPUT, "")}`
Tests without `OUTPUT` feature are considered unfilled and VIVAL wont't run given program on them. These tests can be filled in manually or using another executable.
## Filling in
Fill mode activates with flag `-m`:
`vival <executable or source code> -t <path/tests.txt> -m fill`
VIVAL in fill mode runs given executable on unfilled tests, saving the output from stdout. \
But it will be lost unless `-o <path/output.txt>` is specified:
`vival <executable or source code> -t <path/tests.txt> -m fill -o <path/output.txt>`
In which case executable's output on a test will be saved as `OUTPUT` feature of test and then resulting filled tests will be written to `output.txt`.
# Contribution
If you found a bug or just isn't sure how to use VIVAL, please consider creating an issue describing your problem. It might help other users as well as future project development.
If you want to fix any known bug or add new functionality, fork this repository, add any changes you think are necessary, push, and create pull request. They will appear on PyPI as soon as your PR is merged.
%package help
Summary: Development documents and examples for vival
Provides: python3-vival-doc
%description help
INPUT | Test | What will executed program get on stdin.
CMD | Test | Command line arguments with which the program will be executed.
OUTPUT | Test | Expected contents of stdout.
COMMENT | Test | Some commentary on test that will be displayed if program fails it.
MAIN | File | Some auxillary code (usually just `int main() { ... }`) that will be compiled and linked with given source code (ignored if executable is given as argument).
FLAGS | File | Flags that will be passed to compiler.
DESCRIPTION | File | Description of tests file.
STARTUP | Test | Shell commands that will be executed before test.
CLEANUP | Test | Shell commands that will be executed after test.
TIMEOUT | File | Sets time limit in seconds for all tests in the file (default is 2.0 sec).
CHECKER | File | Shell command that will be used to check correctness of result.
The body of tests file consists of repeating sections of "wild space" and bracketed text: <...WS...>__/{__<...text...>__}/__ . Wild space is mostly skipped apart from tags that will define meaning of text in brackets. The text in brackets stays unformatted.
So, for example:
```
The text that is going to be skipped
INPUT
This will be skipped as well /{1 2 3}/
```
Will be converted to pair `(INPUT, "1 2 3")`.
If there are multiple tags only the last one will define bracketed text's meaning.
There are two categories of tags: the ones that define some features of a particular test and the ones that define features of an entire tests file. Only one definition of each feature is allowed, so when multiple File feature definitions are present in file, the last one is used. Redifinitions of Test features mark the beginning of a new test.
For example, file with such contents:
```
DESCRIPTION /{Description 1}/
DESCRIPTION /{Description 2}/ <- DESCRIPTION is redefined
COMMENT /{Empty test}/
MAIN /{int sum(int a, int b) { return a + b; }}/
COMMENT <- the start of a new test
/{Some other test}/
INPUT
/{1}/
OUTPUT
/{}/
```
Will be translated to File features: `{(DESCRIPTION, "Description 2"), (MAIN, "int sum(int a, int b) { return a + b; }")}`, and two tests: `{(COMMENT, "Empty test")}` and `{(COMMENT, "Some other test"), (INPUT, "1"), (OUTPUT, "")}`
Tests without `OUTPUT` feature are considered unfilled and VIVAL wont't run given program on them. These tests can be filled in manually or using another executable.
## Filling in
Fill mode activates with flag `-m`:
`vival <executable or source code> -t <path/tests.txt> -m fill`
VIVAL in fill mode runs given executable on unfilled tests, saving the output from stdout. \
But it will be lost unless `-o <path/output.txt>` is specified:
`vival <executable or source code> -t <path/tests.txt> -m fill -o <path/output.txt>`
In which case executable's output on a test will be saved as `OUTPUT` feature of test and then resulting filled tests will be written to `output.txt`.
# Contribution
If you found a bug or just isn't sure how to use VIVAL, please consider creating an issue describing your problem. It might help other users as well as future project development.
If you want to fix any known bug or add new functionality, fork this repository, add any changes you think are necessary, push, and create pull request. They will appear on PyPI as soon as your PR is merged.
%prep
%autosetup -n vival-3.5.0
%build
%py3_build
%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .
%files -n python3-vival -f filelist.lst
%dir %{python3_sitelib}/*
%files help -f doclist.lst
%{_docdir}/*
%changelog
* Mon May 29 2023 Python_Bot <Python_Bot@openeuler.org> - 3.5.0-1
- Package Spec generated
|