troubadix 25.2.3__tar.gz → 25.3.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 (209) hide show
  1. {troubadix-25.2.3 → troubadix-25.3.0}/PKG-INFO +1 -1
  2. {troubadix-25.2.3 → troubadix-25.3.0}/pyproject.toml +1 -1
  3. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_creation_date.py +40 -0
  4. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_encoding.py +2 -2
  5. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/__version__.py +1 -1
  6. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/creation_date.py +49 -35
  7. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/encoding.py +4 -4
  8. {troubadix-25.2.3 → troubadix-25.3.0}/LICENSE +0 -0
  9. {troubadix-25.2.3 → troubadix-25.3.0}/README.md +0 -0
  10. {troubadix-25.2.3 → troubadix-25.3.0}/tests/__init__.py +0 -0
  11. {troubadix-25.2.3 → troubadix-25.3.0}/tests/helper/__init__.py +0 -0
  12. {troubadix-25.2.3 → troubadix-25.3.0}/tests/helper/test_linguistic_exception_handler.py +0 -0
  13. {troubadix-25.2.3 → troubadix-25.3.0}/tests/helper/test_patterns.py +0 -0
  14. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/__init__.py +0 -0
  15. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/fail.nasl +0 -0
  16. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/fail2.nasl +0 -0
  17. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test.nasl +0 -0
  18. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_badwords.py +0 -0
  19. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_copyright_text.py +0 -0
  20. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_copyright_year.py +0 -0
  21. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_cve_format.py +0 -0
  22. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_cvss_format.py +0 -0
  23. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_dependencies.py +0 -0
  24. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_dependency_category_order.py +0 -0
  25. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_deprecated_dependency.py +0 -0
  26. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_deprecated_functions.py +0 -0
  27. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_double_end_points.py +0 -0
  28. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_duplicate_oid.py +0 -0
  29. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_duplicated_script_tags.py +0 -0
  30. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/fail_bad_new_line.nasl +0 -0
  31. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/fail_badwords.nasl +0 -0
  32. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/fail_name_and_copyright_newline.nasl +0 -0
  33. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/fail_name_newline.nasl +0 -0
  34. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/fail_permissions.nasl +0 -0
  35. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/fail_spelling.nasl +0 -0
  36. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/nasl/21.04/fail.nasl +0 -0
  37. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/nasl/21.04/fail_badwords.nasl +0 -0
  38. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/nasl/21.04/fail_name_and_copyright_newline.nasl +0 -0
  39. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/nasl/21.04/fail_name_newline.nasl +0 -0
  40. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/nasl/21.04/fail_solution_template.nasl +0 -0
  41. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/nasl/21.04/runner/fail.nasl +0 -0
  42. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/nasl/21.04/runner/fail2.nasl +0 -0
  43. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/nasl/21.04/runner/test.nasl +0 -0
  44. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/nasl/21.04/runner/test_valid_oid.nasl +0 -0
  45. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/nasl/21.04/test.inc +0 -0
  46. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/nasl/21.04/test.nasl +0 -0
  47. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/nasl/warning.nasl +0 -0
  48. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/ok_permissions.nasl +0 -0
  49. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_files/test_oid.nasl +0 -0
  50. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_forking_nasl_functions.py +0 -0
  51. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_get_kb_on_services.py +0 -0
  52. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_grammar.py +0 -0
  53. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_http_links_in_tags.py +0 -0
  54. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_illegal_characters.py +0 -0
  55. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_log_messages.py +0 -0
  56. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_malformed_dependencies.py +0 -0
  57. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_misplaced_compare_in_if.py +0 -0
  58. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_missing_desc_exit.py +0 -0
  59. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_missing_tag_solution.py +0 -0
  60. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_multiple_re_parameters.py +0 -0
  61. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_newlines.py +0 -0
  62. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_overlong_description_lines.py +0 -0
  63. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_overlong_script_tags.py +0 -0
  64. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_prod_svc_detect_in_vulnvt.py +0 -0
  65. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_qod.py +0 -0
  66. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_reporting_consistency.py +0 -0
  67. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_script_add_preference_type.py +0 -0
  68. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_script_calls_empty_values.py +0 -0
  69. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_script_calls_recommended.py +0 -0
  70. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_script_category.py +0 -0
  71. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_script_copyright.py +0 -0
  72. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_script_family.py +0 -0
  73. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_script_tag_form.py +0 -0
  74. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_script_tag_whitespaces.py +0 -0
  75. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_script_tags_mandatory.py +0 -0
  76. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_script_version_and_last_modification_tags.py +0 -0
  77. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_script_xref_form.py +0 -0
  78. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_script_xref_url.py +0 -0
  79. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_security_messages.py +0 -0
  80. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_set_get_kb_calls.py +0 -0
  81. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_solution_text.py +0 -0
  82. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_solution_type.py +0 -0
  83. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_spaces_before_dots.py +0 -0
  84. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_spaces_in_filename.py +0 -0
  85. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_spelling.py +0 -0
  86. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_tabs.py +0 -0
  87. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_todo_tbd.py +0 -0
  88. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_trailing_spaces_tabs.py +0 -0
  89. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_using_display.py +0 -0
  90. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_valid_oid.py +0 -0
  91. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_valid_script_tag_names.py +0 -0
  92. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_variable_redefinition_in_foreach.py +0 -0
  93. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_vt_file_permissions.py +0 -0
  94. {troubadix-25.2.3 → troubadix-25.3.0}/tests/plugins/test_vt_placement.py +0 -0
  95. {troubadix-25.2.3 → troubadix-25.3.0}/tests/standalone_plugins/__init__.py +0 -0
  96. {troubadix-25.2.3 → troubadix-25.3.0}/tests/standalone_plugins/changed_packages/__init__.py +0 -0
  97. {troubadix-25.2.3 → troubadix-25.3.0}/tests/standalone_plugins/changed_packages/markers/__init__.py +0 -0
  98. {troubadix-25.2.3 → troubadix-25.3.0}/tests/standalone_plugins/changed_packages/markers/test_added_epoch.py +0 -0
  99. {troubadix-25.2.3 → troubadix-25.3.0}/tests/standalone_plugins/changed_packages/markers/test_added_release.py +0 -0
  100. {troubadix-25.2.3 → troubadix-25.3.0}/tests/standalone_plugins/changed_packages/markers/test_added_udeb.py +0 -0
  101. {troubadix-25.2.3 → troubadix-25.3.0}/tests/standalone_plugins/changed_packages/markers/test_changed_update.py +0 -0
  102. {troubadix-25.2.3 → troubadix-25.3.0}/tests/standalone_plugins/changed_packages/markers/test_dropped_architecture.py +0 -0
  103. {troubadix-25.2.3 → troubadix-25.3.0}/tests/standalone_plugins/changed_packages/test_changed_packages.py +0 -0
  104. {troubadix-25.2.3 → troubadix-25.3.0}/tests/standalone_plugins/changed_packages/test_package.py +0 -0
  105. {troubadix-25.2.3 → troubadix-25.3.0}/tests/standalone_plugins/test_changed_cves.py +0 -0
  106. {troubadix-25.2.3 → troubadix-25.3.0}/tests/standalone_plugins/test_changed_oid.py +0 -0
  107. {troubadix-25.2.3 → troubadix-25.3.0}/tests/standalone_plugins/test_deprecate_vts.py +0 -0
  108. {troubadix-25.2.3 → troubadix-25.3.0}/tests/standalone_plugins/test_file_extensions.py +0 -0
  109. {troubadix-25.2.3 → troubadix-25.3.0}/tests/standalone_plugins/test_last_modification.py +0 -0
  110. {troubadix-25.2.3 → troubadix-25.3.0}/tests/standalone_plugins/test_no_solution.py +0 -0
  111. {troubadix-25.2.3 → troubadix-25.3.0}/tests/standalone_plugins/test_version_updated.py +0 -0
  112. {troubadix-25.2.3 → troubadix-25.3.0}/tests/test_argparser.py +0 -0
  113. {troubadix-25.2.3 → troubadix-25.3.0}/tests/test_helper.py +0 -0
  114. {troubadix-25.2.3 → troubadix-25.3.0}/tests/test_naslinter.py +0 -0
  115. {troubadix-25.2.3 → troubadix-25.3.0}/tests/test_reporter.py +0 -0
  116. {troubadix-25.2.3 → troubadix-25.3.0}/tests/test_results.py +0 -0
  117. {troubadix-25.2.3 → troubadix-25.3.0}/tests/test_runner.py +0 -0
  118. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/__init__.py +0 -0
  119. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/argparser.py +0 -0
  120. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/codespell/codespell.additions +0 -0
  121. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/codespell/codespell.exclude +0 -0
  122. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/codespell/codespell.ignore +0 -0
  123. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/helper/__init__.py +0 -0
  124. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/helper/helper.py +0 -0
  125. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/helper/linguistic_exception_handler.py +0 -0
  126. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/helper/patterns.py +0 -0
  127. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugin.py +0 -0
  128. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/__init__.py +0 -0
  129. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/badwords.py +0 -0
  130. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/copyright_text.py +0 -0
  131. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/copyright_year.py +0 -0
  132. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/cve_format.py +0 -0
  133. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/cvss_format.py +0 -0
  134. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/dependencies.py +0 -0
  135. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/dependency_category_order.py +0 -0
  136. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/deprecated_dependency.py +0 -0
  137. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/deprecated_functions.py +0 -0
  138. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/double_end_points.py +0 -0
  139. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/duplicate_oid.py +0 -0
  140. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/duplicated_script_tags.py +0 -0
  141. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/forking_nasl_functions.py +0 -0
  142. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/get_kb_on_services.py +0 -0
  143. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/grammar.py +0 -0
  144. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/http_links_in_tags.py +0 -0
  145. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/illegal_characters.py +0 -0
  146. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/log_messages.py +0 -0
  147. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/malformed_dependencies.py +0 -0
  148. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/misplaced_compare_in_if.py +0 -0
  149. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/missing_desc_exit.py +0 -0
  150. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/missing_tag_solution.py +0 -0
  151. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/multiple_re_parameters.py +0 -0
  152. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/newlines.py +0 -0
  153. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/overlong_description_lines.py +0 -0
  154. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/overlong_script_tags.py +0 -0
  155. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/prod_svc_detect_in_vulnvt.py +0 -0
  156. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/qod.py +0 -0
  157. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/reporting_consistency.py +0 -0
  158. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/script_add_preference_type.py +0 -0
  159. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/script_calls_empty_values.py +0 -0
  160. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/script_calls_recommended.py +0 -0
  161. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/script_category.py +0 -0
  162. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/script_copyright.py +0 -0
  163. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/script_family.py +0 -0
  164. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/script_tag_form.py +0 -0
  165. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/script_tag_whitespaces.py +0 -0
  166. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/script_tags_mandatory.py +0 -0
  167. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/script_version_and_last_modification_tags.py +0 -0
  168. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/script_xref_form.py +0 -0
  169. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/script_xref_url.py +0 -0
  170. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/security_messages.py +0 -0
  171. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/set_get_kb_calls.py +0 -0
  172. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/solution_text.py +0 -0
  173. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/solution_type.py +0 -0
  174. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/spaces_before_dots.py +0 -0
  175. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/spaces_in_filename.py +0 -0
  176. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/spelling.py +0 -0
  177. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/tabs.py +0 -0
  178. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/todo_tbd.py +0 -0
  179. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/trailing_spaces_tabs.py +0 -0
  180. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/using_display.py +0 -0
  181. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/valid_oid.py +0 -0
  182. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/valid_script_tag_names.py +0 -0
  183. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/variable_assigned_in_if.py +0 -0
  184. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/variable_redefinition_in_foreach.py +0 -0
  185. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/vt_file_permissions.py +0 -0
  186. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/plugins/vt_placement.py +0 -0
  187. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/reporter.py +0 -0
  188. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/results.py +0 -0
  189. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/runner.py +0 -0
  190. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/standalone_plugins/__init__.py +0 -0
  191. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/standalone_plugins/allowed_rev_diff.py +0 -0
  192. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/standalone_plugins/changed_cves.py +0 -0
  193. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/standalone_plugins/changed_oid.py +0 -0
  194. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/standalone_plugins/changed_packages/changed_packages.py +0 -0
  195. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/standalone_plugins/changed_packages/marker/__init__.py +0 -0
  196. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/standalone_plugins/changed_packages/marker/added_epoch.py +0 -0
  197. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/standalone_plugins/changed_packages/marker/added_release.py +0 -0
  198. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/standalone_plugins/changed_packages/marker/added_udeb.py +0 -0
  199. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/standalone_plugins/changed_packages/marker/changed_update.py +0 -0
  200. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/standalone_plugins/changed_packages/marker/dropped_architecture.py +0 -0
  201. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/standalone_plugins/changed_packages/marker/marker.py +0 -0
  202. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/standalone_plugins/changed_packages/package.py +0 -0
  203. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/standalone_plugins/common.py +0 -0
  204. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/standalone_plugins/deprecate_vts.py +0 -0
  205. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/standalone_plugins/file_extensions.py +0 -0
  206. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/standalone_plugins/last_modification.py +0 -0
  207. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/standalone_plugins/no_solution.py +0 -0
  208. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/standalone_plugins/version_updated.py +0 -0
  209. {troubadix-25.2.3 → troubadix-25.3.0}/troubadix/troubadix.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: troubadix
3
- Version: 25.2.3
3
+ Version: 25.3.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.2.3"
3
+ version = "25.3.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"
@@ -153,3 +153,43 @@ class CheckCreationDateTestCase(PluginTestCase):
153
153
  "False or incorrectly formatted creation_date.",
154
154
  results[0].message,
155
155
  )
156
+
157
+ def test_creation_date_greater_than_last_modification(self):
158
+ path = Path("some/file.nasl")
159
+ content = (
160
+ ' script_tag(name:"creation_date", value:"2025-01-01 00:00:01 '
161
+ '+0200 (Wed, 01 Jan 2025)");\n'
162
+ ' script_tag(name:"last_modification", value:"2025-01-01 00:00:00 '
163
+ '+0200 (Wed, 01 Jan 2025)");\n'
164
+ )
165
+ fake_context = self.create_file_plugin_context(
166
+ nasl_file=path, file_content=content
167
+ )
168
+ plugin = CheckCreationDate(fake_context)
169
+
170
+ results = list(plugin.run())
171
+
172
+ self.assertEqual(len(results), 1)
173
+
174
+ self.assertIsInstance(results[0], LinterError)
175
+ self.assertEqual(
176
+ "The creation_date must not be greater than the last modification date.",
177
+ results[0].message,
178
+ )
179
+
180
+ def test_creation_date_equal_last_modification(self):
181
+ path = Path("some/file.nasl")
182
+ content = (
183
+ ' script_tag(name:"creation_date", value:"2025-01-01 00:00:00 '
184
+ '+0200 (Wed, 01 Jan 2025)");\n'
185
+ ' script_tag(name:"last_modification", value:"2025-01-01 00:00:00 '
186
+ '+0200 (Wed, 01 Jan 2025)");\n'
187
+ )
188
+ fake_context = self.create_file_plugin_context(
189
+ nasl_file=path, file_content=content
190
+ )
191
+ plugin = CheckCreationDate(fake_context)
192
+
193
+ results = list(plugin.run())
194
+
195
+ self.assertEqual(len(results), 0)
@@ -70,11 +70,11 @@ class CheckEncodingTestCase(PluginTestCase):
70
70
  results[0].message,
71
71
  )
72
72
  self.assertEqual(
73
- "Found invalid character",
73
+ "Found invalid character in line: 1",
74
74
  results[1].message,
75
75
  )
76
76
  self.assertEqual(
77
- "Found invalid character",
77
+ "Found invalid character in line: 2",
78
78
  results[2].message,
79
79
  )
80
80
 
@@ -2,4 +2,4 @@
2
2
 
3
3
  # THIS IS AN AUTOGENERATED FILE. DO NOT TOUCH!
4
4
 
5
- __version__ = "25.2.3"
5
+ __version__ = "25.3.0"
@@ -52,45 +52,59 @@ class CheckCreationDate(FileContentPlugin):
52
52
  # Example: "2017-11-29 13:56:41 +0100 (Wed, 29 Nov 2017)"
53
53
  match = tag_pattern.search(file_content)
54
54
 
55
- if match:
56
- try:
57
- date_left = datetime.strptime(
58
- match.group("value")[:25], "%Y-%m-%d %H:%M:%S %z"
59
- )
60
- # 2017-11-29 13:56:41 +0100 (error if no timezone)
61
- date_right = datetime.strptime(
62
- match.group("value")[27:43], "%a, %d %b %Y"
63
- )
64
- week_day_parsed = date_right.strftime("%a")
65
- except ValueError:
66
- yield LinterError(
67
- "False or incorrectly formatted creation_date.",
68
- file=nasl_file,
69
- plugin=self.name,
70
- )
71
- return
55
+ if not match:
56
+ yield LinterError(
57
+ "False or incorrectly formatted creation_date.",
58
+ file=nasl_file,
59
+ plugin=self.name,
60
+ )
61
+ return
72
62
 
73
- week_day_str = match.group("value")[27:30]
74
- # Wed, 29 Nov 2017
75
- if date_left.date() != date_right.date():
76
- yield LinterError(
77
- "The creation_date consists of two different dates.",
78
- file=nasl_file,
79
- plugin=self.name,
80
- )
81
- # Check correct weekday
82
- elif week_day_str != week_day_parsed:
83
- formatted_date = week_day_parsed
84
- yield LinterError(
85
- f"Wrong day of week. Please change it from '{week_day_str}"
86
- f"' to '{formatted_date}'.",
87
- file=nasl_file,
88
- plugin=self.name,
89
- )
90
- else:
63
+ try:
64
+ date_left = datetime.strptime(
65
+ match.group("value")[:25], "%Y-%m-%d %H:%M:%S %z"
66
+ )
67
+ # 2017-11-29 13:56:41 +0100 (error if no timezone)
68
+ date_right = datetime.strptime(
69
+ match.group("value")[27:43], "%a, %d %b %Y"
70
+ )
71
+ week_day_parsed = date_right.strftime("%a")
72
+ except ValueError:
91
73
  yield LinterError(
92
74
  "False or incorrectly formatted creation_date.",
93
75
  file=nasl_file,
94
76
  plugin=self.name,
95
77
  )
96
78
  return
79
+
80
+ week_day_str = match.group("value")[27:30]
81
+ # Wed, 29 Nov 2017
82
+ if date_left.date() != date_right.date():
83
+ yield LinterError(
84
+ "The creation_date consists of two different dates.",
85
+ file=nasl_file,
86
+ plugin=self.name,
87
+ )
88
+ # Check correct weekday
89
+ elif week_day_str != week_day_parsed:
90
+ formatted_date = week_day_parsed
91
+ yield LinterError(
92
+ f"Wrong day of week. Please change it from '{week_day_str}"
93
+ f"' to '{formatted_date}'.",
94
+ file=nasl_file,
95
+ plugin=self.name,
96
+ )
97
+
98
+ last_modification_pattern = get_script_tag_pattern(
99
+ ScriptTag.LAST_MODIFICATION
100
+ )
101
+ if match := last_modification_pattern.search(file_content):
102
+ last_modification = datetime.strptime(
103
+ match.group("value")[:25], "%Y-%m-%d %H:%M:%S %z"
104
+ )
105
+ if date_left > last_modification:
106
+ yield LinterError(
107
+ "The creation_date must not be greater than the last modification date.",
108
+ file=nasl_file,
109
+ plugin=self.name,
110
+ )
@@ -26,7 +26,7 @@ from troubadix.plugin import LineContentPlugin, LinterError, LinterResult
26
26
  # Only the ASCII and extended ASCII for now... # https://www.ascii-code.com/
27
27
  # CHAR_SET = r"[^\x00-\xFF]"
28
28
  # Temporary only check for chars in between 7f-9f, like in the old Feed-QA...
29
- CHAR_SET = r"[\x7F-\x9F]"
29
+ INVALID_CHAR_PATTERN = re.compile(r"[\x7F-\x9F]")
30
30
 
31
31
  ALLOWED_ENCODINGS = ["ascii", "latin_1"]
32
32
 
@@ -52,10 +52,10 @@ class CheckEncoding(LineContentPlugin):
52
52
  )
53
53
 
54
54
  for index, line in enumerate(lines, 1):
55
- encoding = re.search(CHAR_SET, line)
56
- if encoding is not None:
55
+ encoding = INVALID_CHAR_PATTERN.search(line)
56
+ if encoding:
57
57
  yield LinterError(
58
- "Found invalid character",
58
+ f"Found invalid character in line: {index}",
59
59
  file=nasl_file,
60
60
  plugin=self.name,
61
61
  line=index,
File without changes
File without changes
File without changes