Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(240)

Side by Side Diff: swarm_client/tests/file_path_test.py

Issue 69143004: Delete swarm_client. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # coding=utf-8
3 # Copyright 2013 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file.
6
7 import logging
8 import os
9 import tempfile
10 import unittest
11 import shutil
12 import sys
13
14 BASE_DIR = unicode(os.path.dirname(os.path.abspath(__file__)))
15 ROOT_DIR = os.path.dirname(BASE_DIR)
16 sys.path.insert(0, ROOT_DIR)
17
18 FILE_PATH = unicode(os.path.abspath(__file__))
19
20 from utils import file_path
21
22
23 class FilePath(unittest.TestCase):
24 def test_native_case_end_with_os_path_sep(self):
25 # Make sure the trailing os.path.sep is kept.
26 path = file_path.get_native_path_case(ROOT_DIR) + os.path.sep
27 self.assertEqual(file_path.get_native_path_case(path), path)
28
29 def test_native_case_end_with_dot_os_path_sep(self):
30 path = file_path.get_native_path_case(ROOT_DIR + os.path.sep)
31 self.assertEqual(
32 file_path.get_native_path_case(path + '.' + os.path.sep),
33 path)
34
35 def test_native_case_non_existing(self):
36 # Make sure it doesn't throw on non-existing files.
37 non_existing = 'trace_input_test_this_file_should_not_exist'
38 path = os.path.expanduser('~/' + non_existing)
39 self.assertFalse(os.path.exists(path))
40 path = file_path.get_native_path_case(ROOT_DIR) + os.path.sep
41 self.assertEqual(file_path.get_native_path_case(path), path)
42
43 if sys.platform in ('darwin', 'win32'):
44 def test_native_case_not_sensitive(self):
45 # The home directory is almost guaranteed to have mixed upper/lower case
46 # letters on both Windows and OSX.
47 # This test also ensures that the output is independent on the input
48 # string case.
49 path = os.path.expanduser(u'~')
50 self.assertTrue(os.path.isdir(path))
51 path = path.replace('/', os.path.sep)
52 if sys.platform == 'win32':
53 # Make sure the drive letter is upper case for consistency.
54 path = path[0].upper() + path[1:]
55 # This test assumes the variable is in the native path case on disk, this
56 # should be the case. Verify this assumption:
57 self.assertEqual(path, file_path.get_native_path_case(path))
58 self.assertEqual(
59 file_path.get_native_path_case(path.lower()),
60 file_path.get_native_path_case(path.upper()))
61
62 def test_native_case_not_sensitive_non_existent(self):
63 # This test also ensures that the output is independent on the input
64 # string case.
65 non_existing = os.path.join(
66 'trace_input_test_this_dir_should_not_exist', 'really not', '')
67 path = os.path.expanduser(os.path.join(u'~', non_existing))
68 path = path.replace('/', os.path.sep)
69 self.assertFalse(os.path.exists(path))
70 lower = file_path.get_native_path_case(path.lower())
71 upper = file_path.get_native_path_case(path.upper())
72 # Make sure non-existing element is not modified:
73 self.assertTrue(lower.endswith(non_existing.lower()))
74 self.assertTrue(upper.endswith(non_existing.upper()))
75 self.assertEqual(lower[:-len(non_existing)], upper[:-len(non_existing)])
76
77 if sys.platform != 'win32':
78 def test_symlink(self):
79 # This test will fail if the checkout is in a symlink.
80 actual = file_path.split_at_symlink(None, ROOT_DIR)
81 expected = (ROOT_DIR, None, None)
82 self.assertEqual(expected, actual)
83
84 actual = file_path.split_at_symlink(
85 None, os.path.join(BASE_DIR, 'trace_inputs'))
86 expected = (
87 os.path.join(BASE_DIR, 'trace_inputs'), None, None)
88 self.assertEqual(expected, actual)
89
90 actual = file_path.split_at_symlink(
91 None, os.path.join(BASE_DIR, 'trace_inputs', 'files2'))
92 expected = (
93 os.path.join(BASE_DIR, 'trace_inputs'), 'files2', '')
94 self.assertEqual(expected, actual)
95
96 actual = file_path.split_at_symlink(
97 ROOT_DIR, os.path.join('tests', 'trace_inputs', 'files2'))
98 expected = (
99 os.path.join('tests', 'trace_inputs'), 'files2', '')
100 self.assertEqual(expected, actual)
101 actual = file_path.split_at_symlink(
102 ROOT_DIR, os.path.join('tests', 'trace_inputs', 'files2', 'bar'))
103 expected = (
104 os.path.join('tests', 'trace_inputs'), 'files2', '/bar')
105 self.assertEqual(expected, actual)
106
107 def test_native_case_symlink_right_case(self):
108 actual = file_path.get_native_path_case(
109 os.path.join(BASE_DIR, 'trace_inputs'))
110 self.assertEqual('trace_inputs', os.path.basename(actual))
111
112 # Make sure the symlink is not resolved.
113 actual = file_path.get_native_path_case(
114 os.path.join(BASE_DIR, 'trace_inputs', 'files2'))
115 self.assertEqual('files2', os.path.basename(actual))
116
117 if sys.platform == 'darwin':
118 def test_native_case_symlink_wrong_case(self):
119 base_dir = file_path.get_native_path_case(BASE_DIR)
120 trace_inputs_dir = os.path.join(base_dir, 'trace_inputs')
121 actual = file_path.get_native_path_case(trace_inputs_dir)
122 self.assertEqual(trace_inputs_dir, actual)
123
124 # Make sure the symlink is not resolved.
125 data = os.path.join(trace_inputs_dir, 'Files2')
126 actual = file_path.get_native_path_case(data)
127 self.assertEqual(
128 os.path.join(trace_inputs_dir, 'files2'), actual)
129
130 data = os.path.join(trace_inputs_dir, 'Files2', '')
131 actual = file_path.get_native_path_case(data)
132 self.assertEqual(
133 os.path.join(trace_inputs_dir, 'files2', ''), actual)
134
135 data = os.path.join(trace_inputs_dir, 'Files2', 'Child1.py')
136 actual = file_path.get_native_path_case(data)
137 # TODO(maruel): Should be child1.py.
138 self.assertEqual(
139 os.path.join(trace_inputs_dir, 'files2', 'Child1.py'), actual)
140
141 if sys.platform == 'win32':
142 def test_native_case_alternate_datastream(self):
143 # Create the file manually, since tempfile doesn't support ADS.
144 tempdir = unicode(tempfile.mkdtemp(prefix='trace_inputs'))
145 try:
146 tempdir = file_path.get_native_path_case(tempdir)
147 basename = 'foo.txt'
148 filename = basename + ':Zone.Identifier'
149 filepath = os.path.join(tempdir, filename)
150 open(filepath, 'w').close()
151 self.assertEqual(filepath, file_path.get_native_path_case(filepath))
152 data_suffix = ':$DATA'
153 self.assertEqual(
154 filepath + data_suffix,
155 file_path.get_native_path_case(filepath + data_suffix))
156
157 open(filepath + '$DATA', 'w').close()
158 self.assertEqual(
159 filepath + data_suffix,
160 file_path.get_native_path_case(filepath + data_suffix))
161 # Ensure the ADS weren't created as separate file. You love NTFS, don't
162 # you?
163 self.assertEqual([basename], os.listdir(tempdir))
164 finally:
165 shutil.rmtree(tempdir)
166
167
168 if __name__ == '__main__':
169 logging.basicConfig(
170 level=logging.DEBUG if '-v' in sys.argv else logging.ERROR)
171 if '-v' in sys.argv:
172 unittest.TestCase.maxDiff = None
173 unittest.main()
OLDNEW
« no previous file with comments | « swarm_client/tests/directory_outside_build_root/test_file3.txt ('k') | swarm_client/tests/isolate/all_items_invalid.isolate » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698