import repository from arizona
[raven.git] / 2.0 / python / test / storkvalidatepackageTest.py
1 #! /usr/bin/env python
2 """
3 <Module>
4    storkvalidatepackageTest
5
6 <Author>
7    Mario Gonzalez.
8
9 <Started>
10    July 24, 2006
11
12 <Purpose>
13    Test module for storkvalidatepackage.py. See storkvalidatepackage.py for more details.
14 """
15
16 import os
17 import arizonaconfig
18 import sys
19 import arizonageneral
20 import arizonaunittest
21 import arizonareport
22 import storkvalidatepackage
23
24
25
26 class test(arizonaunittest.TestCase):
27
28     #---------------------------------------------------------
29     # main():
30     #---------------------------------------------------------
31     def test_main(self):
32         # Test without command line arguments
33         self.assertException(SystemExit, storkvalidatepackage.main)
34         # Get the error message sent
35         self.assertEquals("Usage: storkvalidatepackage.py [OPTION(s)] <packagename>", arizonareport.message)
36
37         filepath = None
38         packagename = None
39         uploaddirExists = False
40
41         prefix = os.environ.get("TESTPREFIX")
42         # Make the following tests independent of the testing path:
43         # Extract the path where "stork/..." starts and leave the part before this substring to a variable
44         # that will change so that the tests can be run in different machines:
45         subIdx = prefix.find("/stork")
46         path = prefix[:subIdx]
47         self.debug_print(path)
48                               
49
50         # SUBTEST STARTS ------------------------------------------------------------------------------------
51         # Check if the directory in the "uploaddir" variable already exists
52         filepath = arizonaconfig.get_option("uploaddir")
53         if os.path.isdir(filepath):
54             self.debug_print(" 'uploaddir' directory already exists: " + filepath)
55             uploaddirExists = True
56         else:
57             self.debug_print(" 'uploaddir' directory does NOT exist ")
58             uploaddirExists = False
59                                     
60         # SUBTEST ENDS ------------------------------------------------------------------------------------
61         
62
63
64         # SUBTEST STARTS ------------------------------------------------------------------------------------
65
66         # Test with a command line parameter: pass it an invalid package:
67         packagename = "invalid_package"
68         self.set_cmdline([packagename])
69         
70         if uploaddirExists == False:
71             # If the directory in the "uploaddir" variable does not exist yet in the system, the function it should
72             # send an error message and quit
73             self.assertException(SystemExit, storkvalidatepackage.main)
74             # Get the error message:
75             filepath = arizonaconfig.get_option( "uploaddir" )
76             filepath = filepath + '/' + packagename
77             self.assertEquals( "[storkvalidatepackage.py] " + filepath + " is not a valid file.", arizonareport.message )
78         else:
79             # If the directory in the "uploaddir" variable DOES exist, the function should find that the package name
80             # passed is invalid, and send the same message and quit:
81             self.assertException(SystemExit, storkvalidatepackage.main)
82             # Get the error message:
83             filepath = arizonaconfig.get_option( "uploaddir" )
84             filepath = filepath + '/' + packagename
85             self.assertEquals( "[storkvalidatepackage.py] " + filepath + " is not a valid file.", arizonareport.message )
86                                                                 
87         # SUBTEST ENDS ------------------------------------------------------------------------------------
88
89
90         # SUBTEST STARTS ------------------------------------------------------------------------------------
91         
92         # Test with rpm packages
93
94         # Pass invalid rpm package
95         _filepath = arizonaconfig.get_option( "uploaddir" )
96         self.debug_print(_filepath)
97         packagename = 'invalid.rpm'
98         f = file( _filepath + '/' + packagename, 'w' )
99         f.close()
100         self.set_cmdline([packagename])
101         # Should not be understood by the package managers
102         self.assertException(SystemExit, storkvalidatepackage.main)
103         self.assertEquals( _filepath + '/' +  packagename + " is NOT a valid package.", arizonareport.message)
104         # clean up and remove the files and dirs used for testing
105         os.remove(_filepath + '/' + packagename)
106
107
108         # Pass a valid rpm package
109         # Move an rpm package into the dir in "uploaddir" or else it will not work
110         os.popen( "cp " + path + '/' + "stork/testpack/stork-0.1.0-1.i386.rpm /tmp/" )
111         self.set_cmdline(["stork-0.1.0-1.i386.rpm"])
112         # SHould understand the package passed:
113         self.assertException(SystemExit, storkvalidatepackage.main)
114         self.assertEquals(_filepath + "/stork-0.1.0-1.i386.rpm" + " is a valid package.", arizonareport.message)
115         # Clean the dir:
116         os.remove( "/tmp/stork-0.1.0-1.i386.rpm" )
117         # SUBTEST ENDS ------------------------------------------------------------------------------------
118
119
120         # SUBTEST STARTS ------------------------------------------------------------------------------------
121         # TODO: Test with tar packages
122
123         # Pass invalid tar packages
124
125         # Pass valid tar packages
126         # SUBTEST ENDS ------------------------------------------------------------------------------------
127         
128         
129
130
131
132
133 if __name__=='__main__':
134     arizonaconfig.init_options()
135     arizonaunittest.main()