<commit_before># -*- coding: utf-8 -*-
"""
integration tests for mac_xattr
"""
from __future__ import absolute_import, print_function, unicode_literals

import os

from tests.support.case import ModuleCase
from tests.support.helpers import runs_on, skip_if_binaries_missing, slowTest
from tests.support.runtests import RUNTIME_VARS


@runs_on(kernel="Darwin")
@skip_if_binaries_missing("xattr")
class MacXattrModuleTest(ModuleCase):
    """
    Validate the mac_xattr module
    """

    @classmethod
    def setUpClass(cls):
        cls.test_file = os.path.join(RUNTIME_VARS.TMP, "xattr_test_file.txt")
        cls.no_file = os.path.join(RUNTIME_VARS.TMP, "xattr_no_file.txt")

    def setUp(self):
        """
        Create test file for testing extended attributes
        """
        self.run_function("file.touch", [self.test_file])

    def tearDown(self):
        """
        Clean up test file
        """
        if os.path.exists(self.test_file):
            os.remove(self.test_file)

    @slowTest
    def test_list_no_xattr(self):
        """
        Make sure there are no attributes
        """
        # Clear existing attributes
        self.assertTrue(self.run_function("xattr.clear", [self.test_file]))

        # Test no attributes
        self.assertEqual(self.run_function("xattr.list", [self.test_file]), {})

        # Test file not found
        self.assertEqual(
            self.run_function("xattr.list", [self.no_file]),
            "ERROR: File not found: {0}".format(self.no_file),
        )

    @slowTest
    def test_write(self):
        """
        Write an attribute
        """
        # Clear existing attributes
        self.assertTrue(self.run_function("xattr.clear", [self.test_file]))

        # Write some attributes
        self.assertTrue(
            self.run_function(
                "xattr.write", [self.test_file, "spongebob", "squarepants"]
            )
        )
        self.assertTrue(
            self.run_function("xattr.write", [self.test_file, "squidward", "plankton"])
        )
        self.assertTrue(
            self.run_function("xattr.write", [self.test_file, "crabby", "patty"])
        )

        # Test that they were actually added
        self.assertEqual(
            self.run_function("xattr.list", [self.test_file]),
            {"spongebob": "squarepants", "squidward": "plankton", "crabby": "patty"},
        )

        # Test file not found
        self.assertEqual(
            self.run_function("xattr.write", [self.no_file, "patrick", "jellyfish"]),
            "ERROR: File not found: {0}".format(self.no_file),
        )

    @slowTest
    def test_read(self):
        """
        Test xattr.read
        """
        # Clear existing attributes
        self.assertTrue(self.run_function("xattr.clear", [self.test_file]))

        # Write an attribute
        self.assertTrue(
            self.run_function(
                "xattr.write", [self.test_file, "spongebob", "squarepants"]
            )
        )

        # Read the attribute
        self.assertEqual(
            self.run_function("xattr.read", [self.test_file, "spongebob"]),
            "squarepants",
        )

        # Test file not found
        self.assertEqual(
            self.run_function("xattr.read", [self.no_file, "spongebob"]),
            "ERROR: File not found: {0}".format(self.no_file),
        )

        # Test attribute not found
        self.assertEqual(
            self.run_function("xattr.read", [self.test_file, "patrick"]),
            "ERROR: Attribute not found: patrick",
        )

    @slowTest
    def test_delete(self):
        """
        Test xattr.delete
        """
        # Clear existing attributes
        self.assertTrue(self.run_function("xattr.clear", [self.test_file]))

        # Write some attributes
        self.assertTrue(
            self.run_function(
                "xattr.write", [self.test_file, "spongebob", "squarepants"]
            )
        )
        self.assertTrue(
            self.run_function("xattr.write", [self.test_file, "squidward", "plankton"])
        )
        self.assertTrue(
            self.run_function("xattr.write", [self.test_file, "crabby", "patty"])
        )

        # Delete an attribute
        self.assertTrue(
            self.run_function("xattr.delete", [self.test_file, "squidward"])
        )

        # Make sure it was actually deleted
        self.assertEqual(
            self.run_function("xattr.list", [self.test_file]),
            {"spongebob": "squarepants", "crabby": "patty"},
        )

        # Test file not found
        self.assertEqual(
            self.run_function("xattr.delete", [self.no_file, "spongebob"]),
            "ERROR: File not found: {0}".format(self.no_file),
        )

        # Test attribute not found
        self.assertEqual(
            self.run_function("xattr.delete", [self.test_file, "patrick"]),
            "ERROR: Attribute not found: patrick",
        )

    @slowTest
    def test_clear(self):
        """
        Test xattr.clear
        """
        # Clear existing attributes
        self.assertTrue(self.run_function("xattr.clear", [self.test_file]))

        # Write some attributes
        self.assertTrue(
            self.run_function(
                "xattr.write", [self.test_file, "spongebob", "squarepants"]
            )
        )
        self.assertTrue(
            self.run_function("xattr.write", [self.test_file, "squidward", "plankton"])
        )
        self.assertTrue(
            self.run_function("xattr.write", [self.test_file, "crabby", "patty"])
        )

        # Test Clear
        self.assertTrue(self.run_function("xattr.clear", [self.test_file]))

        # Test file not found
        self.assertEqual(
            self.run_function("xattr.clear", [self.no_file]),
            "ERROR: File not found: {0}".format(self.no_file),
        )<commit_msg>Drop Py2 and six on tests/integration/modules/test_mac_xattr.py<commit_after>"""
integration tests for mac_xattr
"""

import os

from tests.support.case import ModuleCase
from tests.support.helpers import runs_on, skip_if_binaries_missing, slowTest
from tests.support.runtests import RUNTIME_VARS


@runs_on(kernel="Darwin")
@skip_if_binaries_missing("xattr")
class MacXattrModuleTest(ModuleCase):
    """
    Validate the mac_xattr module
    """

    @classmethod
    def setUpClass(cls):
        cls.test_file = os.path.join(RUNTIME_VARS.TMP, "xattr_test_file.txt")
        cls.no_file = os.path.join(RUNTIME_VARS.TMP, "xattr_no_file.txt")

    def setUp(self):
        """
        Create test file for testing extended attributes
        """
        self.run_function("file.touch", [self.test_file])

    def tearDown(self):
        """
        Clean up test file
        """
        if os.path.exists(self.test_file):
            os.remove(self.test_file)

    @slowTest
    def test_list_no_xattr(self):
        """
        Make sure there are no attributes
        """
        # Clear existing attributes
        self.assertTrue(self.run_function("xattr.clear", [self.test_file]))

        # Test no attributes
        self.assertEqual(self.run_function("xattr.list", [self.test_file]), {})

        # Test file not found
        self.assertEqual(
            self.run_function("xattr.list", [self.no_file]),
            "ERROR: File not found: {}".format(self.no_file),
        )

    @slowTest
    def test_write(self):
        """
        Write an attribute
        """
        # Clear existing attributes
        self.assertTrue(self.run_function("xattr.clear", [self.test_file]))

        # Write some attributes
        self.assertTrue(
            self.run_function(
                "xattr.write", [self.test_file, "spongebob", "squarepants"]
            )
        )
        self.assertTrue(
            self.run_function("xattr.write", [self.test_file, "squidward", "plankton"])
        )
        self.assertTrue(
            self.run_function("xattr.write", [self.test_file, "crabby", "patty"])
        )

        # Test that they were actually added
        self.assertEqual(
            self.run_function("xattr.list", [self.test_file]),
            {"spongebob": "squarepants", "squidward": "plankton", "crabby": "patty"},
        )

        # Test file not found
        self.assertEqual(
            self.run_function("xattr.write", [self.no_file, "patrick", "jellyfish"]),
            "ERROR: File not found: {}".format(self.no_file),
        )

    @slowTest
    def test_read(self):
        """
        Test xattr.read
        """
        # Clear existing attributes
        self.assertTrue(self.run_function("xattr.clear", [self.test_file]))

        # Write an attribute
        self.assertTrue(
            self.run_function(
                "xattr.write", [self.test_file, "spongebob", "squarepants"]
            )
        )

        # Read the attribute
        self.assertEqual(
            self.run_function("xattr.read", [self.test_file, "spongebob"]),
            "squarepants",
        )

        # Test file not found
        self.assertEqual(
            self.run_function("xattr.read", [self.no_file, "spongebob"]),
            "ERROR: File not found: {}".format(self.no_file),
        )

        # Test attribute not found
        self.assertEqual(
            self.run_function("xattr.read", [self.test_file, "patrick"]),
            "ERROR: Attribute not found: patrick",
        )

    @slowTest
    def test_delete(self):
        """
        Test xattr.delete
        """
        # Clear existing attributes
        self.assertTrue(self.run_function("xattr.clear", [self.test_file]))

        # Write some attributes
        self.assertTrue(
            self.run_function(
                "xattr.write", [self.test_file, "spongebob", "squarepants"]
            )
        )
        self.assertTrue(
            self.run_function("xattr.write", [self.test_file, "squidward", "plankton"])
        )
        self.assertTrue(
            self.run_function("xattr.write", [self.test_file, "crabby", "patty"])
        )

        # Delete an attribute
        self.assertTrue(
            self.run_function("xattr.delete", [self.test_file, "squidward"])
        )

        # Make sure it was actually deleted
        self.assertEqual(
            self.run_function("xattr.list", [self.test_file]),
            {"spongebob": "squarepants", "crabby": "patty"},
        )

        # Test file not found
        self.assertEqual(
            self.run_function("xattr.delete", [self.no_file, "spongebob"]),
            "ERROR: File not found: {}".format(self.no_file),
        )

        # Test attribute not found
        self.assertEqual(
            self.run_function("xattr.delete", [self.test_file, "patrick"]),
            "ERROR: Attribute not found: patrick",
        )

    @slowTest
    def test_clear(self):
        """
        Test xattr.clear
        """
        # Clear existing attributes
        self.assertTrue(self.run_function("xattr.clear", [self.test_file]))

        # Write some attributes
        self.assertTrue(
            self.run_function(
                "xattr.write", [self.test_file, "spongebob", "squarepants"]
            )
        )
        self.assertTrue(
            self.run_function("xattr.write", [self.test_file, "squidward", "plankton"])
        )
        self.assertTrue(
            self.run_function("xattr.write", [self.test_file, "crabby", "patty"])
        )

        # Test Clear
        self.assertTrue(self.run_function("xattr.clear", [self.test_file]))

        # Test file not found
        self.assertEqual(
            self.run_function("xattr.clear", [self.no_file]),
            "ERROR: File not found: {}".format(self.no_file),
        )
{'fraction_non_alphanumeric': 0.12756322624743677, 'fraction_numerical': 0.0005980861244019139, 'mean_word_length': 2.0641361256544504, 'pattern_counts': {'":': 10, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7239124', 'n_tokens_mistral': 3551, 'n_tokens_neox': 3475, 'n_words': 655}