Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix pytest errors test collection #3972

Closed
wants to merge 66 commits into from
Closed
Show file tree
Hide file tree
Changes from 37 commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
128acc8
fix(#3969): pytest env errors
Rebits Feb 20, 2023
1b462d4
fix(#3969): renamed parameter and minnor fixes
Rebits Feb 20, 2023
6112ee1
fix(#3969): bad variable name
Rebits Feb 20, 2023
c0ed0bd
style(#3969): fit pep8
Rebits Feb 21, 2023
f88ebb0
merge(#3960): 4.4 into 3969
Rebits Feb 21, 2023
6ff260a
docs(#3969): include 3969 changelog
Rebits Feb 21, 2023
9e25b39
style(#3969): fit pep8 tools module
Rebits Feb 21, 2023
a6952aa
feat(): include tests collection action
Rebits Feb 21, 2023
bc18cc2
merge(#3969): 4.4
Rebits May 22, 2023
eb4b777
fix(#3969): fix gh tests collection
Rebits May 22, 2023
b6c8cc9
refac(#3969): tests collection action
Rebits May 22, 2023
0c2c3ba
fix(#3969): get service
Rebits May 22, 2023
5cc93ce
feat: check if agent is installed in Windows hosts
Rebits Jun 26, 2023
804b25b
refactor: remove try/catch logic
Rebits Jun 26, 2023
2a98192
refactor: remove timeout global variable
Rebits Jun 26, 2023
064e064
refactor: remove truncate log fixture
Rebits Jun 26, 2023
f024c10
docs: include fixture docstring
Rebits Jun 26, 2023
79ef471
style: remove extra whitespaces
Rebits Jun 26, 2023
d725a51
refactor: remove unnecessary if conditional
Rebits Jun 26, 2023
0c77871
merge: branch '4.4.5'
Rebits Jun 26, 2023
297b91b
refactor: remove extra file
Rebits Jun 26, 2023
1184898
refactor: remove truncate log fixture
Rebits Jun 26, 2023
3a08094
feat: restore wait_for_start_module fixture
Rebits Jun 26, 2023
1682d90
style: fix pep8
Rebits Jun 26, 2023
79ce775
fix: tests collection integratord fim
Rebits Jun 26, 2023
20decee
feat: skip integratord if no webhooks is provided
Rebits Jun 26, 2023
7bea695
fix: internal option fixtures
Rebits Jun 28, 2023
8775e37
merge: 4.5.0 into 3969
Rebits Jun 28, 2023
7dacbca
merge: 4.5.0
Rebits Jun 28, 2023
22ff92e
fix: removed deselection debugging fixture
Rebits Jul 28, 2023
1f5ab15
fix: rename collection action task
Rebits Jul 28, 2023
bb079ab
fix: include comment for modifyitems hook
Rebits Jul 28, 2023
9594d0f
docs: include docstring to get_version/get_service
Rebits Jul 28, 2023
2b7e163
fix: test collection github action
Rebits Jul 28, 2023
9839e3a
merge: 4.5.0
Rebits Jul 28, 2023
fb9b65f
fix(#3969): pytest env errors
juliamagan Sep 7, 2023
84cd718
fix(#3969): renamed parameter and minnor fixes
Rebits Feb 20, 2023
b9a63c4
fix(#3969): bad variable name
Rebits Feb 20, 2023
49fbed7
style(#3969): fit pep8
Rebits Feb 21, 2023
032e924
docs(#3969): include 3969 changelog
Rebits Feb 21, 2023
29933f6
style(#3969): fit pep8 tools module
Rebits Feb 21, 2023
dad023b
feat(): include tests collection action
Rebits Feb 21, 2023
07dda70
fix(#3969): fix gh tests collection
Rebits May 22, 2023
1255915
refac(#3969): tests collection action
Rebits May 22, 2023
3517a33
fix(#3969): get service
Rebits May 22, 2023
5c1447c
feat: check if agent is installed in Windows hosts
Rebits Jun 26, 2023
7ec2e0d
refactor: remove try/catch logic
Rebits Jun 26, 2023
b9e2df8
refactor: remove timeout global variable
Rebits Jun 26, 2023
a178467
refactor: remove truncate log fixture
Rebits Jun 26, 2023
b17254f
style: remove extra whitespaces
Rebits Jun 26, 2023
3e4f69e
refactor: remove unnecessary if conditional
Rebits Jun 26, 2023
6221722
refactor: remove extra file
Rebits Jun 26, 2023
d9d5f23
refactor: remove truncate log fixture
Rebits Jun 26, 2023
65ac11b
style: fix pep8
Rebits Jun 26, 2023
da2f76b
fix: tests collection integratord fim
Rebits Jun 26, 2023
8c7a75e
feat: skip integratord if no webhooks is provided
Rebits Jun 26, 2023
d911eb3
fix: internal option fixtures
Rebits Jun 28, 2023
9a52620
fix: removed deselection debugging fixture
Rebits Jul 28, 2023
8fcfe5b
fix: rename collection action task
Rebits Jul 28, 2023
2b9e4ff
fix: include comment for modifyitems hook
Rebits Jul 28, 2023
9637846
docs: include docstring to get_version/get_service
Rebits Jul 28, 2023
fa4af39
fix: test collection github action
Rebits Jul 28, 2023
a674409
Merge branch '3969-fix-pytest-collection' of github.com:wazuh/wazuh-q…
juliamagan Sep 7, 2023
3be690f
Merge branch '4.5.3' into 3969-fix-pytest-collection
verdx Sep 15, 2023
fefd573
Merge branch 'master' into 3969-fix-pytest-collection
verdx Sep 15, 2023
a93b953
Merge branch 'master' into 3969-fix-pytest-collection
Rebits Jan 3, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions .github/workflows/pytest_tests_collection.yaml
mauromalara marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Tests collection

on:
pull_request:
types:
- opened
- ready_for_review
- synchronize

jobs:
test-collection:
runs-on: ubuntu-latest
steps:

- name: Checkout code
uses: actions/checkout@v2

- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8

- name: Install dependencies
run: pip install -r requirements.txt

- name: Install the QA framework
run: python3 setup.py install
working-directory: deps/wazuh_testing

- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v35.9.2

- name: Get tests modules changed
id: set-changed-modules
run: |
files_changed="${{ steps.changed-files.outputs.all_changed_files }}"
DIRECTORIES=$(echo $files_changed | tr ' ' '\n' | grep ^tests | grep -v pytest.ini | cut -d/ -f2 | \
uniq | tr -d ' ')
DIRECTORIES=$(echo $DIRECTORIES | tr ' ' ',')
echo "matrix=$DIRECTORIES" >> $GITHUB_OUTPUT

- name: Collect tests
run: |
DIRECTORIES=$(echo ${{ steps.set-changed-modules.outputs.matrix }} | tr ',' ' ')
for directory in $DIRECTORIES; do
pytest --collect-only tests/${directory}
done
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ Release report: TBD
- Upgrade PyYAML to 6.0.1. ([#4326](https://github.com/wazuh/wazuh-qa/pull/4326)) \- (Framework)
- Change Vulnerability Detector ITs to support the development of the NVD 2.0 refactor. ([#4327](https://github.com/wazuh/wazuh-qa/pull/4327)) \- (Tests)

### Fixed

- Fix pytest test collection errors ([#3969](https://github.com/wazuh/wazuh-qa/pull/3972)) \- (Framework + Tests)

## [4.4.5] - 10-07-2023

Wazuh commit: https://github.com/wazuh/wazuh/commit/8d17d2c9c11bc10be9a31c83bc7c17dfbac0d2a0 \
Expand Down
48 changes: 32 additions & 16 deletions deps/wazuh_testing/wazuh_testing/tools/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,28 +91,44 @@


def get_version():
mauromalara marked this conversation as resolved.
Show resolved Hide resolved
"""Get Wazuh version

if platform.system() in ['Windows', 'win32']:
with open(os.path.join(WAZUH_PATH, 'VERSION'), 'r') as f:
version = f.read()
return version[:version.rfind('\n')]
Returns:
str: Wazuh version. If it is not possible to get it, it returns 'N/A'
"""
try:
if platform.system() in ['Windows', 'win32']:
with open(os.path.join(WAZUH_PATH, 'VERSION'), 'r') as f:
version = f.read()
return version[:version.rfind('\n')]

else: # Linux, sunos5, darwin, aix...
return subprocess.check_output([
f"{WAZUH_PATH}/bin/wazuh-control", "info", "-v"
], stderr=subprocess.PIPE).decode('utf-8').rstrip()
else: # Linux, sunos5, darwin, aix...
return subprocess.check_output([f"{WAZUH_PATH}/bin/wazuh-control", "info", "-v"],
stderr=subprocess.PIPE).decode('utf-8').rstrip()
except Exception:
return 'N/A'
Comment on lines +109 to +110
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Specify an exception

Copy link
Contributor

@mauromalara mauromalara Jul 14, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EDIT: Read the original conversation.

Why are you returning 'N/A' and not False or something more descriptive? Could we choose a better way here?

Copy link
Member Author

@Rebits Rebits Jul 28, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Due to the function is called get_version it maybe has not sense to return false, but I agree this is could lead into errors in the future. However I can not see a perfect solution here, due to legacy code.
Maybe something like the following could make the job:

def get_version():
    try:
        if platform.system() in ['Windows', 'win32']:
            with open(os.path.join(WAZUH_PATH, 'VERSION'), 'r') as f:
                version = f.read()
                return version[:version.rfind('\n')]

        else:  # Linux, sunos5, darwin, aix...
            return subprocess.check_output([f"{WAZUH_PATH}/bin/wazuh-control", "info", "-v"],
                                           stderr=subprocess.PIPE).decode('utf-8').rstrip()
    except FileNotFoundError:
        return 'Version file not found'
    except subprocess.CalledProcessError as e:
        return f'Error getting version: {e}'
    except PermissionError as e:
        return f'Permission error: {e}'

It is not the perfect solution, but we need to make this function not fail in case of failure gathering the version.
Please leave some feedback about the proposed solution in order to apply the changes

Copy link
Contributor

@mauromalara mauromalara Aug 3, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I totally get what you mean! IMHO, I believe the function should definitely serve its purpose, and if it can't, it ought to throw an error. The object, function, or whatever made the call to it should handle the error gracefully (just in case it fails for some reason). That way, it can do whatever it needs to do. But remember, this utility has a clear goal, which, in my opinion, is to get the Wazuh version.

But, one more thing to consider, as you mentioned earlier, is the legacy code. So, I reckon your proposal will work as a temporary fix.

Please, apply it and I'll resolve this conversation.



def get_service():
mauromalara marked this conversation as resolved.
Show resolved Hide resolved
if platform.system() in ['Windows', 'win32']:
return 'wazuh-agent'

else: # Linux, sunos5, darwin, aix...
service = subprocess.check_output([
f"{WAZUH_PATH}/bin/wazuh-control", "info", "-t"
], stderr=subprocess.PIPE).decode('utf-8').strip()
"""Get Wazuh installed component

return 'wazuh-manager' if service == 'server' else 'wazuh-agent'
Returns:
str: Wazuh installed component, wazuh-manager or wazuh-agent. If it is not possible to get it, it returns 'N/A'
"""
try:
if platform.system() in ['Windows', 'win32']:
if os.path.exists(WAZUH_PATH):
service = 'wazuh-agent'
else:
service = 'N/A'
else: # Linux, sunos5, darwin, aix...
output = subprocess.check_output([f"{WAZUH_PATH}/bin/wazuh-control", "info", "-t"],
stderr=subprocess.PIPE).decode('utf-8').strip()
service = 'wazuh-manager' if output == 'server' else 'wazuh-agent'
except Exception:
mauromalara marked this conversation as resolved.
Show resolved Hide resolved
service = 'N/A'
mauromalara marked this conversation as resolved.
Show resolved Hide resolved

return service


_data_path = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'data')
Expand Down
6 changes: 4 additions & 2 deletions deps/wazuh_testing/wazuh_testing/tools/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@ def get_version():
f = open('../../version.json')
data = json.load(f)
version = data['version']

return version


Expand Down Expand Up @@ -162,12 +163,13 @@ def get_host_name():
def validate_interval_format(interval):
"""Validate that the interval passed has the format in which the last digit is a letter from those passed and
the other characters are between 0-9"""
if interval=='':
if interval == '':
return False
if interval[-1] not in ['s','m', 'h','d','w','y'] or not isinstance(int(interval[0:-1]), numbers.Number):
if interval[-1] not in ['s', 'm', 'h', 'd', 'w', 'y'] or not isinstance(int(interval[0:-1]), numbers.Number):
return False
return True


def format_ipv6_long(ipv6_address):
"""Return the long form of the address representation in uppercase.

Expand Down
67 changes: 40 additions & 27 deletions tests/integration/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,36 +57,38 @@ def get_report_files():
def pytest_collection_modifyitems(session, config, items):
selected_tests = []
deselected_tests = []

for item in items:
supported_platforms = PLATFORMS.intersection(mark.name for mark in item.iter_markers())
plat = sys.platform

selected = True
if supported_platforms and plat not in supported_platforms:
selected = False

host_type = 'agent' if 'agent' in get_service() else 'server'
supported_types = HOST_TYPES.intersection(mark.name for mark in item.iter_markers())
if supported_types and host_type not in supported_types:
selected = False
# Consider only first mark
levels = [mark.kwargs['level'] for mark in item.iter_markers(name="tier")]
if levels and len(levels) > 0:
tiers = item.config.getoption("--tier")
if tiers is not None and levels[0] not in tiers:
selected = False
elif item.config.getoption("--tier-minimum") > levels[0]:
# Ignore platform deselection if avoid-platform-based-deselection is used
if not global_parameters.avoid_platform_based_deselection:
for item in items:
supported_platforms = PLATFORMS.intersection(mark.name for mark in item.iter_markers())
plat = sys.platform
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why plat and not platform?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not related to the development. Changes only are aimed to ignore the platform deselection in case of using the defined variable

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alright, I understand your point, but I'm actually referring to the name of the variable. You added it, so I was wondering if it's possible to change it to something more descriptive.


selected = True
if supported_platforms and plat not in supported_platforms:
selected = False
elif item.config.getoption("--tier-maximum") < levels[0]:

host_type = 'agent' if 'agent' in get_service() else 'server'

supported_types = HOST_TYPES.intersection(mark.name for mark in item.iter_markers())
if supported_types and host_type not in supported_types:
selected = False
if selected:
selected_tests.append(item)
else:
deselected_tests.append(item)
# Consider only first mark
levels = [mark.kwargs['level'] for mark in item.iter_markers(name="tier")]
if levels and len(levels) > 0:
tiers = item.config.getoption("--tier")
if tiers is not None and levels[0] not in tiers:
selected = False
elif item.config.getoption("--tier-minimum") > levels[0]:
selected = False
elif item.config.getoption("--tier-maximum") < levels[0]:
selected = False
if selected:
selected_tests.append(item)
else:
deselected_tests.append(item)

config.hook.pytest_deselected(items=deselected_tests)
items[:] = selected_tests
config.hook.pytest_deselected(items=deselected_tests)
items[:] = selected_tests


@pytest.fixture(scope='module')
Expand Down Expand Up @@ -253,6 +255,7 @@ def pytest_addoption(parser):
parser.addoption(
"--fim-database-memory",
action="store_true",
default=False,
help="run tests activating database memory in the syscheck configuration"
)
parser.addoption(
Expand Down Expand Up @@ -336,6 +339,13 @@ def pytest_addoption(parser):
help="pass webhook url required for integratord tests."
)

parser.addoption(
"--avoid-platform-based-deselection",
action="store_true",
default=False,
help="Avoid tests deselection based on current environment"
)


def pytest_configure(config):
# Register an additional marker
Expand Down Expand Up @@ -405,6 +415,9 @@ def pytest_configure(config):
if global_parameters.wpk_package_path:
global_parameters.wpk_package_path = global_parameters.wpk_package_path

# Set collect test mode
global_parameters.avoid_platform_based_deselection = config.getoption("--avoid-platform-based-deselection")


def pytest_html_results_table_header(cells):
cells.insert(4, html.th('Tier', class_='sortable tier', col='tier'))
Expand Down
mauromalara marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
import pytest
from time import sleep

from wazuh_testing.tools import WAZUH_PATH, LOG_FILE_PATH
from wazuh_testing.tools import WAZUH_PATH, LOG_FILE_PATH, WAZUH_LOCAL_INTERNAL_OPTIONS
from wazuh_testing.tools.authd_sim import AuthdSimulator
from wazuh_testing.tools.configuration import load_wazuh_configurations
from wazuh_testing.tools.file import truncate_file
Expand All @@ -72,8 +72,11 @@

# Marks
pytestmark = [pytest.mark.linux, pytest.mark.win32, pytest.mark.tier(level=0), pytest.mark.agent]

test_data_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'data')
configurations_path = os.path.join(test_data_path, 'wazuh_conf.yaml')
timeout = '5'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please explain to me why are you using this timeout?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did not choose the timeout; rather, I aimed to adhere to the current state of the tests as closely as possible during this development. Therefore, I utilized the already defined timeout of the test in this particular case. This timeout was defined hardcoded in the call for change_timeout.

def change_timeout(new_value):
    """Set agent.recv_timeout for agentd in local internal options file.

    The above option sets the maximum number of seconds to wait
    for server response from the TCP client socket.

    Args:
        new_value (int): Number of seconds (between 1 and 600).
    """
    new_timeout = 'agent.recv_timeout=' + new_value
    if platform.system() == 'win32' or platform.system() == 'Windows':
        local_int_conf_path = os.path.join(WAZUH_PATH, 'local_internal_options.conf')
    else:
        local_int_conf_path = os.path.join(WAZUH_PATH, 'etc', 'local_internal_options.conf')
    with open(local_int_conf_path, 'r') as local_file_read:
        lines = local_file_read.readlines()
        for line in lines:
            if line == new_timeout:
                return
    with open(local_int_conf_path, 'a') as local_file_write:
        local_file_write.write('\n' + new_timeout)


change_timeout('5')



params = [
# Different parameters on UDP
Expand Down Expand Up @@ -112,24 +115,27 @@ def teardown():
remoted_server.stop()


@pytest.fixture(scope="module")
def set_debug_mode():
"""Set debug2 for agentd in local internal options file."""

new_timeout = 'agent.recv_timeout=' + timeout

if platform.system() == 'win32' or platform.system() == 'Windows':
local_int_conf_path = os.path.join(WAZUH_PATH, 'local_internal_options.conf')
debug_line = 'windows.debug=2\n'
else:
local_int_conf_path = os.path.join(WAZUH_PATH, 'etc', 'local_internal_options.conf')
debug_line = 'agent.debug=2\n'
with open(local_int_conf_path) as local_file_read:
lines = local_file_read.readlines()
for line in lines:
if line == debug_line:
return
with open(local_int_conf_path, 'a') as local_file_write:
local_file_write.write('\n' + debug_line)

with open(WAZUH_LOCAL_INTERNAL_OPTIONS, 'r') as local_file_read:
backup_configuration = local_file_read.read()

set_debug_mode()
with open(WAZUH_LOCAL_INTERNAL_OPTIONS, 'w+') as local_file_read:
local_file_read.write(debug_line + new_timeout)

yield

with open(WAZUH_LOCAL_INTERNAL_OPTIONS, 'w+') as local_file_read:
local_file_read.write(backup_configuration)


# fixtures
Expand Down Expand Up @@ -257,32 +263,6 @@ def wait_unable_to_connect(line):
return None


def change_timeout(new_value):
"""Set agent.recv_timeout for agentd in local internal options file.

The above option sets the maximum number of seconds to wait
for server response from the TCP client socket.

Args:
new_value (int): Number of seconds (between 1 and 600).
"""
new_timeout = 'agent.recv_timeout=' + new_value
if platform.system() == 'win32' or platform.system() == 'Windows':
local_int_conf_path = os.path.join(WAZUH_PATH, 'local_internal_options.conf')
else:
local_int_conf_path = os.path.join(WAZUH_PATH, 'etc', 'local_internal_options.conf')
with open(local_int_conf_path, 'r') as local_file_read:
lines = local_file_read.readlines()
for line in lines:
if line == new_timeout:
return
with open(local_int_conf_path, 'a') as local_file_write:
local_file_write.write('\n' + new_timeout)


change_timeout('5')


def parse_time_from_log_line(log_line):
"""Create a datetime object from a date in a string.

Expand Down Expand Up @@ -310,7 +290,7 @@ def parse_time_from_log_line(log_line):
"""


def test_agentd_parametrized_reconnections(configure_authd_server, start_authd, stop_agent, set_keys,
def test_agentd_parametrized_reconnections(set_debug_mode, configure_authd_server, start_authd, stop_agent, set_keys,
configure_environment, get_configuration, teardown):
'''
description: Check how the agent behaves when there are delays between connection
Expand Down
14 changes: 4 additions & 10 deletions tests/integration/test_agentd/test_agentd_reconnection.py
mauromalara marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -86,18 +86,14 @@
{'PROTOCOL': 'udp'}
]

config_ids = ['tcp', 'udp']

configurations = load_wazuh_configurations(configurations_path, __name__, params=params, metadata=metadata)

log_monitor_paths = []

receiver_sockets_params = []

monitored_sockets_params = []

receiver_sockets, monitored_sockets, log_monitors = None, None, None # Set in the fixtures
config_ids = ['tcp', 'udp']
configurations = load_wazuh_configurations(configurations_path, __name__, params=params, metadata=metadata)

receiver_sockets, monitored_sockets, log_monitors = None, None, None # Set in the fixtures
authd_server = AuthdSimulator(params[0]['SERVER_ADDRESS'], key_path=SERVER_KEY_PATH, cert_path=SERVER_CERT_PATH)

global remoted_server
Expand All @@ -112,6 +108,7 @@ def teardown():
remoted_server.stop()


@pytest.fixture(scope="module", autouse=True)
def set_debug_mode():
"""Set debug2 for agentd in local internal options file."""
if platform.system() == 'win32' or platform.system() == 'Windows':
Expand All @@ -130,9 +127,6 @@ def set_debug_mode():
local_file_write.write('\n' + debug_line)


set_debug_mode()


# fixtures
@pytest.fixture(scope="module", params=configurations, ids=config_ids)
def get_configuration(request):
Expand Down
Empty file.
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
from wazuh_testing import global_parameters
import wazuh_testing.fim as fim
from wazuh_testing.tools.configuration import load_wazuh_configurations
from wazuh_testing.tools.utils import get_version


# Helper functions
Expand Down Expand Up @@ -62,7 +61,6 @@ def get_configuration(request):


# Test
@pytest.mark.skipif(get_version() != 'v4.2.3', reason="This test fails by wazuh/wazuh#6797, It was fixed on v4.2.3")
@pytest.mark.parametrize('key, subkey1, subkey2, arch', [(key, sub_key_1, sub_key_2, fim.KEY_WOW64_32KEY)])
def test_registry_duplicated_entry(key, subkey1, subkey2, arch, get_configuration, configure_environment,
file_monitoring, configure_local_internal_options_module, daemons_handler_module,
Expand Down
Empty file.
Empty file.
Empty file.
Loading
Loading