Skip to content

Commit 35d9331

Browse files
committed
use Assert command style and fix CI workflow
- switch tests to Assert Equals/Match command style - add .themisrc for command helper setup - use rhysd/action-setup-vim@v1 with stable/nightly - test on ubuntu, macos, windows
1 parent d66a98b commit 35d9331

10 files changed

Lines changed: 110 additions & 112 deletions

File tree

.github/workflows/test.yml

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,31 @@
11
name: Test
2-
on: [push, pull_request]
2+
on:
3+
push:
4+
branches:
5+
- master
6+
pull_request:
7+
branches:
8+
- master
39
jobs:
410
test:
5-
runs-on: ubuntu-latest
611
strategy:
12+
fail-fast: false
713
matrix:
8-
vim:
9-
- v9.1.0
10-
- nightly
14+
os: [ubuntu-latest, macos-latest, windows-latest]
15+
version: [stable, nightly]
16+
runs-on: ${{ matrix.os }}
1117
steps:
1218
- uses: actions/checkout@v4
13-
- name: Setup Vim
14-
uses: thinca/action-setup-vim@v2
19+
- id: vim
20+
uses: rhysd/action-setup-vim@v1
1521
with:
16-
vim_version: ${{ matrix.vim }}
17-
- name: Clone vim-themis
18-
run: git clone --depth 1 https://github.com/thinca/vim-themis.git ../vim-themis
22+
version: ${{ matrix.version }}
23+
- name: Setup vim-themis
24+
uses: actions/checkout@v4
25+
with:
26+
repository: thinca/vim-themis
27+
path: vim-themis
1928
- name: Run tests
20-
run: ../vim-themis/bin/themis test/
29+
env:
30+
THEMIS_VIM: ${{ steps.vim.outputs.executable }}
31+
run: ./vim-themis/bin/themis ./test

test/.themisrc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
set encoding=utf-8
2+
set rtp+=.
3+
call themis#helper('command').with(themis#helper('assert'))

test/base64.vimspec

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,33 @@
1-
let s:assert = themis#helper('assert')
2-
31
Describe webapi#base64#b64encode
42
It encodes string without padding
5-
call s:assert.equals(webapi#base64#b64encode("hello, world"), "aGVsbG8sIHdvcmxk")
3+
Assert Equals(webapi#base64#b64encode("hello, world"), "aGVsbG8sIHdvcmxk")
64
End
75

86
It encodes string with double padding
9-
call s:assert.equals(webapi#base64#b64encode("hello, worldx"), "aGVsbG8sIHdvcmxkeA==")
7+
Assert Equals(webapi#base64#b64encode("hello, worldx"), "aGVsbG8sIHdvcmxkeA==")
108
End
119

1210
It encodes string with single padding
13-
call s:assert.equals(webapi#base64#b64encode("hello, worldxx"), "aGVsbG8sIHdvcmxkeHg=")
11+
Assert Equals(webapi#base64#b64encode("hello, worldxx"), "aGVsbG8sIHdvcmxkeHg=")
1412
End
1513

1614
It encodes string aligned to 3 bytes
17-
call s:assert.equals(webapi#base64#b64encode("hello, worldxxx"), "aGVsbG8sIHdvcmxkeHh4")
15+
Assert Equals(webapi#base64#b64encode("hello, worldxxx"), "aGVsbG8sIHdvcmxkeHh4")
1816
End
1917

2018
It encodes empty string
21-
call s:assert.equals(webapi#base64#b64encode(""), "")
19+
Assert Equals(webapi#base64#b64encode(""), "")
2220
End
2321
End
2422

2523
Describe webapi#base64#b64decode
2624
It decodes string without padding
27-
call s:assert.equals(webapi#base64#b64decode("aGVsbG8sIHdvcmxk"), "hello, world")
25+
Assert Equals(webapi#base64#b64decode("aGVsbG8sIHdvcmxk"), "hello, world")
2826
End
2927

3028
It round-trips strings
3129
for s in ["hello", "hello, world", "hello, worldx", "hello, worldxx", "hello, worldxxx"]
32-
call s:assert.equals(webapi#base64#b64decode(webapi#base64#b64encode(s)), s)
30+
Assert Equals(webapi#base64#b64decode(webapi#base64#b64encode(s)), s)
3331
endfor
3432
End
3533
End

test/bit.vimspec

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,50 @@
1-
let s:assert = themis#helper('assert')
2-
31
Describe webapi#bit#dec2bin
42
It converts decimal to binary string
5-
call s:assert.equals(webapi#bit#dec2bin(0), 0)
6-
call s:assert.equals(webapi#bit#dec2bin(1), '1')
7-
call s:assert.equals(webapi#bit#dec2bin(5), '101')
8-
call s:assert.equals(webapi#bit#dec2bin(255), '11111111')
3+
Assert Equals(webapi#bit#dec2bin(0), 0)
4+
Assert Equals(webapi#bit#dec2bin(1), '1')
5+
Assert Equals(webapi#bit#dec2bin(5), '101')
6+
Assert Equals(webapi#bit#dec2bin(255), '11111111')
97
End
108
End
119

1210
Describe webapi#bit#bin2dec
1311
It converts binary string to decimal
14-
call s:assert.equals(webapi#bit#bin2dec(''), 0)
15-
call s:assert.equals(webapi#bit#bin2dec('1'), 1)
16-
call s:assert.equals(webapi#bit#bin2dec('101'), 5)
17-
call s:assert.equals(webapi#bit#bin2dec('11111111'), 255)
12+
Assert Equals(webapi#bit#bin2dec(''), 0)
13+
Assert Equals(webapi#bit#bin2dec('1'), 1)
14+
Assert Equals(webapi#bit#bin2dec('101'), 5)
15+
Assert Equals(webapi#bit#bin2dec('11111111'), 255)
1816
End
1917
End
2018

2119
Describe webapi#bit#or
2220
It computes bitwise OR
23-
call s:assert.equals(webapi#bit#or(0x0F, 0xF0), 0xFF)
24-
call s:assert.equals(webapi#bit#or(0, 0), 0)
21+
Assert Equals(webapi#bit#or(0x0F, 0xF0), 0xFF)
22+
Assert Equals(webapi#bit#or(0, 0), 0)
2523
End
2624
End
2725

2826
Describe webapi#bit#and
2927
It computes bitwise AND
30-
call s:assert.equals(webapi#bit#and(0xFF, 0x0F), 0x0F)
31-
call s:assert.equals(webapi#bit#and(0xFF, 0), 0)
28+
Assert Equals(webapi#bit#and(0xFF, 0x0F), 0x0F)
29+
Assert Equals(webapi#bit#and(0xFF, 0), 0)
3230
End
3331
End
3432

3533
Describe webapi#bit#xor
3634
It computes bitwise XOR
37-
call s:assert.equals(webapi#bit#xor(0xFF, 0x0F), 0xF0)
38-
call s:assert.equals(webapi#bit#xor(0xFF, 0xFF), 0)
35+
Assert Equals(webapi#bit#xor(0xFF, 0x0F), 0xF0)
36+
Assert Equals(webapi#bit#xor(0xFF, 0xFF), 0)
3937
End
4038
End
4139

4240
Describe webapi#bit#shift
4341
It shifts left
44-
call s:assert.equals(webapi#bit#shift(1, 4), 16)
45-
call s:assert.equals(webapi#bit#shift(1, 8), 256)
42+
Assert Equals(webapi#bit#shift(1, 4), 16)
43+
Assert Equals(webapi#bit#shift(1, 8), 256)
4644
End
4745

4846
It shifts right
49-
call s:assert.equals(webapi#bit#shift(256, -4), 16)
50-
call s:assert.equals(webapi#bit#shift(256, -8), 1)
47+
Assert Equals(webapi#bit#shift(256, -4), 16)
48+
Assert Equals(webapi#bit#shift(256, -8), 1)
5149
End
5250
End

test/hmac.vimspec

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
let s:assert = themis#helper('assert')
2-
31
Describe webapi#hmac#sha1
42
It computes HMAC-SHA1 (RFC 2202 test case 1)
5-
call s:assert.equals(webapi#hmac#sha1(repeat("\x0b", 20), "Hi There"), "b617318655057264e28bc0b6fb378c8ef146be00")
3+
Assert Equals(webapi#hmac#sha1(repeat("\x0b", 20), "Hi There"), "b617318655057264e28bc0b6fb378c8ef146be00")
64
End
75

86
It computes HMAC-SHA1 (RFC 2202 test case 2)
9-
call s:assert.equals(webapi#hmac#sha1("Jefe", "what do ya want for nothing?"), "effcdf6ae5eb2fa2d27416d5f184df9c259a7c79")
7+
Assert Equals(webapi#hmac#sha1("Jefe", "what do ya want for nothing?"), "effcdf6ae5eb2fa2d27416d5f184df9c259a7c79")
108
End
119
End

test/html.vimspec

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,33 @@
1-
let s:assert = themis#helper('assert')
2-
31
Describe webapi#html#encodeEntityReference
42
It encodes newline as LF not CR
5-
call s:assert.equals(webapi#html#encodeEntityReference("\n"), '
')
3+
Assert Equals(webapi#html#encodeEntityReference("\n"), '
')
64
End
75

86
It encodes ampersand
9-
call s:assert.equals(webapi#html#encodeEntityReference('&'), '&')
7+
Assert Equals(webapi#html#encodeEntityReference('&'), '&')
108
End
119

1210
It encodes angle brackets
13-
call s:assert.equals(webapi#html#encodeEntityReference('<'), '&lt;')
14-
call s:assert.equals(webapi#html#encodeEntityReference('>'), '&gt;')
11+
Assert Equals(webapi#html#encodeEntityReference('<'), '&lt;')
12+
Assert Equals(webapi#html#encodeEntityReference('>'), '&gt;')
1513
End
1614

1715
It encodes quotes
18-
call s:assert.equals(webapi#html#encodeEntityReference('"'), '&quot;')
19-
call s:assert.equals(webapi#html#encodeEntityReference("'"), '&apos;')
16+
Assert Equals(webapi#html#encodeEntityReference('"'), '&quot;')
17+
Assert Equals(webapi#html#encodeEntityReference("'"), '&apos;')
2018
End
2119

2220
It encodes space as nbsp
23-
call s:assert.equals(webapi#html#encodeEntityReference(' '), '&nbsp;')
21+
Assert Equals(webapi#html#encodeEntityReference(' '), '&nbsp;')
2422
End
2523
End
2624

2725
Describe webapi#html#decodeEntityReference
2826
It decodes basic entities
29-
call s:assert.equals(webapi#html#decodeEntityReference('&amp;'), '&')
30-
call s:assert.equals(webapi#html#decodeEntityReference('&lt;'), '<')
31-
call s:assert.equals(webapi#html#decodeEntityReference('&gt;'), '>')
32-
call s:assert.equals(webapi#html#decodeEntityReference('&quot;'), '"')
33-
call s:assert.equals(webapi#html#decodeEntityReference('&apos;'), "'")
27+
Assert Equals(webapi#html#decodeEntityReference('&amp;'), '&')
28+
Assert Equals(webapi#html#decodeEntityReference('&lt;'), '<')
29+
Assert Equals(webapi#html#decodeEntityReference('&gt;'), '>')
30+
Assert Equals(webapi#html#decodeEntityReference('&quot;'), '"')
31+
Assert Equals(webapi#html#decodeEntityReference('&apos;'), "'")
3432
End
3533
End

test/http.vimspec

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,54 @@
1-
let s:assert = themis#helper('assert')
2-
31
Describe webapi#http#encodeURI
42
It encodes special characters
5-
call s:assert.equals(webapi#http#encodeURI("hello world"), "hello%20world")
6-
call s:assert.equals(webapi#http#encodeURI("a&b=c"), "a%26b%3Dc")
3+
Assert Equals(webapi#http#encodeURI("hello world"), "hello%20world")
4+
Assert Equals(webapi#http#encodeURI("a&b=c"), "a%26b%3Dc")
75
End
86

97
It preserves unreserved characters
10-
call s:assert.equals(webapi#http#encodeURI("abc123"), "abc123")
11-
call s:assert.equals(webapi#http#encodeURI("a.b-c_d"), "a.b-c_d")
8+
Assert Equals(webapi#http#encodeURI("abc123"), "abc123")
9+
Assert Equals(webapi#http#encodeURI("a.b-c_d"), "a.b-c_d")
1210
End
1311

1412
It encodes dict as query string
15-
call s:assert.equals(webapi#http#encodeURI({'a': '1', 'b': '2'}), "a=1&b=2")
13+
Assert Equals(webapi#http#encodeURI({'a': '1', 'b': '2'}), "a=1&b=2")
1614
End
1715
End
1816

1917
Describe webapi#http#encodeURIComponent
2018
It encodes special characters
21-
call s:assert.equals(webapi#http#encodeURIComponent("a&b"), "a%26b")
19+
Assert Equals(webapi#http#encodeURIComponent("a&b"), "a%26b")
2220
End
2321

2422
It preserves unreserved characters
25-
call s:assert.equals(webapi#http#encodeURIComponent("abc"), "abc")
23+
Assert Equals(webapi#http#encodeURIComponent("abc"), "abc")
2624
End
2725

2826
It encodes space as plus
29-
call s:assert.equals(webapi#http#encodeURIComponent("a b"), "a+b")
27+
Assert Equals(webapi#http#encodeURIComponent("a b"), "a+b")
3028
End
3129

3230
It encodes dict as query string
33-
call s:assert.equals(webapi#http#encodeURIComponent({'a': '1', 'b': '2'}), "a=1&b=2")
31+
Assert Equals(webapi#http#encodeURIComponent({'a': '1', 'b': '2'}), "a=1&b=2")
3432
End
3533
End
3634

3735
Describe webapi#http#decodeURI
3836
It decodes percent-encoded characters
39-
call s:assert.equals(webapi#http#decodeURI("hello%20world"), "hello world")
40-
call s:assert.equals(webapi#http#decodeURI("a%26b"), "a&b")
37+
Assert Equals(webapi#http#decodeURI("hello%20world"), "hello world")
38+
Assert Equals(webapi#http#decodeURI("a%26b"), "a&b")
4139
End
4240

4341
It decodes plus as space
44-
call s:assert.equals(webapi#http#decodeURI("a+b"), "a b")
42+
Assert Equals(webapi#http#decodeURI("a+b"), "a b")
4543
End
4644
End
4745

4846
Describe webapi#http#escape
4947
It encodes special characters
50-
call s:assert.equals(webapi#http#escape("hello world"), "hello%20world")
48+
Assert Equals(webapi#http#escape("hello world"), "hello%20world")
5149
End
5250

5351
It preserves safe characters
54-
call s:assert.equals(webapi#http#escape("a.b-c_d/e"), "a.b-c_d/e")
52+
Assert Equals(webapi#http#escape("a.b-c_d/e"), "a.b-c_d/e")
5553
End
5654
End

test/json.vimspec

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,70 @@
1-
let s:assert = themis#helper('assert')
2-
31
Describe webapi#json#encode
42
It encodes control characters as hex
5-
call s:assert.match(webapi#json#encode("\x01"), '".*01.*"')
6-
call s:assert.match(webapi#json#encode("\x0b"), '".*0b.*"')
7-
call s:assert.match(webapi#json#encode("\x1f"), '".*1f.*"')
3+
Assert Match(webapi#json#encode("\x01"), '".*01.*"')
4+
Assert Match(webapi#json#encode("\x0b"), '".*0b.*"')
5+
Assert Match(webapi#json#encode("\x1f"), '".*1f.*"')
86
End
97

108
It encodes tab, cr, lf with escape sequences
11-
call s:assert.equals(webapi#json#encode("\t"), '"\t"')
12-
call s:assert.equals(webapi#json#encode("\r"), '"\r"')
13-
call s:assert.equals(webapi#json#encode("\n"), '"\n"')
9+
Assert Equals(webapi#json#encode("\t"), '"\t"')
10+
Assert Equals(webapi#json#encode("\r"), '"\r"')
11+
Assert Equals(webapi#json#encode("\n"), '"\n"')
1412
End
1513

1614
It encodes strings
17-
call s:assert.equals(webapi#json#encode("hello"), '"hello"')
15+
Assert Equals(webapi#json#encode("hello"), '"hello"')
1816
End
1917

2018
It encodes numbers
21-
call s:assert.equals(webapi#json#encode(42), 42)
19+
Assert Equals(webapi#json#encode(42), 42)
2220
End
2321

2422
It encodes lists
25-
call s:assert.equals(webapi#json#encode([1, 2, 3]), '[1,2,3]')
23+
Assert Equals(webapi#json#encode([1, 2, 3]), '[1,2,3]')
2624
End
2725

2826
It encodes dicts
29-
call s:assert.equals(webapi#json#encode({'a': 1}), '{"a":1}')
27+
Assert Equals(webapi#json#encode({'a': 1}), '{"a":1}')
3028
End
3129

3230
It encodes null, true, false
33-
call s:assert.equals(webapi#json#encode(function('webapi#json#null')), 'null')
34-
call s:assert.equals(webapi#json#encode(function('webapi#json#true')), 'true')
35-
call s:assert.equals(webapi#json#encode(function('webapi#json#false')), 'false')
31+
Assert Equals(webapi#json#encode(function('webapi#json#null')), 'null')
32+
Assert Equals(webapi#json#encode(function('webapi#json#true')), 'true')
33+
Assert Equals(webapi#json#encode(function('webapi#json#false')), 'false')
3634
End
3735
End
3836

3937
Describe webapi#json#decode
4038
It decodes strings
41-
call s:assert.equals(webapi#json#decode('"hello"'), 'hello')
39+
Assert Equals(webapi#json#decode('"hello"'), 'hello')
4240
End
4341

4442
It decodes numbers
45-
call s:assert.equals(webapi#json#decode('42'), 42)
43+
Assert Equals(webapi#json#decode('42'), 42)
4644
End
4745

4846
It decodes lists
49-
call s:assert.equals(webapi#json#decode('[1,2,3]'), [1, 2, 3])
47+
Assert Equals(webapi#json#decode('[1,2,3]'), [1, 2, 3])
5048
End
5149

5250
It decodes dicts
53-
call s:assert.equals(webapi#json#decode('{"a":1}'), {'a': 1})
51+
Assert Equals(webapi#json#decode('{"a":1}'), {'a': 1})
5452
End
5553

5654
It decodes nested structures
57-
call s:assert.equals(webapi#json#decode('{"a":[1,2]}'), {'a': [1, 2]})
55+
Assert Equals(webapi#json#decode('{"a":[1,2]}'), {'a': [1, 2]})
5856
End
5957

6058
It decodes true and false
61-
call s:assert.equals(webapi#json#decode('true'), 1)
62-
call s:assert.equals(webapi#json#decode('false'), 0)
59+
Assert Equals(webapi#json#decode('true'), 1)
60+
Assert Equals(webapi#json#decode('false'), 0)
6361
End
6462

6563
It decodes null
66-
call s:assert.equals(webapi#json#decode('null'), 0)
64+
Assert Equals(webapi#json#decode('null'), 0)
6765
End
6866

6967
It decodes unicode escapes
70-
call s:assert.equals(webapi#json#decode('"hello\u0020world"'), 'hello world')
68+
Assert Equals(webapi#json#decode('"hello\u0020world"'), 'hello world')
7169
End
7270
End

0 commit comments

Comments
 (0)