<commit_before># -*- coding: utf-8 -*-
'''
integration tests for mac_xattr
'''

# Import python libs
from __future__ import absolute_import
import os

# Import Salt Testing libs
from salttesting.helpers import ensure_in_syspath
ensure_in_syspath('../../')

# Import salt libs
import integration
import salt.utils

test_file = os.path.join(integration.TMP, 'xattr_test_file.txt')


class MacXattrModuleTest(integration.ModuleCase):
    '''
    Validate the mac_xattr module
    '''

    def setUp(self):
        '''
        Create test file for testing extended attributes
        '''
        if not salt.utils.is_darwin():
            self.skipTest('Test only available on Mac OS X')

        if not salt.utils.which('xattr'):
            self.skipTest('Test requires xattr binary')

        self.run_function('file.touch', [test_file])

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

    def test_list_none(self):
        '''
        Make sure there are no attributes
        '''
        self.run_function('xattr.clear', [test_file])
        self.assertEqual(self.run_function('xattr.list', [test_file]), {})

    def test_write(self):
        '''
        Write an attribute
        '''
        self.run_function('xattr.clear', [test_file])
        self.run_function('xattr.write', [test_file, 'spongebob', 'squarepants'])
        self.run_function('xattr.write', [test_file, 'squidward', 'plankton'])
        self.run_function('xattr.write', [test_file, 'crabby', 'patty'])
        self.assertEqual(
            self.run_function('xattr.list', [test_file]),
            {'spongebob': 'squarepants',
             'squidward': 'plankton',
             'crabby': 'patty'})

    def test_read(self):
        '''
        Test xattr.read
        '''
        self.run_function('xattr.clear', [test_file])
        self.run_function('xattr.write', [test_file, 'spongebob', 'squarepants'])
        self.assertEqual(
            self.run_function('xattr.read', [test_file, 'spongebob']),
            'squarepants')

    def test_delete(self):
        '''
        Test xattr.delete
        '''
        self.run_function('xattr.clear', [test_file])
        self.run_function('xattr.write', [test_file, 'spongebob', 'squarepants'])
        self.run_function('xattr.write', [test_file, 'squidward', 'plankton'])
        self.run_function('xattr.write', [test_file, 'crabby', 'patty'])
        self.assertEqual(
            self.run_function('xattr.delete', [test_file, 'squidward']),
            '')
        self.assertEqual(
            self.run_function('xattr.list', [test_file]),
            {'spongebob': 'squarepants', 'crabby': 'patty'})

    def test_clear(self):
        '''
        Test xattr.clear
        '''
        self.run_function('xattr.clear', [test_file])
        self.run_function('xattr.write', [test_file, 'spongebob', 'squarepants'])
        self.run_function('xattr.write', [test_file, 'squidward', 'plankton'])
        self.run_function('xattr.write', [test_file, 'crabby', 'patty'])
        self.assertEqual(self.run_function('xattr.clear', [test_file]), '')
        self.assertEqual(self.run_function('xattr.list', [test_file]), {})


if __name__ == '__main__':
    from integration import run_tests
    run_tests(MacXattrModuleTest)<commit_msg>Improve integration tests<commit_after># -*- coding: utf-8 -*-
'''
integration tests for mac_xattr
'''

# Import python libs
from __future__ import absolute_import
import os

# Import Salt Testing libs
from salttesting.helpers import ensure_in_syspath
ensure_in_syspath('../../')

# Import salt libs
import integration
import salt.utils

TEST_FILE = os.path.join(integration.TMP, 'xattr_test_file.txt')
NO_FILE = os.path.join(integration.TMP, 'xattr_no_file.txt')


class MacXattrModuleTest(integration.ModuleCase):
    '''
    Validate the mac_xattr module
    '''

    def setUp(self):
        '''
        Create test file for testing extended attributes
        '''
        if not salt.utils.is_darwin():
            self.skipTest('Test only available on Mac OS X')

        if not salt.utils.which('xattr'):
            self.skipTest('Test requires xattr binary')

        self.run_function('file.touch', [TEST_FILE])

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

    def test_list_no_xattr(self):
        '''
        Make sure there are no attributes
        '''
        # Clear existing attributes
        self.assertTrue(self.run_function('xattr.clear', [TEST_FILE]))

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

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

    def test_write(self):
        '''
        Write an attribute
        '''
        # Clear existing attributes
        self.assertTrue(self.run_function('xattr.clear', [TEST_FILE]))

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

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

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

    def test_read(self):
        '''
        Test xattr.read
        '''
        # Clear existing attributes
        self.assertTrue(self.run_function('xattr.clear', [TEST_FILE]))

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

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

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

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

    def test_delete(self):
        '''
        Test xattr.delete
        '''
        # Clear existing attributes
        self.assertTrue(self.run_function('xattr.clear', [TEST_FILE]))

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

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

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

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

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

    def test_clear(self):
        '''
        Test xattr.clear
        '''
        # Clear existing attributes
        self.assertTrue(self.run_function('xattr.clear', [TEST_FILE]))

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

        # Test Clear
        self.assertTrue(self.run_function('xattr.clear', [TEST_FILE]))

        # Test file not found
        self.assertEqual(self.run_function('xattr.clear', [NO_FILE]),
                         'ERROR: File not found: {0}'.format(NO_FILE))


if __name__ == '__main__':
    from integration import run_tests
    run_tests(MacXattrModuleTest)
{'fraction_non_alphanumeric': 0.13264972182829715, 'fraction_numerical': 0.0007636085960510527, 'mean_word_length': 2.231582657737046, 'pattern_counts': {'":': 0, '<': 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': '5093383', 'n_tokens_mistral': 2734, 'n_tokens_neox': 2670, 'n_words': 534}