annotate tests/test-fuzz-targets.t @ 43597:856cce0c255c stable

py3: avoid iterating over a literal bytes in highlight In Python 3, iterating over a bytes literal yields integers. Since we use the value in `text.replace()`, this fails on Python 3 with the following trackback: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/mercurial/hgweb/hgwebdir_mod.py", line 378, in run_wsgi for r in self._runwsgi(req, res): File "/usr/lib/python3/dist-packages/mercurial/hgweb/hgweb_mod.py", line 326, in run_wsgi for r in self._runwsgi(req, res, repo): File "/usr/lib/python3/dist-packages/mercurial/hgweb/hgweb_mod.py", line 449, in _runwsgi return getattr(webcommands, cmd)(rctx) File "/usr/lib/python3/dist-packages/mercurial/hgweb/webcommands.py", line 211, in file return _filerevision(web, webutil.filectx(web.repo, web.req)) File "/usr/lib/python3/dist-packages/hgext/highlight/__init__.py", line 72, in filerevision_highlight pygmentize(web, b'fileline', fctx, web.tmpl) File "/usr/lib/python3/dist-packages/hgext/highlight/__init__.py", line 58, in pygmentize field, fctx, style, tmpl, guessfilenameonly=filenameonly File "/usr/lib/python3/dist-packages/hgext/highlight/highlight.py", line 62, in pygmentize text = text.replace(c, b'') TypeError: a bytes-like object is required, not 'int'
author Denis Laxalde <denis.laxalde@logilab.fr>
date Tue, 12 Nov 2019 11:05:03 +0100
parents 39cab871e880
children 19da643dc10c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38236
a6347ae6168d test-fuzz-targets: look for clang-6.0 binary as well
Yuya Nishihara <yuya@tcha.org>
parents: 38235
diff changeset
1 #require test-repo
a6347ae6168d test-fuzz-targets: look for clang-6.0 binary as well
Yuya Nishihara <yuya@tcha.org>
parents: 38235
diff changeset
2
35670
2b9e2415f5b5 contrib: add some basic scaffolding for some fuzz test targets
Augie Fackler <augie@google.com>
parents:
diff changeset
3 $ cd $TESTDIR/../contrib/fuzz
38236
a6347ae6168d test-fuzz-targets: look for clang-6.0 binary as well
Yuya Nishihara <yuya@tcha.org>
parents: 38235
diff changeset
4
40726
6c01fad8de32 tests: sniff for /usr/local/bin/gmake and use it in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 38246
diff changeset
5 which(1) could exit nonzero, but that's fine because we'll still end
6c01fad8de32 tests: sniff for /usr/local/bin/gmake and use it in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 38246
diff changeset
6 up without a valid executable, so we don't need to check $? here.
6c01fad8de32 tests: sniff for /usr/local/bin/gmake and use it in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 38246
diff changeset
7
6c01fad8de32 tests: sniff for /usr/local/bin/gmake and use it in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 38246
diff changeset
8 $ if which gmake >/dev/null 2>&1; then
6c01fad8de32 tests: sniff for /usr/local/bin/gmake and use it in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 38246
diff changeset
9 > MAKE=gmake
6c01fad8de32 tests: sniff for /usr/local/bin/gmake and use it in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 38246
diff changeset
10 > else
6c01fad8de32 tests: sniff for /usr/local/bin/gmake and use it in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 38246
diff changeset
11 > MAKE=make
6c01fad8de32 tests: sniff for /usr/local/bin/gmake and use it in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 38246
diff changeset
12 > fi
6c01fad8de32 tests: sniff for /usr/local/bin/gmake and use it in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 38246
diff changeset
13
40727
d9fc51f77cc5 tests: sniff for libfuzzer actually being available in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 40726
diff changeset
14 $ havefuzz() {
d9fc51f77cc5 tests: sniff for libfuzzer actually being available in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 40726
diff changeset
15 > cat > $TESTTMP/dummy.cc <<EOF
d9fc51f77cc5 tests: sniff for libfuzzer actually being available in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 40726
diff changeset
16 > #include <stdlib.h>
d9fc51f77cc5 tests: sniff for libfuzzer actually being available in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 40726
diff changeset
17 > #include <stdint.h>
d9fc51f77cc5 tests: sniff for libfuzzer actually being available in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 40726
diff changeset
18 > int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { return 0; }
d9fc51f77cc5 tests: sniff for libfuzzer actually being available in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 40726
diff changeset
19 > int main(int argc, char **argv) {
d9fc51f77cc5 tests: sniff for libfuzzer actually being available in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 40726
diff changeset
20 > const char data[] = "asdf";
d9fc51f77cc5 tests: sniff for libfuzzer actually being available in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 40726
diff changeset
21 > return LLVMFuzzerTestOneInput((const uint8_t *)data, 4);
d9fc51f77cc5 tests: sniff for libfuzzer actually being available in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 40726
diff changeset
22 > }
d9fc51f77cc5 tests: sniff for libfuzzer actually being available in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 40726
diff changeset
23 > EOF
d9fc51f77cc5 tests: sniff for libfuzzer actually being available in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 40726
diff changeset
24 > $CXX $TESTTMP/dummy.cc -o $TESTTMP/dummy \
d9fc51f77cc5 tests: sniff for libfuzzer actually being available in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 40726
diff changeset
25 > -fsanitize=fuzzer-no-link,address || return 1
d9fc51f77cc5 tests: sniff for libfuzzer actually being available in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 40726
diff changeset
26 > }
d9fc51f77cc5 tests: sniff for libfuzzer actually being available in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 40726
diff changeset
27
38236
a6347ae6168d test-fuzz-targets: look for clang-6.0 binary as well
Yuya Nishihara <yuya@tcha.org>
parents: 38235
diff changeset
28 #if clang-libfuzzer
40727
d9fc51f77cc5 tests: sniff for libfuzzer actually being available in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 40726
diff changeset
29 $ CXX=clang++ havefuzz || exit 80
40726
6c01fad8de32 tests: sniff for /usr/local/bin/gmake and use it in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 38246
diff changeset
30 $ $MAKE -s clean all
38236
a6347ae6168d test-fuzz-targets: look for clang-6.0 binary as well
Yuya Nishihara <yuya@tcha.org>
parents: 38235
diff changeset
31 #endif
a6347ae6168d test-fuzz-targets: look for clang-6.0 binary as well
Yuya Nishihara <yuya@tcha.org>
parents: 38235
diff changeset
32 #if no-clang-libfuzzer clang-6.0
40727
d9fc51f77cc5 tests: sniff for libfuzzer actually being available in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 40726
diff changeset
33 $ CXX=clang++-6.0 havefuzz || exit 80
40726
6c01fad8de32 tests: sniff for /usr/local/bin/gmake and use it in test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 38246
diff changeset
34 $ $MAKE -s clean all CC=clang-6.0 CXX=clang++-6.0
38236
a6347ae6168d test-fuzz-targets: look for clang-6.0 binary as well
Yuya Nishihara <yuya@tcha.org>
parents: 38235
diff changeset
35 #endif
a6347ae6168d test-fuzz-targets: look for clang-6.0 binary as well
Yuya Nishihara <yuya@tcha.org>
parents: 38235
diff changeset
36 #if no-clang-libfuzzer no-clang-6.0
a6347ae6168d test-fuzz-targets: look for clang-6.0 binary as well
Yuya Nishihara <yuya@tcha.org>
parents: 38235
diff changeset
37 $ exit 80
a6347ae6168d test-fuzz-targets: look for clang-6.0 binary as well
Yuya Nishihara <yuya@tcha.org>
parents: 38235
diff changeset
38 #endif
a6347ae6168d test-fuzz-targets: look for clang-6.0 binary as well
Yuya Nishihara <yuya@tcha.org>
parents: 38235
diff changeset
39
38172
24cc2969abae tests: update fuzzer tests to include both fuzzers
Augie Fackler <augie@google.com>
parents: 35670
diff changeset
40 Just run the fuzzers for five seconds each to verify it works at all.
35670
2b9e2415f5b5 contrib: add some basic scaffolding for some fuzz test targets
Augie Fackler <augie@google.com>
parents:
diff changeset
41 $ ./bdiff -max_total_time 5
38246
46dcb9f14900 fuzz: new fuzzer for the mpatch code
Augie Fackler <augie@google.com>
parents: 38236
diff changeset
42 $ ./mpatch -max_total_time 5
38172
24cc2969abae tests: update fuzzer tests to include both fuzzers
Augie Fackler <augie@google.com>
parents: 35670
diff changeset
43 $ ./xdiff -max_total_time 5
42948
39cab871e880 tests: clean up built binaries after running test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 40727
diff changeset
44
39cab871e880 tests: clean up built binaries after running test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 40727
diff changeset
45 Clean up.
39cab871e880 tests: clean up built binaries after running test-fuzz-targets.t
Augie Fackler <augie@google.com>
parents: 40727
diff changeset
46 $ $MAKE -s clean