annotate test/test_status.py @ 191:94fb3f3ab58b

When building a subset of tracks, make sure new packages are added to pbuilder even if the tracks that depend on them are not being built. To achieve this, the information which tracks are to be built is now stored as the do_build flag in the individual tracks and not by passing only a subset of the tracks ot the PackagerGroup. Otherwise the PackagerGroup would not determine the dependencies correctly.
author Bernhard Herzog <bh@intevation.de>
date Wed, 30 Jul 2008 19:23:10 +0000
parents b19bf5895a55
children b3f9cc956acc
rev   line source
187
b19bf5895a55 Use the FileTestMixin for the status tests, too.
Bernhard Herzog <bh@intevation.de>
parents: 58
diff changeset
1 # Copyright (C) 2007, 2008 by Intevation GmbH
12
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
2 # Authors:
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
3 # Bernhard Herzog <bh@intevation.de>
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
4 #
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
5 # This program is free software under the GPL (>=v2)
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
6 # Read the file COPYING coming with the software for details.
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
7
36
086c68ca51d2 rename Status to RevisionStatus
Bernhard Herzog <bh@intevation.de>
parents: 32
diff changeset
8 """Tests for the Status classes"""
12
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
9
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
10 import os
58
39b2deea8481 make the status files are world readable
Bernhard Herzog <bh@intevation.de>
parents: 43
diff changeset
11 import stat
12
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
12 import unittest
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
13 from datetime import datetime
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
14
40
c544903eeced Add real enums for status information
Bernhard Herzog <bh@intevation.de>
parents: 36
diff changeset
15 from treepkg.status import RevisionStatus, Status, EnumFieldDesc
12
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
16 from treepkg.util import ensure_directory, writefile
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
17
187
b19bf5895a55 Use the FileTestMixin for the status tests, too.
Bernhard Herzog <bh@intevation.de>
parents: 58
diff changeset
18 from filesupport import FileTestMixin
12
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
19
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
20
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
21
187
b19bf5895a55 Use the FileTestMixin for the status tests, too.
Bernhard Herzog <bh@intevation.de>
parents: 58
diff changeset
22 class TestStatus(unittest.TestCase, FileTestMixin):
12
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
23
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
24 def setUp(self):
187
b19bf5895a55 Use the FileTestMixin for the status tests, too.
Bernhard Herzog <bh@intevation.de>
parents: 58
diff changeset
25 self.filename = self.temp_file_name("status")
12
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
26 if os.path.exists(self.filename):
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
27 os.remove(self.filename)
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
28
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
29 def test_status(self):
36
086c68ca51d2 rename Status to RevisionStatus
Bernhard Herzog <bh@intevation.de>
parents: 32
diff changeset
30 status = RevisionStatus(self.filename)
43
3c5ab7a65384 adapt status test cases to the enum fields
Bernhard Herzog <bh@intevation.de>
parents: 40
diff changeset
31 status.error()
12
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
32
36
086c68ca51d2 rename Status to RevisionStatus
Bernhard Herzog <bh@intevation.de>
parents: 32
diff changeset
33 otherstatus = RevisionStatus(self.filename)
43
3c5ab7a65384 adapt status test cases to the enum fields
Bernhard Herzog <bh@intevation.de>
parents: 40
diff changeset
34 self.assertEquals(otherstatus.status.name, "error")
12
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
35
58
39b2deea8481 make the status files are world readable
Bernhard Herzog <bh@intevation.de>
parents: 43
diff changeset
36 def test_status_file_permissions(self):
39b2deea8481 make the status files are world readable
Bernhard Herzog <bh@intevation.de>
parents: 43
diff changeset
37 status = RevisionStatus(self.filename)
39b2deea8481 make the status files are world readable
Bernhard Herzog <bh@intevation.de>
parents: 43
diff changeset
38 status.error()
39b2deea8481 make the status files are world readable
Bernhard Herzog <bh@intevation.de>
parents: 43
diff changeset
39
39b2deea8481 make the status files are world readable
Bernhard Herzog <bh@intevation.de>
parents: 43
diff changeset
40 mode = os.stat(self.filename).st_mode
39b2deea8481 make the status files are world readable
Bernhard Herzog <bh@intevation.de>
parents: 43
diff changeset
41 self.assertEquals(stat.S_IMODE(mode) & 0444, 0444)
39b2deea8481 make the status files are world readable
Bernhard Herzog <bh@intevation.de>
parents: 43
diff changeset
42
12
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
43 def test_getting_unknown_fields(self):
36
086c68ca51d2 rename Status to RevisionStatus
Bernhard Herzog <bh@intevation.de>
parents: 32
diff changeset
44 status = RevisionStatus(self.filename)
12
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
45 self.assertRaises(AttributeError, getattr, status, "unknown_field")
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
46
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
47 def test_setting_unknown_fields(self):
36
086c68ca51d2 rename Status to RevisionStatus
Bernhard Herzog <bh@intevation.de>
parents: 32
diff changeset
48 status = RevisionStatus(self.filename)
12
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
49 self.assertRaises(AttributeError,
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
50 setattr, status, "unknown_field", "some value")
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
51
32
b1235080e694 add more tests for status defaults
Bernhard Herzog <bh@intevation.de>
parents: 12
diff changeset
52 def test_default_values(self):
36
086c68ca51d2 rename Status to RevisionStatus
Bernhard Herzog <bh@intevation.de>
parents: 32
diff changeset
53 status = RevisionStatus(self.filename)
43
3c5ab7a65384 adapt status test cases to the enum fields
Bernhard Herzog <bh@intevation.de>
parents: 40
diff changeset
54 self.assertEquals(status.status.name, "unknown")
12
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
55 self.assertEquals(status.start, None)
32
b1235080e694 add more tests for status defaults
Bernhard Herzog <bh@intevation.de>
parents: 12
diff changeset
56 self.assertEquals(status.stop, None)
12
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
57
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
58 def test_date(self):
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
59 timestamp = datetime(2007, 3, 9, 17, 32, 55)
36
086c68ca51d2 rename Status to RevisionStatus
Bernhard Herzog <bh@intevation.de>
parents: 32
diff changeset
60 status = RevisionStatus(self.filename)
12
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
61 status.start = timestamp
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
62
36
086c68ca51d2 rename Status to RevisionStatus
Bernhard Herzog <bh@intevation.de>
parents: 32
diff changeset
63 otherstatus = RevisionStatus(self.filename)
12
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
64 self.assertEquals(otherstatus.start, timestamp)
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
65
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
66 def test_magic(self):
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
67 writefile(self.filename,
f9f15ee39ed7 New Status class that handles several fields
Bernhard Herzog <bh@intevation.de>
parents:
diff changeset
68 "Some other magic\nstart: 2007-03-09 17:32:55\n")
36
086c68ca51d2 rename Status to RevisionStatus
Bernhard Herzog <bh@intevation.de>
parents: 32
diff changeset
69 self.assertRaises(ValueError, RevisionStatus, self.filename)
40
c544903eeced Add real enums for status information
Bernhard Herzog <bh@intevation.de>
parents: 36
diff changeset
70
c544903eeced Add real enums for status information
Bernhard Herzog <bh@intevation.de>
parents: 36
diff changeset
71 def test_status_enum(self):
c544903eeced Add real enums for status information
Bernhard Herzog <bh@intevation.de>
parents: 36
diff changeset
72
c544903eeced Add real enums for status information
Bernhard Herzog <bh@intevation.de>
parents: 36
diff changeset
73 class TestStatus(Status):
c544903eeced Add real enums for status information
Bernhard Herzog <bh@intevation.de>
parents: 36
diff changeset
74 status = EnumFieldDesc()
c544903eeced Add real enums for status information
Bernhard Herzog <bh@intevation.de>
parents: 36
diff changeset
75 status.add("not_running", "Process is not running",
c544903eeced Add real enums for status information
Bernhard Herzog <bh@intevation.de>
parents: 36
diff changeset
76 default=True)
c544903eeced Add real enums for status information
Bernhard Herzog <bh@intevation.de>
parents: 36
diff changeset
77 status.add("running", "Process is running")
c544903eeced Add real enums for status information
Bernhard Herzog <bh@intevation.de>
parents: 36
diff changeset
78 status.add("error", "An error occurred")
c544903eeced Add real enums for status information
Bernhard Herzog <bh@intevation.de>
parents: 36
diff changeset
79
c544903eeced Add real enums for status information
Bernhard Herzog <bh@intevation.de>
parents: 36
diff changeset
80 status = TestStatus(self.filename)
c544903eeced Add real enums for status information
Bernhard Herzog <bh@intevation.de>
parents: 36
diff changeset
81 status.running()
c544903eeced Add real enums for status information
Bernhard Herzog <bh@intevation.de>
parents: 36
diff changeset
82
c544903eeced Add real enums for status information
Bernhard Herzog <bh@intevation.de>
parents: 36
diff changeset
83 otherstatus = TestStatus(self.filename)
c544903eeced Add real enums for status information
Bernhard Herzog <bh@intevation.de>
parents: 36
diff changeset
84 self.assertEquals(otherstatus.status.name, "running")
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)