summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/test_git_config.py14
-rw-r--r--tests/test_git_superproject.py2
-rw-r--r--tests/test_manifest_xml.py16
-rw-r--r--tests/test_project.py8
-rw-r--r--tests/test_subcmds_sync.py55
5 files changed, 81 insertions, 14 deletions
diff --git a/tests/test_git_config.py b/tests/test_git_config.py
index a4fad9ef..0df38430 100644
--- a/tests/test_git_config.py
+++ b/tests/test_git_config.py
@@ -19,6 +19,7 @@ import tempfile
19import unittest 19import unittest
20 20
21import git_config 21import git_config
22import repo_trace
22 23
23 24
24def fixture(*paths): 25def fixture(*paths):
@@ -33,9 +34,16 @@ class GitConfigReadOnlyTests(unittest.TestCase):
33 def setUp(self): 34 def setUp(self):
34 """Create a GitConfig object using the test.gitconfig fixture. 35 """Create a GitConfig object using the test.gitconfig fixture.
35 """ 36 """
37
38 self.tempdirobj = tempfile.TemporaryDirectory(prefix='repo_tests')
39 repo_trace._TRACE_FILE = os.path.join(self.tempdirobj.name, 'TRACE_FILE_from_test')
40
36 config_fixture = fixture('test.gitconfig') 41 config_fixture = fixture('test.gitconfig')
37 self.config = git_config.GitConfig(config_fixture) 42 self.config = git_config.GitConfig(config_fixture)
38 43
44 def tearDown(self):
45 self.tempdirobj.cleanup()
46
39 def test_GetString_with_empty_config_values(self): 47 def test_GetString_with_empty_config_values(self):
40 """ 48 """
41 Test config entries with no value. 49 Test config entries with no value.
@@ -109,9 +117,15 @@ class GitConfigReadWriteTests(unittest.TestCase):
109 """Read/write tests of the GitConfig class.""" 117 """Read/write tests of the GitConfig class."""
110 118
111 def setUp(self): 119 def setUp(self):
120 self.tempdirobj = tempfile.TemporaryDirectory(prefix='repo_tests')
121 repo_trace._TRACE_FILE = os.path.join(self.tempdirobj.name, 'TRACE_FILE_from_test')
122
112 self.tmpfile = tempfile.NamedTemporaryFile() 123 self.tmpfile = tempfile.NamedTemporaryFile()
113 self.config = self.get_config() 124 self.config = self.get_config()
114 125
126 def tearDown(self):
127 self.tempdirobj.cleanup()
128
115 def get_config(self): 129 def get_config(self):
116 """Get a new GitConfig instance.""" 130 """Get a new GitConfig instance."""
117 return git_config.GitConfig(self.tmpfile.name) 131 return git_config.GitConfig(self.tmpfile.name)
diff --git a/tests/test_git_superproject.py b/tests/test_git_superproject.py
index 0ad9b01d..0bb77185 100644
--- a/tests/test_git_superproject.py
+++ b/tests/test_git_superproject.py
@@ -24,6 +24,7 @@ from unittest import mock
24import git_superproject 24import git_superproject
25import git_trace2_event_log 25import git_trace2_event_log
26import manifest_xml 26import manifest_xml
27import repo_trace
27from test_manifest_xml import sort_attributes 28from test_manifest_xml import sort_attributes
28 29
29 30
@@ -39,6 +40,7 @@ class SuperprojectTestCase(unittest.TestCase):
39 """Set up superproject every time.""" 40 """Set up superproject every time."""
40 self.tempdirobj = tempfile.TemporaryDirectory(prefix='repo_tests') 41 self.tempdirobj = tempfile.TemporaryDirectory(prefix='repo_tests')
41 self.tempdir = self.tempdirobj.name 42 self.tempdir = self.tempdirobj.name
43 repo_trace._TRACE_FILE = os.path.join(self.tempdir, 'TRACE_FILE_from_test')
42 self.repodir = os.path.join(self.tempdir, '.repo') 44 self.repodir = os.path.join(self.tempdir, '.repo')
43 self.manifest_file = os.path.join( 45 self.manifest_file = os.path.join(
44 self.repodir, manifest_xml.MANIFEST_FILE_NAME) 46 self.repodir, manifest_xml.MANIFEST_FILE_NAME)
diff --git a/tests/test_manifest_xml.py b/tests/test_manifest_xml.py
index e181b642..f92108e1 100644
--- a/tests/test_manifest_xml.py
+++ b/tests/test_manifest_xml.py
@@ -23,6 +23,7 @@ import xml.dom.minidom
23 23
24import error 24import error
25import manifest_xml 25import manifest_xml
26import repo_trace
26 27
27 28
28# Invalid paths that we don't want in the filesystem. 29# Invalid paths that we don't want in the filesystem.
@@ -93,6 +94,7 @@ class ManifestParseTestCase(unittest.TestCase):
93 def setUp(self): 94 def setUp(self):
94 self.tempdirobj = tempfile.TemporaryDirectory(prefix='repo_tests') 95 self.tempdirobj = tempfile.TemporaryDirectory(prefix='repo_tests')
95 self.tempdir = self.tempdirobj.name 96 self.tempdir = self.tempdirobj.name
97 repo_trace._TRACE_FILE = os.path.join(self.tempdir, 'TRACE_FILE_from_test')
96 self.repodir = os.path.join(self.tempdir, '.repo') 98 self.repodir = os.path.join(self.tempdir, '.repo')
97 self.manifest_dir = os.path.join(self.repodir, 'manifests') 99 self.manifest_dir = os.path.join(self.repodir, 'manifests')
98 self.manifest_file = os.path.join( 100 self.manifest_file = os.path.join(
@@ -262,10 +264,10 @@ class XmlManifestTests(ManifestParseTestCase):
262 '<project name="r" groups="keep"/>' 264 '<project name="r" groups="keep"/>'
263 '</manifest>') 265 '</manifest>')
264 self.assertEqual( 266 self.assertEqual(
265 manifest.ToXml(omit_local=True).toxml(), 267 sort_attributes(manifest.ToXml(omit_local=True).toxml()),
266 '<?xml version="1.0" ?><manifest>' 268 '<?xml version="1.0" ?><manifest>'
267 '<remote name="a" fetch=".."/><default remote="a" revision="r"/>' 269 '<remote fetch=".." name="a"/><default remote="a" revision="r"/>'
268 '<project name="q"/><project name="r" groups="keep"/></manifest>') 270 '<project name="q"/><project groups="keep" name="r"/></manifest>')
269 271
270 def test_toxml_with_local(self): 272 def test_toxml_with_local(self):
271 """Does include local_manifests projects when omit_local=False.""" 273 """Does include local_manifests projects when omit_local=False."""
@@ -277,11 +279,11 @@ class XmlManifestTests(ManifestParseTestCase):
277 '<project name="r" groups="keep"/>' 279 '<project name="r" groups="keep"/>'
278 '</manifest>') 280 '</manifest>')
279 self.assertEqual( 281 self.assertEqual(
280 manifest.ToXml(omit_local=False).toxml(), 282 sort_attributes(manifest.ToXml(omit_local=False).toxml()),
281 '<?xml version="1.0" ?><manifest>' 283 '<?xml version="1.0" ?><manifest>'
282 '<remote name="a" fetch=".."/><default remote="a" revision="r"/>' 284 '<remote fetch=".." name="a"/><default remote="a" revision="r"/>'
283 '<project name="p" groups="local::me"/>' 285 '<project groups="local::me" name="p"/>'
284 '<project name="q"/><project name="r" groups="keep"/></manifest>') 286 '<project name="q"/><project groups="keep" name="r"/></manifest>')
285 287
286 def test_repo_hooks(self): 288 def test_repo_hooks(self):
287 """Check repo-hooks settings.""" 289 """Check repo-hooks settings."""
diff --git a/tests/test_project.py b/tests/test_project.py
index acd44ccc..5c600be7 100644
--- a/tests/test_project.py
+++ b/tests/test_project.py
@@ -26,6 +26,7 @@ import git_command
26import git_config 26import git_config
27import platform_utils 27import platform_utils
28import project 28import project
29import repo_trace
29 30
30 31
31@contextlib.contextmanager 32@contextlib.contextmanager
@@ -64,6 +65,13 @@ class FakeProject(object):
64class ReviewableBranchTests(unittest.TestCase): 65class ReviewableBranchTests(unittest.TestCase):
65 """Check ReviewableBranch behavior.""" 66 """Check ReviewableBranch behavior."""
66 67
68 def setUp(self):
69 self.tempdirobj = tempfile.TemporaryDirectory(prefix='repo_tests')
70 repo_trace._TRACE_FILE = os.path.join(self.tempdirobj.name, 'TRACE_FILE_from_test')
71
72 def tearDown(self):
73 self.tempdirobj.cleanup()
74
67 def test_smoke(self): 75 def test_smoke(self):
68 """A quick run through everything.""" 76 """A quick run through everything."""
69 with TempGitTree() as tempdir: 77 with TempGitTree() as tempdir:
diff --git a/tests/test_subcmds_sync.py b/tests/test_subcmds_sync.py
index aad713f2..13f3f873 100644
--- a/tests/test_subcmds_sync.py
+++ b/tests/test_subcmds_sync.py
@@ -11,9 +11,9 @@
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and 12# See the License for the specific language governing permissions and
13# limitations under the License. 13# limitations under the License.
14
15"""Unittests for the subcmds/sync.py module.""" 14"""Unittests for the subcmds/sync.py module."""
16 15
16import unittest
17from unittest import mock 17from unittest import mock
18 18
19import pytest 19import pytest
@@ -21,17 +21,14 @@ import pytest
21from subcmds import sync 21from subcmds import sync
22 22
23 23
24@pytest.mark.parametrize( 24@pytest.mark.parametrize('use_superproject, cli_args, result', [
25 'use_superproject, cli_args, result',
26 [
27 (True, ['--current-branch'], True), 25 (True, ['--current-branch'], True),
28 (True, ['--no-current-branch'], True), 26 (True, ['--no-current-branch'], True),
29 (True, [], True), 27 (True, [], True),
30 (False, ['--current-branch'], True), 28 (False, ['--current-branch'], True),
31 (False, ['--no-current-branch'], False), 29 (False, ['--no-current-branch'], False),
32 (False, [], None), 30 (False, [], None),
33 ] 31])
34)
35def test_get_current_branch_only(use_superproject, cli_args, result): 32def test_get_current_branch_only(use_superproject, cli_args, result):
36 """Test Sync._GetCurrentBranchOnly logic. 33 """Test Sync._GetCurrentBranchOnly logic.
37 34
@@ -41,5 +38,49 @@ def test_get_current_branch_only(use_superproject, cli_args, result):
41 cmd = sync.Sync() 38 cmd = sync.Sync()
42 opts, _ = cmd.OptionParser.parse_args(cli_args) 39 opts, _ = cmd.OptionParser.parse_args(cli_args)
43 40
44 with mock.patch('git_superproject.UseSuperproject', return_value=use_superproject): 41 with mock.patch('git_superproject.UseSuperproject',
42 return_value=use_superproject):
45 assert cmd._GetCurrentBranchOnly(opts, cmd.manifest) == result 43 assert cmd._GetCurrentBranchOnly(opts, cmd.manifest) == result
44
45
46class GetPreciousObjectsState(unittest.TestCase):
47 """Tests for _GetPreciousObjectsState."""
48
49 def setUp(self):
50 """Common setup."""
51 self.cmd = sync.Sync()
52 self.project = p = mock.MagicMock(use_git_worktrees=False,
53 UseAlternates=False)
54 p.manifest.GetProjectsWithName.return_value = [p]
55
56 self.opt = mock.Mock(spec_set=['this_manifest_only'])
57 self.opt.this_manifest_only = False
58
59 def test_worktrees(self):
60 """False for worktrees."""
61 self.project.use_git_worktrees = True
62 self.assertFalse(self.cmd._GetPreciousObjectsState(self.project, self.opt))
63
64 def test_not_shared(self):
65 """Singleton project."""
66 self.assertFalse(self.cmd._GetPreciousObjectsState(self.project, self.opt))
67
68 def test_shared(self):
69 """Shared project."""
70 self.project.manifest.GetProjectsWithName.return_value = [
71 self.project, self.project
72 ]
73 self.assertTrue(self.cmd._GetPreciousObjectsState(self.project, self.opt))
74
75 def test_shared_with_alternates(self):
76 """Shared project, with alternates."""
77 self.project.manifest.GetProjectsWithName.return_value = [
78 self.project, self.project
79 ]
80 self.project.UseAlternates = True
81 self.assertFalse(self.cmd._GetPreciousObjectsState(self.project, self.opt))
82
83 def test_not_found(self):
84 """Project not found in manifest."""
85 self.project.manifest.GetProjectsWithName.return_value = []
86 self.assertFalse(self.cmd._GetPreciousObjectsState(self.project, self.opt))