From a96317a79dac9d82c334e206c7c524e77f13217e Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 16 Oct 2019 18:52:36 +0200 Subject: [PATCH 1/4] Android: skip tests that check UNIX user account setup * there is no ~ or HOME in Android * UIDs and GIDs in Android represent apps, not users, and Android apps cannot ever change UIDs This should be replaced by whatever @nmathewson wants to name this stuff: https://github.com/torproject/tor/pull/1436 --- src/test/test_util.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/test/test_util.c b/src/test/test_util.c index 7f7e157c17..ff0247fa08 100644 --- a/src/test/test_util.c +++ b/src/test/test_util.c @@ -5653,7 +5653,7 @@ test_util_touch_file(void *arg) ; } -#ifndef _WIN32 +#if !(defined(_WIN32) || defined (__ANDROID__)) static void test_util_pwdb(void *arg) { @@ -5725,7 +5725,7 @@ test_util_pwdb(void *arg) tor_free(dir); teardown_capture_of_logs(); } -#endif /* !defined(_WIN32) */ +#endif /* !(defined(_WIN32) || defined (__ANDROID__)) */ static void test_util_calloc_check(void *arg) @@ -6296,6 +6296,10 @@ test_util_map_anon_nofork(void *arg) #define UTIL_TEST_NO_WIN(n, f) { #n, NULL, TT_SKIP, NULL, NULL } #define UTIL_TEST_WIN_ONLY(n, f) UTIL_TEST(n, (f)) #define UTIL_LEGACY_NO_WIN(n) UTIL_TEST_NO_WIN(n, 0) +#elif defined(__ANDROID__) +#define UTIL_TEST_NO_WIN(n, f) { #n, NULL, TT_SKIP, NULL, NULL } +#define UTIL_TEST_WIN_ONLY(n, f) { #n, NULL, TT_SKIP, NULL, NULL } +#define UTIL_LEGACY_NO_WIN(n) UTIL_TEST_NO_WIN(n, 0) #else #define UTIL_TEST_NO_WIN(n, f) UTIL_TEST(n, (f)) #define UTIL_TEST_WIN_ONLY(n, f) { #n, NULL, TT_SKIP, NULL, NULL } From 5c6fc5250e2ab4f0ffb935d018ece39bfa274f87 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Fri, 20 Dec 2019 09:57:47 -0500 Subject: [PATCH 2/4] test_util: remove UTIL_LEGACY_NO_WIN. It was only used in one place. --- src/test/test_util.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/test/test_util.c b/src/test/test_util.c index ff0247fa08..cd745c4427 100644 --- a/src/test/test_util.c +++ b/src/test/test_util.c @@ -6295,15 +6295,12 @@ test_util_map_anon_nofork(void *arg) #ifdef _WIN32 #define UTIL_TEST_NO_WIN(n, f) { #n, NULL, TT_SKIP, NULL, NULL } #define UTIL_TEST_WIN_ONLY(n, f) UTIL_TEST(n, (f)) -#define UTIL_LEGACY_NO_WIN(n) UTIL_TEST_NO_WIN(n, 0) #elif defined(__ANDROID__) #define UTIL_TEST_NO_WIN(n, f) { #n, NULL, TT_SKIP, NULL, NULL } #define UTIL_TEST_WIN_ONLY(n, f) { #n, NULL, TT_SKIP, NULL, NULL } -#define UTIL_LEGACY_NO_WIN(n) UTIL_TEST_NO_WIN(n, 0) #else #define UTIL_TEST_NO_WIN(n, f) UTIL_TEST(n, (f)) #define UTIL_TEST_WIN_ONLY(n, f) { #n, NULL, TT_SKIP, NULL, NULL } -#define UTIL_LEGACY_NO_WIN(n) UTIL_LEGACY(n) #endif /* defined(_WIN32) */ struct testcase_t util_tests[] = { @@ -6314,7 +6311,7 @@ struct testcase_t util_tests[] = { UTIL_LEGACY(config_line_comment_character), UTIL_LEGACY(config_line_escaped_content), UTIL_LEGACY(config_line_crlf), - UTIL_LEGACY_NO_WIN(expand_filename), + UTIL_TEST_NO_WIN(expand_filename, 0), UTIL_LEGACY(escape_string_socks), UTIL_LEGACY(string_is_key_value), UTIL_LEGACY(strmisc), From ac7d6f3c05c47e1ca2e4d65d9b849ee2907b0f55 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Fri, 20 Dec 2019 10:04:56 -0500 Subject: [PATCH 3/4] Rename UTIL_TEST_NO_WIN to reflect intent Now that these tests are skipped on windows _and_ android, we should name the macro that skips them after the functionality that the tests depend on. Closes last part of 32825. --- src/test/test_util.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/test/test_util.c b/src/test/test_util.c index cd745c4427..b9450b29f8 100644 --- a/src/test/test_util.c +++ b/src/test/test_util.c @@ -72,6 +72,11 @@ #include #include +/* These platforms don't have meaningful pwdb or homedirs. */ +#if defined(_WIN32) || defined(__ANDROID__) +#define DISABLE_PWDB_TESTS +#endif + #define INFINITY_DBL ((double)INFINITY) #define NAN_DBL ((double)NAN) @@ -1845,7 +1850,7 @@ test_util_config_line_crlf(void *arg) tor_free(k); tor_free(v); } -#ifndef _WIN32 +#ifndef DISABLE_PWDB_TESTS static void test_util_expand_filename(void *arg) { @@ -5653,7 +5658,7 @@ test_util_touch_file(void *arg) ; } -#if !(defined(_WIN32) || defined (__ANDROID__)) +#ifndef DISABLE_PWDB_TESTS static void test_util_pwdb(void *arg) { @@ -6293,15 +6298,16 @@ test_util_map_anon_nofork(void *arg) #endif /* !defined(COCCI) */ #ifdef _WIN32 -#define UTIL_TEST_NO_WIN(n, f) { #n, NULL, TT_SKIP, NULL, NULL } #define UTIL_TEST_WIN_ONLY(n, f) UTIL_TEST(n, (f)) -#elif defined(__ANDROID__) -#define UTIL_TEST_NO_WIN(n, f) { #n, NULL, TT_SKIP, NULL, NULL } -#define UTIL_TEST_WIN_ONLY(n, f) { #n, NULL, TT_SKIP, NULL, NULL } #else -#define UTIL_TEST_NO_WIN(n, f) UTIL_TEST(n, (f)) #define UTIL_TEST_WIN_ONLY(n, f) { #n, NULL, TT_SKIP, NULL, NULL } -#endif /* defined(_WIN32) */ +#endif + +#ifdef DISABLE_PWDB_TESTS +#define UTIL_TEST_PWDB(n, f) { #n, NULL, TT_SKIP, NULL, NULL } +#else +#define UTIL_TEST_PWDB(n, f) UTIL_TEST(n, (f)) +#endif struct testcase_t util_tests[] = { UTIL_LEGACY(time), @@ -6311,7 +6317,7 @@ struct testcase_t util_tests[] = { UTIL_LEGACY(config_line_comment_character), UTIL_LEGACY(config_line_escaped_content), UTIL_LEGACY(config_line_crlf), - UTIL_TEST_NO_WIN(expand_filename, 0), + UTIL_TEST_PWDB(expand_filename, 0), UTIL_LEGACY(escape_string_socks), UTIL_LEGACY(string_is_key_value), UTIL_LEGACY(strmisc), @@ -6396,7 +6402,7 @@ struct testcase_t util_tests[] = { UTIL_TEST(writepid, 0), UTIL_TEST(get_avail_disk_space, 0), UTIL_TEST(touch_file, 0), - UTIL_TEST_NO_WIN(pwdb, TT_FORK), + UTIL_TEST_PWDB(pwdb, TT_FORK), UTIL_TEST(calloc_check, 0), UTIL_TEST(monotonic_time, 0), UTIL_TEST(monotonic_time_ratchet, TT_FORK), From 8ab9f93993dd53ae0fdadae88da48a660ad3f4e3 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Fri, 20 Dec 2019 10:06:08 -0500 Subject: [PATCH 4/4] changes file for 32825 --- changes/bug32825 | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 changes/bug32825 diff --git a/changes/bug32825 b/changes/bug32825 new file mode 100644 index 0000000000..c51f2f8574 --- /dev/null +++ b/changes/bug32825 @@ -0,0 +1,4 @@ + o Minor features (portability, android): + - When building for Android, disable some tests that depend on + $HOME and/or pwdb, which Android doesn't have. Closes ticket 32825. + Patch from Hans-Christoph Steiner.