-
Notifications
You must be signed in to change notification settings - Fork 115
167 lines (136 loc) · 4.68 KB
/
tact.yml
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
name: Tact CI
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
workflow_dispatch:
jobs:
test:
strategy:
fail-fast: false
matrix:
node-version: [20]
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: "yarn"
- name: Install dependencies
run: |
corepack enable
yarn install
- name: List installed packages
run: |
yarn list
- name: Print some environment info
run: |
yarn cross-env echo $NODE_ENV
- name: Build Tact compiler
run: |
yarn clean
yarn gen
yarn build
- name: Check there are no errors to be fixed in package.json and no uncommited changes
run: |
npm pkg fix && git diff --exit-code
- name: Test Tact compiler
run: |
yarn coverage
- name: Check there are no errors reported by ESLint
run: |
yarn lint
- name: Check formatting with Prettier
run: |
yarn fmt:check
- name: Check that tact.config.json adheres to the JSON schema
run: |
yarn lint:schema
- name: Spellcheck code base
run: |
yarn spell
- name: Check there are no unused dependencies
run: |
yarn knip
- name: Run ShellCheck
uses: ludeeus/action-shellcheck@master
if: runner.os != 'Windows'
with:
scandir: "./scripts"
- name: Show an example .pkg file on Windows
if: runner.os == 'Windows'
run: |
type examples\output\echo_Echo.pkg
- name: Link Tact yarn package
run: |
yarn link
- name: CLI Test | Check tact --version
if: runner.os != 'Windows'
run: |
tact --version
- name: CLI Test | Compare Tact version from CLI flag `--version` against package.json
if: runner.os != 'Windows'
run: |
if [ "$(tact --version | head -n1)" != "$(jq -r '.version' < package.json)" ];
then false
fi
- name: CLI Test | Check single-contract compilation
if: runner.os != 'Windows'
run: |
tact --check bin/test/success.tact
tact --func bin/test/success.tact
tact bin/test/success.tact
tact --with-decompilation bin/test/success.tact
- name: CLI Test | Check compilation via `--config`
if: runner.os != 'Windows'
run: |
# should output complete results
tact --config bin/test/success.config.json
# should output complete result + decompile binary code
tact --config bin/test/success.config.with.decompilation.json
# should only run the syntax and type checking
tact --config bin/test/success.config.json --check
- name: CLI Test | Check parsing of mutually exclusive flags - 1
if: runner.os != 'Windows'
run: |
! tact --func --check bin/test/success.config.json
- name: CLI Test | Check parsing of mutually exclusive flags - 2
if: runner.os != 'Windows'
run: |
! tact --with-decompilation --check bin/test/success.config.json
- name: CLI Test | Check parsing of mutually exclusive flags - 3
if: runner.os != 'Windows'
run: |
! tact --func --with-decompilation bin/test/success.config.json
- name: CLI Test | Check parsing of a non-existing CLI flag
if: runner.os != 'Windows'
run: |
! tact --nonexistentoption bin/test/success.config.json
- name: CLI Test | tact executable return non-zero exit code if compilation fails
if: runner.os != 'Windows'
run: |
! tact --config bin/test/fail.config.json
- name: CLI Test | Evaluate expression
if: runner.os != 'Windows'
run: |
tact -e '(1 + 2 * (pow(3,4) - 2) << 1 & 0x54 | 33 >> 1) * 2 + 2'
- name: Test compatibility with tact-template
run: |
git clone https://github.com/tact-lang/tact-template.git
cd tact-template
yarn install
yarn link @tact-lang/compiler
yarn build
yarn test
- name: Test compatibility with Blueprint
run: |
yarn create ton -- test-project --type tact-counter --contractName Counter &&
cd test-project &&
yarn link @tact-lang/compiler &&
yarn build &&
yarn test