]> granicus.if.org Git - esp-idf/blob - .gitlab-ci.yml
Merge branch 'test/ut_script' into 'master'
[esp-idf] / .gitlab-ci.yml
1 stages:
2   - build
3   - assign_test
4   - unit_test
5   - test
6   - test_report
7   - deploy
8
9 variables:
10 # System environment
11
12   # Common parameters for the 'make' during CI tests
13   MAKEFLAGS: "-j5 --no-keep-going"
14
15 # GitLab-CI environment
16
17   # more attempts for more robust
18   GET_SOURCES_ATTEMPTS: "10"
19   ARTIFACT_DOWNLOAD_ATTEMPTS: "10"
20
21   # We use get_sources.sh script to fetch the submodules and/or re-fetch the repo
22   # if it was corrupted (if submodule update fails this can happen)
23   GIT_STRATEGY: fetch
24   GIT_SUBMODULE_STRATEGY: none
25
26 # IDF environment
27
28   IDF_PATH: "$CI_PROJECT_DIR"
29   APPLY_BOT_FILTER_SCRIPT: "$CI_PROJECT_DIR/tools/ci/apply_bot_filter.py"
30   CHECKOUT_REF_SCRIPT: "$CI_PROJECT_DIR/tools/ci/checkout_project_ref.py"
31
32 # before each job, we need to check if this job is filtered by bot stage/job filter
33 .apply_bot_filter: &apply_bot_filter
34   python $APPLY_BOT_FILTER_SCRIPT || exit 0
35
36 before_script:
37   # apply bot filter in before script
38   - *apply_bot_filter
39   # add gitlab ssh key
40   - mkdir -p ~/.ssh
41   - chmod 700 ~/.ssh
42   - echo -n $GITLAB_KEY > ~/.ssh/id_rsa_base64
43   - base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
44   - chmod 600 ~/.ssh/id_rsa
45   - echo -e "Host gitlab.espressif.cn\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
46
47   # Set IS_PRIVATE or IS_PUBLIC depending on if our branch is public or not
48   #
49   # (the same regular expressions are used to set these are used in 'only:' sections below
50   - source tools/ci/configure_ci_environment.sh
51
52   # fetch the submodules (& if necessary re-fetch repo) from gitlab
53   - time ./tools/ci/get-full-sources.sh
54
55 .do_nothing_before:
56   before_script: &do_nothing_before
57     # apply bot filter in before script
58     - *apply_bot_filter
59     - echo "Not setting up GitLab key, not fetching submodules"
60     - source tools/ci/configure_ci_environment.sh
61
62 .add_gitlab_key_before:
63   before_script: &add_gitlab_key_before
64     # apply bot filter in before script
65     - *apply_bot_filter
66     - echo "Not fetching submodules"
67     - source tools/ci/configure_ci_environment.sh
68     # add gitlab ssh key
69     - mkdir -p ~/.ssh
70     - chmod 700 ~/.ssh
71     - echo -n $GITLAB_KEY > ~/.ssh/id_rsa_base64
72     - base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
73     - chmod 600 ~/.ssh/id_rsa
74     - echo -e "Host gitlab.espressif.cn\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
75
76 build_template_app:
77   stage: build
78   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
79   tags:
80     - build
81   variables:
82     BATCH_BUILD: "1"
83     IDF_CI_BUILD: "1"
84   script:
85     - git clone https://github.com/espressif/esp-idf-template.git
86     - cd esp-idf-template
87     # Try to use the same branch name for esp-idf-template that we're
88     # using on esp-idf. If it doesn't exist then just stick to the default
89     # branch
90     - python $CHECKOUT_REF_SCRIPT esp-idf-template
91     # Test debug build (default)
92     - make all V=1
93     # Now test release build
94     - make clean
95     - sed -i.bak -e's/CONFIG_OPTIMIZATION_LEVEL_DEBUG\=y/CONFIG_OPTIMIZATION_LEVEL_RELEASE=y/' sdkconfig
96     - make all V=1
97     # Check if there are any stray printf/ets_printf references in WiFi libs
98     - cd ../components/esp32/lib
99     - test $(xtensa-esp32-elf-nm *.a | grep -w printf | wc -l) -eq 0
100     - test $(xtensa-esp32-elf-nm *.a | grep -w ets_printf | wc -l) -eq 0
101
102
103 .build_template: &build_template
104   stage: build
105   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
106   tags:
107     - build
108   variables:
109     BATCH_BUILD: "1"
110     V: "0"
111
112 build_ssc:
113   <<: *build_template
114   artifacts:
115     paths:
116       - SSC/ssc_bin
117     expire_in: 6 mos
118   script:
119     - git clone $SSC_REPOSITORY
120     - cd SSC
121     - python $CHECKOUT_REF_SCRIPT SSC
122     - MAKEFLAGS= ./gen_misc_ng.sh
123
124 build_esp_idf_tests:
125   <<: *build_template
126   artifacts:
127     paths:
128       - tools/unit-test-app/output
129       - components/idf_test/unit_test/TestCaseAll.yml
130       - components/idf_test/unit_test/CIConfigs/*.yml
131     expire_in: 6 mos
132   script:
133     - cd tools/unit-test-app
134     - make help # make sure kconfig tools are built in single process
135     - make ut-clean-all-configs
136     - export EXTRA_CFLAGS="-Werror -Werror=deprecated-declarations"
137     - export EXTRA_CXXFLAGS=${EXTRA_CFLAGS}
138     - make ut-build-all-configs TESTS_ALL=1
139     - python tools/UnitTestParser.py
140
141 .build_examples_template: &build_examples_template
142   <<: *build_template
143   artifacts:
144     when: always
145     paths:
146       - build_examples/*/*/*/build/*.bin
147       - build_examples/*/*/*/build/*.elf
148       - build_examples/*/*/*/build/*.map
149       - build_examples/*/*/*/build/download.config
150       - build_examples/*/*/*/build/bootloader/*.bin
151       - $LOG_PATH
152     expire_in: 1 week
153   variables:
154     IDF_CI_BUILD: "1"
155     LOG_PATH: "$CI_PROJECT_DIR/log_examples"
156   script:
157     # it's not possible to build 100% out-of-tree and have the "artifacts"
158     # mechanism work, but this is the next best thing
159     - rm -rf build_examples
160     - mkdir build_examples
161     - cd build_examples
162     # build some of examples
163     - mkdir -p ${LOG_PATH}
164     - ${IDF_PATH}/tools/ci/build_examples.sh "${CI_JOB_NAME}"
165
166 build_examples_00:
167   <<: *build_examples_template
168
169 build_examples_01:
170   <<: *build_examples_template
171
172 build_examples_02:
173   <<: *build_examples_template
174
175 build_examples_03:
176   <<: *build_examples_template
177
178 build_examples_04:
179   <<: *build_examples_template
180
181 build_examples_05:
182   <<: *build_examples_template
183
184 build_examples_06:
185   <<: *build_examples_template
186
187 build_examples_07:
188   <<: *build_examples_template
189
190
191 build_docs:
192   stage: build
193   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
194   tags:
195     - build_docs
196   artifacts:
197     when: always
198     paths:
199       - docs/doxygen-warning-log.txt
200       - docs/sphinx-warning-log.txt
201       - docs/sphinx-warning-log-sanitized.txt
202       - docs/_build/html
203     expire_in: 1 mos
204   script:
205     - cd docs
206     - doxygen
207     # If there are Doxygen warnings, print them and bail out
208     - test $(cat doxygen-warning-log.txt | wc -l) -eq 0 || ( echo "Doxygen pass had some warnings:" && cat doxygen-warning-log.txt && false )
209     - make gh-linkcheck
210     - make html
211     - ./check_doc_warnings.sh
212
213 test_nvs_on_host:
214   stage: test
215   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
216   tags:
217     - nvs_host_test
218   dependencies: []
219   script:
220     - cd components/nvs_flash/test_nvs_host
221     - make test
222
223 test_partition_table_on_host:
224   stage: test
225   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
226   tags:
227     - build
228   dependencies: []
229   script:
230     - cd components/partition_table/test_gen_esp32part_host
231     - ./gen_esp32part_tests.py
232
233 test_wl_on_host:
234   stage: test
235   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
236   tags:
237     - wl_host_test
238   artifacts:
239     paths:
240       - components/wear_levelling/test_wl_host/coverage_report.zip
241   dependencies: []
242   script:
243     - cd components/wear_levelling/test_wl_host
244     - make test
245
246 test_multi_heap_on_host:
247   stage: test
248   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
249   tags:
250     - wl_host_test
251   script:
252     - cd components/heap/test_multi_heap_host
253     - make test
254
255 test_build_system:
256   stage: test
257   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
258   tags:
259     - build_test
260   dependencies: []
261   script:
262     - ${IDF_PATH}/tools/ci/test_configure_ci_environment.sh
263     - rm -rf test_build_system
264     - mkdir test_build_system
265     - cd test_build_system
266     - ${IDF_PATH}/tools/ci/test_build_system.sh
267
268 test_report:
269   stage: test_report
270   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
271   tags:
272     - report
273   only:
274     - master
275     - triggers
276     - /^release\/v/
277     - /^v\d+\.\d+(\.\d+)?($|-)/
278   variables:
279     LOG_PATH: "$CI_PROJECT_DIR/$CI_COMMIT_SHA"
280     TEST_CASE_FILE_PATH: "$CI_PROJECT_DIR/components/idf_test"
281     REPORT_PATH: "$CI_PROJECT_DIR/CI_Test_Report"
282     MODULE_UPDATE_FILE: "$CI_PROJECT_DIR/tools/unit-test-app/tools/ModuleDefinition.yml"
283   #dependencies:
284   #We need all UT* and IT* artifacts except for only a few other
285   artifacts:
286     when: always
287     paths:
288       - $REPORT_PATH
289       - $LOG_PATH
290     expire_in: 12 mos
291   script:
292     # calc log path
293     - VER_NUM=`git rev-list HEAD | wc -l | awk '{print $1}'`
294     - SHA_ID=`echo $CI_COMMIT_SHA | cut -c 1-7`
295     - REVISION="${VER_NUM}_${SHA_ID}"
296     # replace / to _ in branch name
297     - ESCAPED_BRANCH_NAME=`echo $CI_COMMIT_REF_NAME | sed 's/\//___/g'`
298     # result path and artifacts path
299     - RESULT_PATH="$CI_PROJECT_NAME/$ESCAPED_BRANCH_NAME/$REVISION"
300     - ARTIFACTS_PATH="$GITLAB_HTTP_SERVER/idf/esp-idf/builds/$CI_JOB_ID/artifacts/browse/$CI_COMMIT_SHA"
301     # clone test bench
302     - git clone $GITLAB_SSH_SERVER/yinling/auto_test_script.git
303     - cd auto_test_script
304     - python $CHECKOUT_REF_SCRIPT auto_test_script
305     # generate report
306     - TEST_RESULT=Pass
307     - python CITestReport.py -l $LOG_PATH -t $TEST_CASE_FILE_PATH -p $REPORT_PATH -r $RESULT_PATH -a $ARTIFACTS_PATH -m $MODULE_UPDATE_FILE || TEST_RESULT=Fail
308     # commit to CI-test-result project
309     - git clone $GITLAB_SSH_SERVER/qa/CI-test-result.git
310     - rm -rf "CI-test-result/RawData/$RESULT_PATH"
311     - cp -R $CI_PROJECT_NAME CI-test-result/RawData
312     - cd CI-test-result
313     # config git user
314     - git config --global user.email "ci-test-result@espressif.com"
315     - git config --global user.name "ci-test-result"
316     # commit test result
317     - git add .
318     - git commit . -m "update test result for $CI_PROJECT_NAME/$CI_COMMIT_REF_NAME/$CI_COMMIT_SHA, pipeline ID $CI_PIPELINE_ID" || exit 0
319     - git push origin master
320     - test "${TEST_RESULT}" = "Pass" || exit 1
321
322 push_master_to_github:
323   stage: deploy
324   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
325   tags:
326     - deploy
327   only:
328     - master
329     - /^release\/v/
330     - /^v\d+\.\d+(\.\d+)?($|-)/
331   when: on_success
332   dependencies: []
333   variables:
334     GITHUB_PUSH_REFS: refs/remotes/origin/release refs/remotes/origin/master
335   before_script: *do_nothing_before
336   script:
337     - mkdir -p ~/.ssh
338     - chmod 700 ~/.ssh
339     - echo -n $GH_PUSH_KEY > ~/.ssh/id_rsa_base64
340     - base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
341     - chmod 600 ~/.ssh/id_rsa
342     - echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
343     - git remote remove github &>/dev/null || true
344     - git remote add github git@github.com:espressif/esp-idf.git
345     # What the next line of script does: goes through the list of refs for all branches we push to github,
346     # generates a snippet of shell which is evaluated. The snippet checks CI_COMMIT_SHA against the SHA
347     # (aka objectname) at tip of each branch, and if any SHAs match then it checks out the local branch
348     # and then pushes that ref to a corresponding github branch
349     - eval $(git for-each-ref --shell bash --format 'if [ $CI_COMMIT_SHA == %(objectname) ]; then git checkout -B %(refname:strip=3); git push --follow-tags github %(refname:strip=3); fi;' $GITHUB_PUSH_REFS)
350
351
352 deploy_docs:
353   stage: deploy
354   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
355   tags:
356     - deploy
357   only:
358    - master
359    - /^release\/v/
360    - /^v\d+\.\d+(\.\d+)?($|-)/
361    - triggers
362   dependencies:
363     - build_docs
364   before_script: *do_nothing_before
365   script:
366     - mkdir -p ~/.ssh
367     - chmod 700 ~/.ssh
368     - echo -n $DOCS_DEPLOY_KEY > ~/.ssh/id_rsa_base64
369     - base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
370     - chmod 600 ~/.ssh/id_rsa
371     - echo -e "Host $DOCS_SERVER\n\tStrictHostKeyChecking no\n\tUser $DOCS_SERVER_USER\n" >> ~/.ssh/config
372     - export GIT_VER=$(git describe --always)
373     - cd docs/_build/
374     - mv html $GIT_VER
375     - tar czvf $GIT_VER.tar.gz $GIT_VER
376     - scp $GIT_VER.tar.gz $DOCS_SERVER:$DOCS_PATH
377     - ssh $DOCS_SERVER -x "cd $DOCS_PATH && tar xzvf $GIT_VER.tar.gz && rm -f latest && ln -s $GIT_VER latest"
378
379 check_doc_links:
380   stage: test
381   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
382   tags:
383     - check_doc_links
384   only:
385     # can only be triggered
386     - triggers
387   artifacts:
388     paths:
389       - docs/_build/linkcheck
390     expire_in: 1 mos
391   script:
392     # must be triggered with CHECK_LINKS=Yes, otherwise exit without test
393     - test "$CHECK_LINKS" = "Yes" || exit 0
394     # can only run on master branch (otherwise the commit is not on Github yet)
395     - test "${CI_COMMIT_REF_NAME}" = "master" || exit 0
396     - cd docs
397     - make linkcheck
398
399 check_commit_msg:
400   stage: deploy
401   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
402   tags:
403     - build
404   except:
405     - master
406     - /^release\/v/
407     - /^v\d+\.\d+(\.\d+)?($|-)/
408   dependencies: []
409   before_script: *do_nothing_before
410   script:
411     - git status
412     - git log -n10 --oneline
413     # commit start with "WIP: " need to be squashed before merge
414     - 'git log --pretty=%s master.. -- | grep "^WIP: " && exit 1 || exit 0'
415
416 check_submodule_sync:
417   stage: deploy
418   image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
419   tags:
420     - build
421   except:
422     - master
423     - /^release\/v/
424     - /^v\d+\.\d+(\.\d+)?($|-)/
425   dependencies: []
426   variables:
427     GIT_STRATEGY: clone
428   before_script: *do_nothing_before
429   script:
430     # check if all submodules are correctly synced to public repostory
431     - git submodule update --init --recursive
432
433 assign_test:
434   <<: *build_template
435   stage: assign_test
436   # gitlab ci do not support match job with RegEx or wildcard now in dependencies.
437   # we have a lot build example jobs. now we don't use dependencies, just download all artificats of build stage.
438   variables:
439     UT_BIN_PATH: "tools/unit-test-app/output"
440     OUTPUT_BIN_PATH: "test_bins/ESP32_IDF"
441     TEST_FW_PATH: "$CI_PROJECT_DIR/tools/tiny-test-fw"
442     EXAMPLE_CONFIG_OUTPUT_PATH: "$CI_PROJECT_DIR/examples/test_configs"
443   artifacts:
444     paths:
445       - test_bins
446       - components/idf_test/*/CIConfigs
447       - components/idf_test/*/TC.sqlite
448       - $EXAMPLE_CONFIG_OUTPUT_PATH
449       - tools/unit-test-app/output
450     expire_in: 1 mos
451   before_script: *add_gitlab_key_before
452   script:
453     # first move test bins together: test_bins/CHIP_SDK/TestApp/bin_files
454     - mkdir -p $OUTPUT_BIN_PATH
455     - cp -r SSC/ssc_bin/* $OUTPUT_BIN_PATH
456     # assign example tests
457     - python $TEST_FW_PATH/CIAssignExampleTest.py $IDF_PATH/examples $IDF_PATH/.gitlab-ci.yml $EXAMPLE_CONFIG_OUTPUT_PATH
458     # assign unit test cases
459     - python $TEST_FW_PATH/CIAssignUnitTest.py $IDF_PATH/components/idf_test/unit_test/TestCaseAll.yml $IDF_PATH/.gitlab-ci.yml $IDF_PATH/components/idf_test/unit_test/CIConfigs
460     # clone test script to assign tests
461     - git clone $TEST_SCRIPT_REPOSITORY
462     - cd auto_test_script
463     - python $CHECKOUT_REF_SCRIPT auto_test_script
464     # assgin integration test cases
465     - python CIAssignTestCases.py -t $IDF_PATH/components/idf_test/integration_test -c $IDF_PATH/.gitlab-ci.yml -b $IDF_PATH/test_bins
466
467 .example_test_template: &example_test_template
468   stage: test
469   when: on_success
470   only:
471     - master
472     - /^release\/v/
473     - /^v\d+\.\d+(\.\d+)?($|-)/
474     - triggers
475   # gitlab ci do not support match job with RegEx or wildcard now in dependencies.
476   # we have a lot build example jobs and the binaries them exceed the limitation of artifacts.
477   # we can't artifact them in one job. For example test jobs, download all artifacts from previous stages.
478   artifacts:
479     when: always
480     paths:
481       - $LOG_PATH
482     expire_in: 6 mos
483   variables:
484     TEST_FW_PATH: "$CI_PROJECT_DIR/tools/tiny-test-fw"
485     TEST_CASE_PATH: "$CI_PROJECT_DIR/examples"
486     CONFIG_FILE: "$CI_PROJECT_DIR/examples/test_configs/$CI_JOB_NAME.yml"
487     LOG_PATH: "$CI_PROJECT_DIR/TEST_LOGS"
488   script:
489     # first test if config file exists, if not exist, exit 0
490     - test -e $CONFIG_FILE || exit 0
491     - cd $TEST_FW_PATH
492     # run test
493     - python Runner.py $TEST_CASE_PATH -c $CONFIG_FILE
494
495 .unit_test_template: &unit_test_template
496   <<: *example_test_template
497   stage: unit_test
498   dependencies:
499     - assign_test
500   variables:
501     TEST_FW_PATH: "$CI_PROJECT_DIR/tools/tiny-test-fw"
502     TEST_CASE_PATH: "$CI_PROJECT_DIR/tools/unit-test-app"
503     CONFIG_FILE: "$CI_PROJECT_DIR/components/idf_test/unit_test/CIConfigs/$CI_JOB_NAME.yml"
504     LOG_PATH: "$CI_PROJECT_DIR/TEST_LOGS"
505
506 .test_template: &test_template
507   stage: test
508   when: on_success
509   only:
510     - master
511     - /^release\/v/
512     - /^v\d+\.\d+(\.\d+)?($|-)/
513     - triggers
514   allow_failure: true
515   dependencies:
516     - assign_test
517   artifacts:
518     when: always
519     paths:
520       - $LOG_PATH
521     expire_in: 6 mos
522   variables:
523     LOCAL_ENV_CONFIG_PATH: "$CI_PROJECT_DIR/ci-test-runner-configs/$CI_RUNNER_DESCRIPTION/ESP32_IDF"
524     LOG_PATH: "$CI_PROJECT_DIR/$CI_COMMIT_SHA"
525     TEST_CASE_FILE_PATH: "$CI_PROJECT_DIR/components/idf_test/integration_test"
526     MODULE_UPDATE_FILE: "$CI_PROJECT_DIR/components/idf_test/ModuleDefinition.yml"
527     CONFIG_FILE: "$CI_PROJECT_DIR/components/idf_test/integration_test/CIConfigs/$CI_JOB_NAME.yml"
528   before_script: *add_gitlab_key_before
529   script:
530     # first test if config file exists, if not exist, exit 0
531     - test -e $CONFIG_FILE || exit 0
532     # clone local test env configs
533     - git clone $TEST_ENV_CONFIG_REPOSITORY
534     - cd ci-test-runner-configs
535     - python $CHECKOUT_REF_SCRIPT ci-test-runner-configs
536     # clone test bench
537     - git clone $TEST_SCRIPT_REPOSITORY
538     - cd auto_test_script
539     - python $CHECKOUT_REF_SCRIPT auto_test_script
540     # run test
541     - python CIRunner.py -l "$LOG_PATH/$CI_JOB_NAME" -c $CONFIG_FILE -e $LOCAL_ENV_CONFIG_PATH -t $TEST_CASE_FILE_PATH -m $MODULE_UPDATE_FILE
542
543 nvs_compatible_test:
544   <<: *test_template
545   artifacts:
546     when: always
547     paths:
548       - $LOG_PATH
549       - nvs_wifi.bin
550     expire_in: 6 mos
551   tags:
552     - ESP32_IDF
553     - NVS_Compatible
554   script:
555     # clone local test env configs
556     - git clone $TEST_ENV_CONFIG_REPOSITORY
557     - cd ci-test-runner-configs
558     - python $CHECKOUT_REF_SCRIPT ci-test-runner-configs
559     # clone test bench
560     - git clone $TEST_SCRIPT_REPOSITORY
561     - cd auto_test_script
562     - git checkout ${CI_COMMIT_REF_NAME} || echo "Using default branch..."
563     # prepare nvs bins
564     - ./Tools/prepare_nvs_bin.sh
565     # run test
566     - python CIRunner.py -l "$LOG_PATH/$CI_JOB_NAME" -c $CONFIG_FILE -e $LOCAL_ENV_CONFIG_PATH -t $TEST_CASE_FILE_PATH -m $MODULE_UPDATE_FILE
567
568 example_test_001_01:
569   <<: *example_test_template
570   tags:
571     - ESP32
572     - Example_WIFI
573
574 UT_001_01:
575   <<: *unit_test_template
576   tags:
577     - ESP32_IDF
578     - UT_T1_1
579     - UT_default
580
581 UT_001_02:
582   <<: *unit_test_template
583   tags:
584     - ESP32_IDF
585     - UT_T1_1
586     - UT_default
587
588 UT_001_03:
589   <<: *unit_test_template
590   tags:
591     - ESP32_IDF
592     - UT_T1_1
593     - UT_default
594
595 UT_001_04:
596   <<: *unit_test_template
597   tags:
598     - ESP32_IDF
599     - UT_T1_1
600     - UT_default
601
602 UT_001_05:
603   <<: *unit_test_template
604   tags:
605     - ESP32_IDF
606     - UT_T1_SDMODE
607     - UT_default
608
609 UT_001_06:
610   <<: *unit_test_template
611   tags:
612     - ESP32_IDF
613     - UT_T1_SPIMODE
614     - UT_default
615
616 UT_001_07:
617   <<: *unit_test_template
618   tags:
619     - ESP32_IDF
620     - UT_T1_1
621     - UT_default
622
623 UT_001_08:
624   <<: *unit_test_template
625   tags:
626     - ESP32_IDF
627     - UT_T1_1
628     - UT_default
629
630 UT_001_09:
631   <<: *unit_test_template
632   tags:
633     - ESP32_IDF
634     - UT_T1_1
635     - UT_default
636
637 UT_002_01:
638   <<: *unit_test_template
639   tags:
640     - ESP32_IDF
641     - UT_T1_1
642     - UT_release
643
644 UT_002_02:
645   <<: *unit_test_template
646   tags:
647     - ESP32_IDF
648     - UT_T1_1
649     - UT_release
650
651 UT_002_03:
652   <<: *unit_test_template
653   tags:
654     - ESP32_IDF
655     - UT_T1_1
656     - UT_release
657
658 UT_002_04:
659   <<: *unit_test_template
660   tags:
661     - ESP32_IDF
662     - UT_T1_1
663     - UT_release
664
665 UT_002_05:
666   <<: *unit_test_template
667   tags:
668     - ESP32_IDF
669     - UT_T1_SDMODE
670     - UT_release
671
672 UT_002_06:
673   <<: *unit_test_template
674   tags:
675     - ESP32_IDF
676     - UT_T1_SPIMODE
677     - UT_release
678
679 UT_002_07:
680   <<: *unit_test_template
681   tags:
682     - ESP32_IDF
683     - UT_T1_1
684     - UT_release
685
686 UT_002_08:
687   <<: *unit_test_template
688   tags:
689     - ESP32_IDF
690     - UT_T1_1
691     - UT_release
692
693 UT_002_09:
694   <<: *unit_test_template
695   tags:
696     - ESP32_IDF
697     - UT_T1_1
698     - UT_release
699
700 UT_003_01:
701   <<: *unit_test_template
702   tags:
703     - ESP32_IDF
704     - UT_T1_1
705     - UT_single_core
706
707 UT_003_02:
708   <<: *unit_test_template
709   tags:
710     - ESP32_IDF
711     - UT_T1_1
712     - UT_single_core
713
714 UT_003_03:
715   <<: *unit_test_template
716   tags:
717     - ESP32_IDF
718     - UT_T1_1
719     - UT_single_core
720
721 UT_003_04:
722   <<: *unit_test_template
723   tags:
724     - ESP32_IDF
725     - UT_T1_1
726     - UT_single_core
727
728 UT_003_05:
729   <<: *unit_test_template
730   tags:
731     - ESP32_IDF
732     - UT_T1_SDMODE
733     - UT_single_core
734
735 UT_003_06:
736   <<: *unit_test_template
737   tags:
738     - ESP32_IDF
739     - UT_T1_SPIMODE
740     - UT_single_core
741
742 UT_003_07:
743   <<: *unit_test_template
744   tags:
745     - ESP32_IDF
746     - UT_T1_1
747     - UT_single_core
748
749 UT_003_08:
750   <<: *unit_test_template
751   tags:
752     - ESP32_IDF
753     - UT_T1_1
754     - UT_single_core
755
756 UT_003_09:
757   <<: *unit_test_template
758   tags:
759     - ESP32_IDF
760     - UT_T1_1
761     - UT_single_core
762
763 UT_004_01:
764   <<: *unit_test_template
765   tags:
766     - ESP32_IDF
767     - UT_T1_1
768     - UT_psram
769
770 UT_004_02:
771   <<: *unit_test_template
772   tags:
773     - ESP32_IDF
774     - UT_T1_1
775     - UT_psram
776
777 UT_004_03:
778   <<: *unit_test_template
779   tags:
780     - ESP32_IDF
781     - UT_T1_1
782     - UT_psram
783
784 UT_004_04:
785   <<: *unit_test_template
786   tags:
787     - ESP32_IDF
788     - UT_T1_1
789     - UT_psram
790
791 UT_004_05:
792   <<: *unit_test_template
793   tags:
794     - ESP32_IDF
795     - UT_T1_SDMODE
796     - UT_psram
797
798 UT_004_06:
799   <<: *unit_test_template
800   tags:
801     - ESP32_IDF
802     - UT_T1_SPIMODE
803     - UT_psram
804
805 UT_004_07:
806   <<: *unit_test_template
807   tags:
808     - ESP32_IDF
809     - UT_T1_1
810     - UT_psram
811
812 UT_004_08:
813   <<: *unit_test_template
814   tags:
815     - ESP32_IDF
816     - UT_T1_1
817     - UT_psram
818
819 UT_004_09:
820   <<: *unit_test_template
821   tags:
822     - ESP32_IDF
823     - UT_T1_1
824     - UT_psram
825
826 IT_001_01:
827   <<: *test_template
828   tags:
829     - ESP32_IDF
830     - SSC_T1_1
831
832 IT_001_02:
833   <<: *test_template
834   tags:
835     - ESP32_IDF
836     - SSC_T1_1
837
838 IT_001_03:
839   <<: *test_template
840   tags:
841     - ESP32_IDF
842     - SSC_T1_1
843
844 IT_001_04:
845   <<: *test_template
846   tags:
847     - ESP32_IDF
848     - SSC_T1_1
849
850 IT_001_05:
851   <<: *test_template
852   tags:
853     - ESP32_IDF
854     - SSC_T1_1
855
856 IT_001_06:
857   <<: *test_template
858   tags:
859     - ESP32_IDF
860     - SSC_T1_1
861
862 IT_001_07:
863   <<: *test_template
864   tags:
865     - ESP32_IDF
866     - SSC_T1_1
867
868 IT_001_08:
869   <<: *test_template
870   tags:
871     - ESP32_IDF
872     - SSC_T1_1
873
874 IT_001_09:
875   <<: *test_template
876   tags:
877     - ESP32_IDF
878     - SSC_T1_1
879
880 IT_002_01:
881   <<: *test_template
882   tags:
883     - ESP32_IDF
884     - SSC_T1_2
885
886 IT_003_01:
887   <<: *test_template
888   tags:
889     - ESP32_IDF
890     - SSC_T2_1
891
892 IT_003_02:
893   <<: *test_template
894   tags:
895     - ESP32_IDF
896     - SSC_T2_1
897
898 IT_003_03:
899   <<: *test_template
900   tags:
901     - ESP32_IDF
902     - SSC_T2_1
903
904 IT_003_04:
905   <<: *test_template
906   tags:
907     - ESP32_IDF
908     - SSC_T2_1
909
910 IT_003_05:
911   <<: *test_template
912   tags:
913     - ESP32_IDF
914     - SSC_T2_1
915
916 IT_003_06:
917   <<: *test_template
918   tags:
919     - ESP32_IDF
920     - SSC_T2_1
921
922 IT_003_07:
923   <<: *test_template
924   tags:
925     - ESP32_IDF
926     - SSC_T2_1
927
928 IT_004_01:
929   <<: *test_template
930   tags:
931     - ESP32_IDF
932     - SSC_T1_APC
933
934 IT_005_01:
935   <<: *test_template
936   tags:
937     - ESP32_IDF
938     - SSC_T1_WEP
939
940 IT_006_01:
941   <<: *test_template
942   tags:
943     - ESP32_IDF
944     - SSC_T3_PhyMode
945
946 IT_007_01:
947   <<: *test_template
948   tags:
949     - ESP32_IDF
950     - SSC_T2_PhyMode
951
952 IT_008_01:
953   <<: *test_template
954   tags:
955     - ESP32_IDF
956     - SSC_T2_PhyMode
957
958 IT_009_01:
959   <<: *test_template
960   tags:
961     - ESP32_IDF
962     - SSC_T1_3
963
964 IT_501_01:
965   <<: *test_template
966   tags:
967     - ESP32_IDF
968     - SSC_T1_1
969     - stress_test
970
971 IT_501_02:
972   <<: *test_template
973   tags:
974     - ESP32_IDF
975     - SSC_T1_1
976     - stress_test
977
978 IT_501_03:
979   <<: *test_template
980   tags:
981     - ESP32_IDF
982     - SSC_T1_1
983     - stress_test
984
985 IT_502_01:
986   <<: *test_template
987   tags:
988     - ESP32_IDF
989     - SSC_T2_1
990     - stress_test
991
992 IT_502_02:
993   <<: *test_template
994   tags:
995     - ESP32_IDF
996     - SSC_T2_1
997     - stress_test
998
999 IT_503_01:
1000   <<: *test_template
1001   tags:
1002     - ESP32_IDF
1003     - SSC_T5_1
1004     - stress_test
1005
1006 IT_503_02:
1007   <<: *test_template
1008   tags:
1009     - ESP32_IDF
1010     - SSC_T5_1
1011     - stress_test
1012
1013 IT_503_03:
1014   <<: *test_template
1015   tags:
1016     - ESP32_IDF
1017     - SSC_T5_1
1018     - stress_test