troubadix 25.6.1__tar.gz → 25.7.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. {troubadix-25.6.1 → troubadix-25.7.0}/PKG-INFO +1 -1
  2. {troubadix-25.6.1 → troubadix-25.7.0}/pyproject.toml +2 -1
  3. troubadix-25.7.0/tests/standalone_plugins/test_changed_creation_date.py +173 -0
  4. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/test_changed_oid.py +4 -21
  5. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/__version__.py +1 -1
  6. troubadix-25.7.0/troubadix/standalone_plugins/changed_creation_date.py +141 -0
  7. troubadix-25.7.0/troubadix/standalone_plugins/util.py +27 -0
  8. {troubadix-25.6.1 → troubadix-25.7.0}/LICENSE +0 -0
  9. {troubadix-25.6.1 → troubadix-25.7.0}/README.md +0 -0
  10. {troubadix-25.6.1 → troubadix-25.7.0}/tests/__init__.py +0 -0
  11. {troubadix-25.6.1 → troubadix-25.7.0}/tests/helper/__init__.py +0 -0
  12. {troubadix-25.6.1 → troubadix-25.7.0}/tests/helper/test_date_format.py +0 -0
  13. {troubadix-25.6.1 → troubadix-25.7.0}/tests/helper/test_linguistic_exception_handler.py +0 -0
  14. {troubadix-25.6.1 → troubadix-25.7.0}/tests/helper/test_patterns.py +0 -0
  15. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/__init__.py +0 -0
  16. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/fail.nasl +0 -0
  17. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/fail2.nasl +0 -0
  18. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test.nasl +0 -0
  19. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_badwords.py +0 -0
  20. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_copyright_text.py +0 -0
  21. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_copyright_year.py +0 -0
  22. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_creation_date.py +0 -0
  23. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_cve_format.py +0 -0
  24. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_cvss_format.py +0 -0
  25. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_dependencies.py +0 -0
  26. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_dependency_category_order.py +0 -0
  27. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_deprecated_dependency.py +0 -0
  28. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_deprecated_functions.py +0 -0
  29. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_double_end_points.py +0 -0
  30. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_duplicate_oid.py +0 -0
  31. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_duplicated_script_tags.py +0 -0
  32. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_encoding.py +0 -0
  33. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/fail_bad_new_line.nasl +0 -0
  34. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/fail_badwords.nasl +0 -0
  35. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/fail_name_and_copyright_newline.nasl +0 -0
  36. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/fail_name_newline.nasl +0 -0
  37. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/fail_permissions.nasl +0 -0
  38. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/fail_spelling.nasl +0 -0
  39. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/nasl/21.04/fail.nasl +0 -0
  40. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/nasl/21.04/fail_badwords.nasl +0 -0
  41. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/nasl/21.04/fail_name_and_copyright_newline.nasl +0 -0
  42. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/nasl/21.04/fail_name_newline.nasl +0 -0
  43. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/nasl/21.04/fail_solution_template.nasl +0 -0
  44. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/nasl/21.04/runner/fail.nasl +0 -0
  45. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/nasl/21.04/runner/fail2.nasl +0 -0
  46. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/nasl/21.04/runner/test.nasl +0 -0
  47. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/nasl/21.04/runner/test_valid_oid.nasl +0 -0
  48. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/nasl/21.04/test.inc +0 -0
  49. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/nasl/21.04/test.nasl +0 -0
  50. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/nasl/warning.nasl +0 -0
  51. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/ok_permissions.nasl +0 -0
  52. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_files/test_oid.nasl +0 -0
  53. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_forking_nasl_functions.py +0 -0
  54. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_get_kb_on_services.py +0 -0
  55. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_grammar.py +0 -0
  56. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_http_links_in_tags.py +0 -0
  57. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_illegal_characters.py +0 -0
  58. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_log_messages.py +0 -0
  59. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_malformed_dependencies.py +0 -0
  60. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_misplaced_compare_in_if.py +0 -0
  61. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_missing_desc_exit.py +0 -0
  62. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_missing_tag_solution.py +0 -0
  63. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_multiple_re_parameters.py +0 -0
  64. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_newlines.py +0 -0
  65. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_overlong_description_lines.py +0 -0
  66. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_overlong_script_tags.py +0 -0
  67. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_prod_svc_detect_in_vulnvt.py +0 -0
  68. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_qod.py +0 -0
  69. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_reporting_consistency.py +0 -0
  70. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_script_add_preference_type.py +0 -0
  71. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_script_calls_empty_values.py +0 -0
  72. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_script_calls_recommended.py +0 -0
  73. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_script_category.py +0 -0
  74. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_script_copyright.py +0 -0
  75. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_script_family.py +0 -0
  76. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_script_tag_form.py +0 -0
  77. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_script_tag_whitespaces.py +0 -0
  78. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_script_tags_mandatory.py +0 -0
  79. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_script_version_and_last_modification_tags.py +0 -0
  80. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_script_xref_form.py +0 -0
  81. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_script_xref_url.py +0 -0
  82. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_security_messages.py +0 -0
  83. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_set_get_kb_calls.py +0 -0
  84. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_severity_date.py +0 -0
  85. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_severity_format.py +0 -0
  86. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_severity_origin.py +0 -0
  87. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_solution_text.py +0 -0
  88. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_solution_type.py +0 -0
  89. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_spaces_before_dots.py +0 -0
  90. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_spaces_in_filename.py +0 -0
  91. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_spelling.py +0 -0
  92. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_tabs.py +0 -0
  93. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_todo_tbd.py +0 -0
  94. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_trailing_spaces_tabs.py +0 -0
  95. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_using_display.py +0 -0
  96. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_valid_oid.py +0 -0
  97. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_valid_script_tag_names.py +0 -0
  98. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_variable_redefinition_in_foreach.py +0 -0
  99. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_vt_file_permissions.py +0 -0
  100. {troubadix-25.6.1 → troubadix-25.7.0}/tests/plugins/test_vt_placement.py +0 -0
  101. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/__init__.py +0 -0
  102. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/changed_packages/__init__.py +0 -0
  103. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/changed_packages/markers/__init__.py +0 -0
  104. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/changed_packages/markers/test_added_epoch.py +0 -0
  105. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/changed_packages/markers/test_added_release.py +0 -0
  106. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/changed_packages/markers/test_added_udeb.py +0 -0
  107. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/changed_packages/markers/test_changed_update.py +0 -0
  108. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/changed_packages/markers/test_dropped_architecture.py +0 -0
  109. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/changed_packages/test_changed_packages.py +0 -0
  110. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/changed_packages/test_package.py +0 -0
  111. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/nasl/21.04/21_script.nasl +0 -0
  112. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/nasl/22.04/22_script.nasl +0 -0
  113. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/nasl/common/bar.nasl +0 -0
  114. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/nasl/common/foo.nasl +0 -0
  115. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/nasl/common/foobar.nasl +0 -0
  116. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/nasl/common/gsf/enterprise_script.nasl +0 -0
  117. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/test_changed_cves.py +0 -0
  118. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/test_dependency_graph.py +0 -0
  119. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/test_deprecate_vts.py +0 -0
  120. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/test_file_extensions.py +0 -0
  121. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/test_last_modification.py +0 -0
  122. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/test_no_solution.py +0 -0
  123. {troubadix-25.6.1 → troubadix-25.7.0}/tests/standalone_plugins/test_version_updated.py +0 -0
  124. {troubadix-25.6.1 → troubadix-25.7.0}/tests/test_argparser.py +0 -0
  125. {troubadix-25.6.1 → troubadix-25.7.0}/tests/test_helper.py +0 -0
  126. {troubadix-25.6.1 → troubadix-25.7.0}/tests/test_naslinter.py +0 -0
  127. {troubadix-25.6.1 → troubadix-25.7.0}/tests/test_reporter.py +0 -0
  128. {troubadix-25.6.1 → troubadix-25.7.0}/tests/test_results.py +0 -0
  129. {troubadix-25.6.1 → troubadix-25.7.0}/tests/test_runner.py +0 -0
  130. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/__init__.py +0 -0
  131. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/argparser.py +0 -0
  132. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/codespell/codespell.additions +0 -0
  133. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/codespell/codespell.exclude +0 -0
  134. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/codespell/codespell.ignore +0 -0
  135. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/helper/__init__.py +0 -0
  136. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/helper/date_format.py +0 -0
  137. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/helper/helper.py +0 -0
  138. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/helper/linguistic_exception_handler.py +0 -0
  139. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/helper/patterns.py +0 -0
  140. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugin.py +0 -0
  141. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/__init__.py +0 -0
  142. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/badwords.py +0 -0
  143. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/copyright_text.py +0 -0
  144. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/copyright_year.py +0 -0
  145. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/creation_date.py +0 -0
  146. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/cve_format.py +0 -0
  147. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/cvss_format.py +0 -0
  148. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/dependencies.py +0 -0
  149. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/dependency_category_order.py +0 -0
  150. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/deprecated_dependency.py +0 -0
  151. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/deprecated_functions.py +0 -0
  152. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/double_end_points.py +0 -0
  153. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/duplicate_oid.py +0 -0
  154. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/duplicated_script_tags.py +0 -0
  155. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/encoding.py +0 -0
  156. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/forking_nasl_functions.py +0 -0
  157. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/get_kb_on_services.py +0 -0
  158. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/grammar.py +0 -0
  159. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/http_links_in_tags.py +0 -0
  160. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/illegal_characters.py +0 -0
  161. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/log_messages.py +0 -0
  162. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/malformed_dependencies.py +0 -0
  163. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/misplaced_compare_in_if.py +0 -0
  164. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/missing_desc_exit.py +0 -0
  165. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/missing_tag_solution.py +0 -0
  166. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/multiple_re_parameters.py +0 -0
  167. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/newlines.py +0 -0
  168. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/overlong_description_lines.py +0 -0
  169. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/overlong_script_tags.py +0 -0
  170. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/prod_svc_detect_in_vulnvt.py +0 -0
  171. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/qod.py +0 -0
  172. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/reporting_consistency.py +0 -0
  173. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/script_add_preference_type.py +0 -0
  174. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/script_calls_empty_values.py +0 -0
  175. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/script_calls_recommended.py +0 -0
  176. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/script_category.py +0 -0
  177. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/script_copyright.py +0 -0
  178. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/script_family.py +0 -0
  179. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/script_tag_form.py +0 -0
  180. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/script_tag_whitespaces.py +0 -0
  181. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/script_tags_mandatory.py +0 -0
  182. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/script_version_and_last_modification_tags.py +0 -0
  183. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/script_xref_form.py +0 -0
  184. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/script_xref_url.py +0 -0
  185. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/security_messages.py +0 -0
  186. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/set_get_kb_calls.py +0 -0
  187. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/severity_date.py +0 -0
  188. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/severity_format.py +0 -0
  189. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/severity_origin.py +0 -0
  190. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/solution_text.py +0 -0
  191. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/solution_type.py +0 -0
  192. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/spaces_before_dots.py +0 -0
  193. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/spaces_in_filename.py +0 -0
  194. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/spelling.py +0 -0
  195. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/tabs.py +0 -0
  196. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/todo_tbd.py +0 -0
  197. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/trailing_spaces_tabs.py +0 -0
  198. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/using_display.py +0 -0
  199. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/valid_oid.py +0 -0
  200. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/valid_script_tag_names.py +0 -0
  201. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/variable_assigned_in_if.py +0 -0
  202. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/variable_redefinition_in_foreach.py +0 -0
  203. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/vt_file_permissions.py +0 -0
  204. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/plugins/vt_placement.py +0 -0
  205. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/reporter.py +0 -0
  206. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/results.py +0 -0
  207. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/runner.py +0 -0
  208. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/__init__.py +0 -0
  209. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/allowed_rev_diff.py +0 -0
  210. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/changed_cves.py +0 -0
  211. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/changed_oid.py +0 -0
  212. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/changed_packages/changed_packages.py +0 -0
  213. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/changed_packages/marker/__init__.py +0 -0
  214. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/changed_packages/marker/added_epoch.py +0 -0
  215. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/changed_packages/marker/added_release.py +0 -0
  216. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/changed_packages/marker/added_udeb.py +0 -0
  217. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/changed_packages/marker/changed_update.py +0 -0
  218. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/changed_packages/marker/dropped_architecture.py +0 -0
  219. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/changed_packages/marker/marker.py +0 -0
  220. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/changed_packages/package.py +0 -0
  221. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/common.py +0 -0
  222. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/dependency_graph/__init__.py +0 -0
  223. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/dependency_graph/checks.py +0 -0
  224. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/dependency_graph/cli.py +0 -0
  225. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/dependency_graph/dependency_graph.py +0 -0
  226. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/dependency_graph/models.py +0 -0
  227. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/deprecate_vts.py +0 -0
  228. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/file_extensions.py +0 -0
  229. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/last_modification.py +0 -0
  230. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/no_solution.py +0 -0
  231. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/standalone_plugins/version_updated.py +0 -0
  232. {troubadix-25.6.1 → troubadix-25.7.0}/troubadix/troubadix.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: troubadix
3
- Version: 25.6.1
3
+ Version: 25.7.0
4
4
  Summary: A linting and QA check tool for NASL files
5
5
  License: GPL-3.0-or-later
6
6
  Author: Greenbone
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "troubadix"
3
- version = "25.6.1"
3
+ version = "25.7.0"
4
4
  description = "A linting and QA check tool for NASL files"
5
5
  authors = ["Greenbone <info@greenbone.net>"]
6
6
  license = "GPL-3.0-or-later"
@@ -73,6 +73,7 @@ version-module-file = "troubadix/__version__.py"
73
73
 
74
74
  [tool.poetry.scripts]
75
75
  troubadix = 'troubadix.troubadix:main'
76
+ troubadix-changed-creation-date = 'troubadix.standalone_plugins.changed_creation_date:main'
76
77
  troubadix-changed-oid = 'troubadix.standalone_plugins.changed_oid:main'
77
78
  troubadix-last-modification = 'troubadix.standalone_plugins.last_modification:main'
78
79
  troubadix-version-updated = 'troubadix.standalone_plugins.version_updated:main'
@@ -0,0 +1,173 @@
1
+ # SPDX-License-Identifier: GPL-3.0-or-later
2
+ # SPDX-FileCopyrightText: 2025 Greenbone AG
3
+
4
+ import unittest
5
+ from argparse import Namespace
6
+ from os import chdir
7
+ from pathlib import Path
8
+ from subprocess import SubprocessError
9
+ from tempfile import TemporaryDirectory
10
+ from unittest.mock import patch
11
+
12
+ from troubadix.standalone_plugins.changed_creation_date import (
13
+ check_changed_creation_date,
14
+ git,
15
+ main,
16
+ parse_arguments,
17
+ )
18
+
19
+ TEST_COMMIT_RANGE = "main..test"
20
+ TEST_FILES = [Path("test.nasl")]
21
+
22
+
23
+ class TestChangedCreationDate(unittest.TestCase):
24
+
25
+ @patch("troubadix.standalone_plugins.changed_creation_date.Path.exists")
26
+ @patch("troubadix.standalone_plugins.changed_creation_date.git")
27
+ def test_check_creation_date_ok(self, mock_git, mock_exists):
28
+
29
+ mock_git.return_value = (
30
+ '-script_tag(name:"creation_date",'
31
+ ' value:"2025-03-04 10:00:00 +0200 (Tue, 04 Mar 2025)");\n'
32
+ '+script_tag(name:"creation_date",'
33
+ ' value:"2025-03-04 10:00:00 +0200 (Tue, 04 Mar 2025)");\n'
34
+ "+test"
35
+ )
36
+ mock_exists.return_value = True
37
+
38
+ self.assertFalse(
39
+ check_changed_creation_date(TEST_COMMIT_RANGE, TEST_FILES)
40
+ )
41
+
42
+ @patch("troubadix.standalone_plugins.changed_creation_date.Path.exists")
43
+ @patch("troubadix.standalone_plugins.changed_creation_date.git")
44
+ def test_check_creation_date_fail(self, mock_git, mock_exists):
45
+
46
+ mock_git.return_value = (
47
+ '-script_tag(name:"creation_date",'
48
+ ' value:"2025-03-04 10:00:00 +0200 (Tue, 04 Mar 2025)");\n'
49
+ '+script_tag(name:"creation_date",'
50
+ ' value:"2020-03-04 10:00:00 +0200 (Wed, 04 Mar 2020)");'
51
+ )
52
+ mock_exists.return_value = True
53
+
54
+ self.assertTrue(
55
+ check_changed_creation_date(TEST_COMMIT_RANGE, TEST_FILES)
56
+ )
57
+
58
+ @patch("troubadix.standalone_plugins.changed_creation_date.Path.exists")
59
+ @patch("troubadix.standalone_plugins.changed_creation_date.git")
60
+ def test_creation_date_not_modified_lines_added(
61
+ self, mock_git, mock_exists
62
+ ):
63
+
64
+ mock_git.return_value = (
65
+ '-script_tag(name:"creation_date",'
66
+ ' value:"2025-03-04 10:00:00 +0200 (Tue, 04 Mar 2025)");\n'
67
+ "test\n"
68
+ '+script_tag(name:"creation_date",'
69
+ ' value:"2025-03-04 10:00:00 +0200 (Tue, 04 Mar 2025)");'
70
+ )
71
+ mock_exists.return_value = True
72
+
73
+ self.assertFalse(
74
+ check_changed_creation_date(TEST_COMMIT_RANGE, TEST_FILES)
75
+ )
76
+
77
+ @patch("troubadix.standalone_plugins.changed_creation_date.Path.exists")
78
+ @patch("troubadix.standalone_plugins.changed_creation_date.git")
79
+ def test_creation_date_not_modified_lines_removed(
80
+ self, mock_git, mock_exists
81
+ ):
82
+
83
+ mock_git.return_value = (
84
+ '-script_tag(name:"This got removed", value:"Nothing");'
85
+ )
86
+ mock_exists.return_value = True
87
+
88
+ self.assertFalse(
89
+ check_changed_creation_date(TEST_COMMIT_RANGE, TEST_FILES)
90
+ )
91
+
92
+ @patch("troubadix.standalone_plugins.changed_creation_date.Path.exists")
93
+ @patch("troubadix.standalone_plugins.changed_creation_date.git")
94
+ def test_creation_date_added_not_removed(self, mock_git, mock_exists):
95
+
96
+ mock_git.return_value = (
97
+ '+script_tag(name:"This got added", value:"Something");\n'
98
+ '+script_tag(name:"creation_date", '
99
+ ' value:"2025-03-04 10:00:00 +0200 (Tue, 04 Mar 2025)");'
100
+ )
101
+ mock_exists.return_value = True
102
+
103
+ self.assertFalse(
104
+ check_changed_creation_date(TEST_COMMIT_RANGE, TEST_FILES)
105
+ )
106
+
107
+ def test_git_fail(self):
108
+ with self.assertRaises(SubprocessError):
109
+ git("blub")
110
+
111
+ def test_git_ok(self):
112
+ git("--version")
113
+
114
+ @patch("troubadix.standalone_plugins.changed_creation_date.git")
115
+ @patch(
116
+ "troubadix.standalone_plugins.changed_creation_date.ArgumentParser.parse_args"
117
+ )
118
+ def test_args_ok(self, mock_parse_args, mock_git):
119
+
120
+ mock_parse_args.return_value = Namespace(
121
+ commit_range="main..test", files=[]
122
+ )
123
+ mock_git.return_value = "test1.nasl\ntest2.nasl\ntest3.txt"
124
+
125
+ parsed_args = parse_arguments()
126
+
127
+ self.assertEqual(parsed_args.commit_range, "main..test")
128
+ self.assertEqual(
129
+ parsed_args.files, [Path("test1.nasl"), Path("test2.nasl")]
130
+ )
131
+
132
+ def test_main_no_git_repository(self):
133
+ cwd = Path.cwd()
134
+ with TemporaryDirectory() as tempdir:
135
+ try:
136
+ chdir(tempdir)
137
+ self.assertEqual(main(), 1)
138
+ finally:
139
+ chdir(cwd)
140
+
141
+ @patch("troubadix.standalone_plugins.changed_creation_date.parse_arguments")
142
+ @patch(
143
+ "troubadix.standalone_plugins.changed_creation_date.check_changed_creation_date"
144
+ )
145
+ @patch("troubadix.standalone_plugins.changed_creation_date.os.chdir")
146
+ @patch("troubadix.standalone_plugins.changed_creation_date.git")
147
+ def test_main_check_creation_date_ok(
148
+ self, mock_git, _, mock_check_creation_date, __
149
+ ):
150
+
151
+ mock_git.return_value = "test_directory"
152
+ mock_check_creation_date.return_value = 0
153
+
154
+ self.assertEqual(main(), 0)
155
+
156
+ @patch("troubadix.standalone_plugins.changed_creation_date.parse_arguments")
157
+ @patch(
158
+ "troubadix.standalone_plugins.changed_creation_date.check_changed_creation_date"
159
+ )
160
+ @patch("troubadix.standalone_plugins.changed_creation_date.os.chdir")
161
+ @patch("troubadix.standalone_plugins.changed_creation_date.git")
162
+ def test_main_check_creation_date_fail(
163
+ self, mock_git, _, mock_check_creation_date, __
164
+ ):
165
+
166
+ mock_git.return_value = "test_directory"
167
+ mock_check_creation_date.return_value = 2
168
+
169
+ self.assertEqual(main(), 2)
170
+
171
+
172
+ if __name__ == "__main__":
173
+ unittest.main()
@@ -15,29 +15,12 @@
15
15
  # You should have received a copy of the GNU General Public License
16
16
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
 
18
- import os
19
- import tempfile
20
18
  import unittest
21
- from contextlib import contextmanager
22
19
  from pathlib import Path
23
20
  from subprocess import SubprocessError
24
- from typing import Generator
25
21
 
26
22
  from troubadix.standalone_plugins.changed_oid import check_oid, git, parse_args
27
-
28
-
29
- @contextmanager
30
- def tempgitdir() -> Generator[Path, None, None]:
31
- cwd = Path.cwd()
32
- tempdir = tempfile.TemporaryDirectory()
33
- temppath = Path(tempdir.name)
34
- os.chdir(str(temppath))
35
- git("init", "-b", "main")
36
- git("config", "--local", "user.email", "max.mustermann@example.com")
37
- git("config", "--local", "user.name", "Max Mustermann")
38
- yield temppath
39
- tempdir.cleanup()
40
- os.chdir(str(cwd))
23
+ from troubadix.standalone_plugins.util import temporary_git_directory
41
24
 
42
25
 
43
26
  def testgit(tmpdir: Path, ok: bool = False) -> None:
@@ -58,13 +41,13 @@ def testgit(tmpdir: Path, ok: bool = False) -> None:
58
41
 
59
42
  class TestChangedOid(unittest.TestCase):
60
43
  def test_check_oid_ok(self):
61
- with tempgitdir() as tmpdir:
44
+ with temporary_git_directory() as tmpdir:
62
45
  testgit(tmpdir, True)
63
46
  parsed_args = parse_args(["-c", "main..test"])
64
47
  self.assertFalse(check_oid(parsed_args))
65
48
 
66
49
  def test_check_oid_fail(self):
67
- with tempgitdir() as tmpdir:
50
+ with temporary_git_directory() as tmpdir:
68
51
  testgit(tmpdir)
69
52
  parsed_args = parse_args(["-c", "main..test"])
70
53
  self.assertTrue(check_oid(parsed_args))
@@ -77,7 +60,7 @@ class TestChangedOid(unittest.TestCase):
77
60
  git("--version")
78
61
 
79
62
  def test_args_ok(self):
80
- with tempgitdir() as tmpdir:
63
+ with temporary_git_directory() as tmpdir:
81
64
  testgit(tmpdir)
82
65
  self.assertEqual(
83
66
  parse_args(["-c", "main..test"]).commit_range, "main..test"
@@ -2,4 +2,4 @@
2
2
 
3
3
  # THIS IS AN AUTOGENERATED FILE. DO NOT TOUCH!
4
4
 
5
- __version__ = "25.6.1"
5
+ __version__ = "25.7.0"
@@ -0,0 +1,141 @@
1
+ # SPDX-License-Identifier: GPL-3.0-or-later
2
+ # SPDX-FileCopyrightText: 2025 Greenbone AG
3
+
4
+ import logging
5
+ import os
6
+ import re
7
+ import subprocess
8
+ import sys
9
+ from argparse import ArgumentParser, Namespace
10
+ from pathlib import Path
11
+
12
+ from troubadix.argparser import file_type_existing
13
+ from troubadix.standalone_plugins.common import git
14
+
15
+ logger = logging.getLogger(__name__)
16
+
17
+ CREATION_DATE_BASE_PATTERN = (
18
+ r"\s*script_tag\s*\(\s*name\s*:\s*\"creation_date\"\s*,"
19
+ r"\s*value\s*:\s*\"(?P<creation_date>.*)\"\s*\)\s*;"
20
+ )
21
+
22
+
23
+ def parse_arguments() -> Namespace:
24
+
25
+ parser = ArgumentParser(
26
+ description="Check for changed creation date",
27
+ )
28
+ parser.add_argument(
29
+ "-c",
30
+ "--commit_range",
31
+ type=str,
32
+ required=True,
33
+ help=(
34
+ "Git commit range to check e.g. "
35
+ "2c87f4b6062804231fd508411510ca07fd270380..HEAD or"
36
+ "YOUR_BRANCH..main"
37
+ ),
38
+ )
39
+ parser.add_argument(
40
+ "-f",
41
+ "--files",
42
+ nargs="+",
43
+ type=file_type_existing,
44
+ default=[],
45
+ help=(
46
+ "List of files to diff. "
47
+ "If empty use all files added or modified in the commit range."
48
+ ),
49
+ )
50
+ args = parser.parse_args()
51
+
52
+ if not args.files:
53
+ args.files += [
54
+ Path(filename)
55
+ for filename in git(
56
+ "diff", "--name-only", "--diff-filter=d", args.commit_range
57
+ ).splitlines()
58
+ if filename.endswith(".nasl")
59
+ ]
60
+
61
+ return args
62
+
63
+
64
+ def check_changed_creation_date(
65
+ commit_range: str, nasl_files: list[Path]
66
+ ) -> bool:
67
+ """
68
+ This script checks (via git diff) if the creation date of
69
+ passed VTs has changed, which is not allowed.
70
+ """
71
+ creation_date_changed = False
72
+
73
+ for nasl_file in nasl_files:
74
+
75
+ if not nasl_file.exists():
76
+ continue
77
+
78
+ logger.info("Check file %s", nasl_file)
79
+ text = git(
80
+ "-c",
81
+ "color.status=false",
82
+ "--no-pager",
83
+ "diff",
84
+ commit_range,
85
+ nasl_file,
86
+ )
87
+
88
+ creation_date_added = re.search(
89
+ r"^\+" + CREATION_DATE_BASE_PATTERN,
90
+ text,
91
+ re.MULTILINE,
92
+ )
93
+ if not creation_date_added or not (
94
+ added := creation_date_added.group("creation_date")
95
+ ):
96
+ continue
97
+
98
+ creation_date_removed = re.search(
99
+ r"^\-" + CREATION_DATE_BASE_PATTERN,
100
+ text,
101
+ re.MULTILINE,
102
+ )
103
+ if not creation_date_removed or not (
104
+ removed := creation_date_removed.group("creation_date")
105
+ ):
106
+ continue
107
+
108
+ if added != removed:
109
+ logger.error(
110
+ "The creation date of %s was changed, "
111
+ "which is not allowed.\nNew creation date: "
112
+ "%s\nOld creation date: %s",
113
+ nasl_file,
114
+ added,
115
+ removed,
116
+ )
117
+ creation_date_changed = True
118
+
119
+ return creation_date_changed
120
+
121
+
122
+ def main() -> int:
123
+
124
+ try:
125
+ git_base = git("rev-parse", "--show-toplevel")
126
+ os.chdir(git_base.rstrip("\n"))
127
+ except subprocess.SubprocessError:
128
+ logger.error(
129
+ "Your current working directory doesn't belong to a git repository"
130
+ )
131
+ return 1
132
+
133
+ args = parse_arguments()
134
+ if check_changed_creation_date(args.commit_range, args.files):
135
+ return 2
136
+
137
+ return 0
138
+
139
+
140
+ if __name__ == "__main__":
141
+ sys.exit(main())
@@ -0,0 +1,27 @@
1
+ # SPDX-License-Identifier: GPL-3.0-or-later
2
+ # SPDX-FileCopyrightText: 2025 Greenbone AG
3
+
4
+ from contextlib import contextmanager
5
+ from os import chdir
6
+ from pathlib import Path
7
+ from tempfile import TemporaryDirectory
8
+
9
+ from troubadix.standalone_plugins.changed_creation_date import git
10
+
11
+
12
+ @contextmanager
13
+ def temporary_git_directory():
14
+
15
+ cwd = Path.cwd()
16
+
17
+ with TemporaryDirectory() as tempdir:
18
+
19
+ try:
20
+ chdir(tempdir)
21
+ git("init", "-b", "main")
22
+ git("config", "--local", "user.email", "max.mustermann@example.com")
23
+ git("config", "--local", "user.name", "Max Mustermann")
24
+ yield Path(tempdir)
25
+
26
+ finally:
27
+ chdir(cwd)
File without changes
File without changes
File without changes