leak_test.c 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*
  2. * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. /*
  7. Tests for a leak tag
  8. */
  9. #include <stdio.h>
  10. #include "unity.h"
  11. #include "esp_heap_caps_init.h"
  12. #include "esp_system.h"
  13. #include <stdlib.h>
  14. static char* check_calloc(int size)
  15. {
  16. char *arr = calloc(size, sizeof(char));
  17. TEST_ASSERT_NOT_NULL(arr);
  18. return arr;
  19. }
  20. TEST_CASE("Check for leaks (no leak)", "[test_utils]")
  21. {
  22. char *arr = check_calloc(1000);
  23. free(arr);
  24. }
  25. TEST_CASE("Check for leaks (leak)", "[test_utils][ignore]")
  26. {
  27. check_calloc(1000);
  28. }
  29. TEST_CASE("Not check for leaks", "[test_utils][leaks]")
  30. {
  31. check_calloc(1000);
  32. }
  33. TEST_CASE("Set a leak level = 7016", "[test_utils][leaks=7016]")
  34. {
  35. check_calloc(7000);
  36. }
  37. static void test_fn(void)
  38. {
  39. check_calloc(1000);
  40. }
  41. TEST_CASE_MULTIPLE_STAGES("Not check for leaks in MULTIPLE_STAGES mode", "[test_utils][leaks]", test_fn, test_fn, test_fn);
  42. TEST_CASE_MULTIPLE_STAGES("Check for leaks in MULTIPLE_STAGES mode (leak)", "[test_utils][ignore]", test_fn, test_fn, test_fn);
  43. static void test_fn2(void)
  44. {
  45. check_calloc(1000);
  46. esp_restart();
  47. }
  48. static void test_fn3(void)
  49. {
  50. check_calloc(1000);
  51. }
  52. TEST_CASE_MULTIPLE_STAGES("Check for leaks in MULTIPLE_STAGES mode (manual reset)", "[test_utils][leaks][reset=SW_CPU_RESET, SW_CPU_RESET]", test_fn2, test_fn2, test_fn3);