clean_json_attrs_test.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #!/usr/bin/env python3
  2. import clean_json_attrs
  3. import json
  4. import os
  5. import shutil
  6. import tempfile
  7. import unittest
  8. class CleanJsonAttrs(unittest.TestCase):
  9. def setUp(self):
  10. self._start_dir = tempfile.mkdtemp(dir=os.path.dirname(__file__))
  11. self._kwargs = {
  12. 'file_pattern': 'package\.json',
  13. 'attr_pattern': '^_',
  14. 'start_dir': self._start_dir
  15. }
  16. def tearDown(self):
  17. assert self._start_dir
  18. shutil.rmtree(self._start_dir)
  19. def _read_temp_file(self, filename):
  20. with open(os.path.join(self._start_dir, filename)) as f:
  21. return json.loads(f.read())
  22. def _write_temp_file(self, filename, json_dict):
  23. with open(os.path.join(self._start_dir, filename), 'w') as f:
  24. f.write(json.dumps(json_dict))
  25. def testAttrPattern(self):
  26. self._write_temp_file('package.json', {
  27. 'delete_me': True,
  28. 'ignore_me': True,
  29. 'version': '2.3.4',
  30. })
  31. args = self._kwargs.copy()
  32. args['attr_pattern'] = '^delete'
  33. self.assertTrue(clean_json_attrs.Clean(**args))
  34. json_dict = self._read_temp_file('package.json')
  35. self.assertEqual(['ignore_me', 'version'], sorted(json_dict.keys()))
  36. def testFilePattern(self):
  37. self._write_temp_file('clean_me.json', {'_where': '/a/b/c'})
  38. self._write_temp_file('ignore_me.json', {'_args': ['/a/b/c']})
  39. args = self._kwargs.copy()
  40. args['file_pattern'] = '^clean_'
  41. self.assertTrue(clean_json_attrs.Clean(**args))
  42. self.assertListEqual(
  43. [], list(self._read_temp_file('clean_me.json').keys()))
  44. self.assertListEqual(
  45. ['_args'], list(self._read_temp_file('ignore_me.json').keys()))
  46. def testNestedKeys(self):
  47. self._write_temp_file('package.json', {
  48. '_args': ['/some/path/'],
  49. 'nested': {
  50. '_keys': [],
  51. 'also': {
  52. '_get': 'scanned',
  53. },
  54. },
  55. '_where': '/some/path',
  56. 'version': '2.0.0'
  57. })
  58. self.assertTrue(clean_json_attrs.Clean(**self._kwargs))
  59. json_dict = self._read_temp_file('package.json')
  60. self.assertListEqual(['nested', 'version'], sorted(json_dict.keys()))
  61. self.assertListEqual(['also'], list(json_dict['nested'].keys()))
  62. self.assertListEqual([], list(json_dict['nested']['also'].keys()))
  63. def testNothingToRemove(self):
  64. self._write_temp_file('package.json', {'version': '2.0.0'})
  65. self.assertFalse(clean_json_attrs.Clean(**self._kwargs))
  66. self.assertListEqual(
  67. ['version'], list(self._read_temp_file('package.json').keys()))
  68. def testSimple(self):
  69. self._write_temp_file('package.json', {
  70. '_args': ['/some/path/'],
  71. 'version': '2.0.0',
  72. '_where': '/some/path'
  73. })
  74. self.assertTrue(clean_json_attrs.Clean(**self._kwargs))
  75. self.assertListEqual(
  76. ['version'], list(self._read_temp_file('package.json').keys()))
  77. if __name__ == '__main__':
  78. unittest.main()