-
Notifications
You must be signed in to change notification settings - Fork 4
140 lines (122 loc) · 4.41 KB
/
test.yaml
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
name: Test enclone
on:
pull_request:
push:
branches:
- main
env:
DENY_VERSION: "0.13.7"
RUST_VERSION: "1.68"
CARGO_INCREMENTAL: 0
permissions:
contents: read
# Write permissions are required in order to produce annotations.
checks: write
jobs:
test-mac:
# This job runs on MacOS Catalina
runs-on: macos-latest
steps:
- name: Install protoc
run: brew install protobuf
- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_VERSION }}
components: rustfmt
# check out master
- name: Checkout enclone master
uses: actions/checkout@master
- uses: Swatinem/rust-cache@v2
# start the real work
- name: Remove the Cargo target directory
if: github.ref == 'refs/heads/master'
run: cargo clean
- name: build-enclone
run: cargo build
- name: unit tests
run: cargo test -- --nocapture
test-linux:
# This job runs on Linux
runs-on: ubuntu-latest
steps:
- name: Install protoc
run: sudo apt-get install -y protobuf-compiler
- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_VERSION }}
components: rustfmt, clippy
# check out
- name: Compute required fetch depth
id: fetch_depth
run: >
echo
"depth=$(("${{github.event.pull_request.commits}}" + 2))"
>> "$GITHUB_OUTPUT"
- uses: actions/checkout@v3
with:
fetch-depth: ${{ steps.fetch_depth.outputs.depth }}
# set up caching
- uses: Swatinem/rust-cache@v2
# start the real work
- name: Check for large files
run: >
git rev-list --objects ${{github.event.pull_request.base.sha}}..
| git cat-file --batch-check='%(objectname) %(objecttype) %(objectsize) %(rest)'
| awk '$2 == "blob" && $3 >= 1600000 { print substr($1, 1, 7), $3, $4; fail=1 } END { exit fail }'
- name: Remove the Cargo target directory
if: github.ref == 'refs/heads/master'
run: cargo clean
- name: Install cargo-deny
run: |
wget https://github.com/EmbarkStudios/cargo-deny/releases/download/${DENY_VERSION}/cargo-deny-${DENY_VERSION}-x86_64-unknown-linux-musl.tar.gz
tar -xvf cargo-deny-${DENY_VERSION}-x86_64-unknown-linux-musl.tar.gz
mkdir -p ~/bin/
cp cargo-deny-${DENY_VERSION}-x86_64-unknown-linux-musl/cargo-deny ~/bin/
rm -r cargo-deny-${DENY_VERSION}-x86_64-unknown-linux-musl*
echo "$HOME/bin" >> $GITHUB_PATH
- name: Check Rust formatting
run: cargo fmt -- --check
- name: Deny duplicate dependencies (lib/rust)
run: cargo deny --locked check
- name: Run clippy
uses: 10XGenomics/clippy-check@main
with:
# Github limits the number of annotations it will display on a PR for
# a given action, so we're going to disable (for now!) some of the
# noisier lints so that more important ones are more likely to be
# visible.
# NOTE: keep this list in sync with lib/rust/.cargo/config, or else
# which is ignored when running in this mode but not when
# running locally.
# TODO: re-enable the allowed lints at the end of this list.
args: |
--all-targets --locked --
-D clippy::perf
-D clippy::style
-D clippy::suspicious
-A clippy::comparison_chain
-W future_incompatible
-W nonstandard_style
-W rust_2018_compatibility
-W rust_2021_compatibility
-W unused
-D clippy::enum_glob_use
-D clippy::needless_lifetimes
-D clippy::redundant_closure_for_method_calls
-D clippy::unused_io_amount
-D clippy::wildcard_imports
-D clippy::unnecessary_unwrap
-D clippy::uninlined_format_args
-W clippy::disallowed_names
-W clippy::enum_variant_names
-W clippy::large-enum-variant
-W clippy::missing_safety_doc
-A clippy::type_complexity
-A clippy::too_many_arguments
-W clippy::result_unit_err
- name: build-enclone
run: cargo build
- name: unit tests
run: cargo test -- --nocapture