From f9155ff416851e1a5523df92457fbc31a11141a8 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Wed, 20 Sep 2017 10:10:02 -0400 Subject: [PATCH] Unit test to make sure that our platform string is parseable Closes 22109. --- changes/bug22109 | 3 +++ src/test/test_dir.c | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 changes/bug22109 diff --git a/changes/bug22109 b/changes/bug22109 new file mode 100644 index 0000000000..51eb49ebf2 --- /dev/null +++ b/changes/bug22109 @@ -0,0 +1,3 @@ + o Minor features (tests): + - Add a unit test to make sure that our own generated platform string + will be accepted by directory authorities. Closes ticket 22109. diff --git a/src/test/test_dir.c b/src/test/test_dir.c index 2d48cfc3c4..b920655db5 100644 --- a/src/test/test_dir.c +++ b/src/test/test_dir.c @@ -6140,6 +6140,29 @@ test_dir_post_parsing(void *arg) ; } +static void +test_dir_platform_str(void *arg) +{ + char platform[256]; + (void)arg; + platform[0] = 0; + get_platform_str(platform, sizeof(platform)); + tt_int_op((int)strlen(platform), OP_GT, 0); + tt_assert(!strcmpstart(platform, "Tor ")); + + tor_version_t ver; + // make sure this is a tor version, a real actual tor version. + tt_int_op(tor_version_parse_platform(platform, &ver, 1), OP_EQ, 1); + + TT_BLATHER(("%d.%d.%d.%d", ver.major, ver.minor, ver.micro, ver.patchlevel)); + + // Handle an example version. + tt_int_op(tor_version_parse_platform( + "Tor 0.3.3.3 (foo) (git-xyzzy) on a potato", &ver, 1), OP_EQ, 1); + done: + ; +} + #define DIR_LEGACY(name) \ { #name, test_dir_ ## name , TT_FORK, NULL, NULL } @@ -6205,6 +6228,7 @@ struct testcase_t dir_tests[] = { DIR_ARG(find_dl_schedule, TT_FORK, "car"), DIR(assumed_flags, 0), DIR(networkstatus_compute_bw_weights_v10, 0), + DIR(platform_str, 0), END_OF_TESTCASES };