Commit Graph
14 Commits
Author SHA1 Message Date
Max LvandClaude Opus 4.6 238b93cad4 Fix Linux build: link libm for test_jconf (json.c uses pow)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 16:57:58 +08:00
Max LvandClaude Opus 4.6 40083f1cb7 Fix Linux build: link libm for test_buffer and test_crypto, fix warnings
Both test_buffer and test_crypto link libbloom.so which uses log() from
libm. Also fix unused variable warnings in test_json.c that would fail
with -Werror.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 16:55:58 +08:00
Max LvandClaude Opus 4.6 9ec2620599 Fix test_ppbloom link: add libm for bloom's log()
On Linux, libbloom uses log() which requires explicit -lm linkage.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 16:52:36 +08:00
Max LvandClaude Opus 4.6 ccd6ab4b39 Fix test build on Linux: add stdint.h and link libm
- test_ppbloom.c: add missing #include <stdint.h> for uint8_t
- test_json: link against libm for pow() used in json.c

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 16:50:55 +08:00
Max LvandClaude Opus 4.6 e36d03b5f6 Migrate from PCRE to PCRE2
Replace legacy PCRE (libpcre3) with PCRE2 (libpcre2-8). PCRE1 has been
end-of-life since 2021.

- src/rule.h: use pcre2_code and pcre2_match_data types
- src/rule.c: pcre_compile -> pcre2_compile, pcre_exec -> pcre2_match,
  pcre_free -> pcre2_code_free, with proper error message retrieval
- cmake/FindPCRE.cmake -> cmake/FindPCRE2.cmake: find libpcre2-8 via
  pkg-config, pcre2-config, or manual search
- Update all CMakeLists.txt, config.h.cmake, configure.cmake, README.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 16:40:27 +08:00
Max LvandClaude Opus 4.6 1c404eccf4 Modernize build: switch to CMake, add unit tests, fix man pages
Remove autotools (configure.ac, Makefile.am, m4/, autogen.sh) and make
CMake the sole build system. Enhance CMake with proper Find modules for
MbedTLS, libsodium, PCRE, and c-ares with version/feature detection.
Add support for connmarktos, nftables, stack protector, and MinGW.

Add 10 unit test suites (CTest) covering base64, buffer, cache, crypto,
jconf, json, netutils, ppbloom, rule, and utils modules. Add a Python
stress test measuring bandwidth per cipher with memory leak detection.

Fix man page typos ("Resovle" -> "Resolve"), document missing TCP buffer
options, fix ss-manager duplicate --executable entry, add example section
to ss-tunnel, and document --workdir and --nftables-sets options.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 16:40:27 +08:00
Boyuan Yang defa4f8dcf tests/test.py: Make script compatible with python3
Currently the test script assumes the returned web page is always encoded in UTF-8, which might not be the case. It is likely that the real encoding is `ISO-8859-1` and that running the script under python3 will raise error:

```
< 
{ [11931 bytes data]
100 11923    0 11923    0     0   184k      0 --:--:-- --:--:-- --:--:--  187k
Traceback (most recent call last):
  File "tests/test.py", line 106, in <module>
    line = str(line, 'utf8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 in position 1105: invalid start byte
```
This pull request makes no assumption on the returned data and send the raw output to stderr as `bytes`. This should allow the test script to finish successfully when `tests/test.py` is run by python3.
2020-01-31 16:11:21 -05:00
Colin Watson 4a4531d866 skip tests if an upstream HTTP proxy is set
shadowsocks-libev doesn't support connecting through an upstream HTTP
proxy, so if the test environment requires that then there's nothing we can
do.  (In future it might be possible to set up a local server to avoid this
problem.)
2018-06-09 16:31:25 +09:00
Roger Shimizu 44c557c170 Update config under tests/ folder
Fix tests by using "local" setting instead of "local_address" in config.

This is mentioned in:
- https://github.com/shadowsocks/shadowsocks-libev/issues/247
2018-06-09 15:54:08 +09:00
Roger Shimizu 1637ff6127 tests: Change the port to listen from 8388 to 8389
8388 is already taken by default config, so for test suites it's
better to choose a different port.
2017-12-17 15:15:27 +09:00
Roger Shimizu fc11e6ae8a tests: run tests binary either in src/ folder or system 2017-11-16 00:32:16 +09:00
Roger Shimizu ad76fd526e tests: Add param --bin to specify the binrary path
Default is to use the system installed version, in $PATH.
2017-11-16 00:10:33 +09:00
Roger Shimizu 7c38284334 tests: Update default dns setting in tests
Set default dns to 8.8.8.8 for tests/test.py
2017-11-15 23:10:46 +09:00
Max Lv f3c3080b94 Fix #1782 2017-11-13 10:40:28 +08:00