View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.shared.utils;
20  
21  import java.util.Set;
22  
23  import org.junit.After;
24  import org.junit.Assert;
25  import org.junit.Before;
26  import org.junit.Test;
27  
28  import static org.hamcrest.CoreMatchers.*;
29  import static org.hamcrest.MatcherAssert.assertThat;
30  
31  /**
32   * Tests the 'Os' class which evaluates operation system specific settings.
33   *
34   * @author <a href="mailto:struberg@yahoo.de">Mark Struberg</a>
35   */
36  public class OsTest {
37      private String origOsName;
38      private String origOsArch;
39      private String origOsVersion;
40  
41      @Before
42      public void setUp() {
43          origOsName = System.getProperty("os.name");
44          origOsArch = System.getProperty("os.arch");
45          origOsVersion = System.getProperty("os.version");
46  
47          // and now set some special settings ;)
48          System.setProperty("os.name", "os/2");
49          System.setProperty("os.arch", "i386");
50          System.setProperty("os.version", "2.1.32");
51      }
52  
53      @After
54      public void tearDown() {
55          // set the original OS settings again
56          System.setProperty("os.name", origOsName);
57          System.setProperty("os.arch", origOsArch);
58          System.setProperty("os.version", origOsVersion);
59      }
60  
61      @Test
62      public void testConstructor() {
63          Os os = new Os();
64          os.eval();
65  
66          Assert.assertTrue(Os.isName(Os.FAMILY_OS2));
67  
68          Assert.assertFalse(Os.isName(Os.FAMILY_DOS));
69          Assert.assertFalse(Os.isName(Os.FAMILY_MAC));
70          Assert.assertFalse(Os.isName(Os.FAMILY_NETWARE));
71          Assert.assertFalse(Os.isName(Os.FAMILY_OPENVMS));
72          Assert.assertFalse(Os.isName(Os.FAMILY_OS400));
73          Assert.assertFalse(Os.isName(Os.FAMILY_TANDEM));
74          Assert.assertFalse(Os.isName(Os.FAMILY_UNIX));
75          Assert.assertFalse(Os.isName(Os.FAMILY_WIN9X));
76          Assert.assertFalse(Os.isName(Os.FAMILY_WINDOWS));
77          Assert.assertFalse(Os.isName(Os.FAMILY_ZOS));
78      }
79  
80      @Test
81      public void testFamilyNames() {
82          Assert.assertEquals(Os.FAMILY_DOS, "dos");
83          Assert.assertEquals(Os.FAMILY_MAC, "mac");
84          Assert.assertEquals(Os.FAMILY_NETWARE, "netware");
85          Assert.assertEquals(Os.FAMILY_OPENVMS, "openvms");
86          Assert.assertEquals(Os.FAMILY_OS2, "os/2");
87          Assert.assertEquals(Os.FAMILY_OS400, "os/400");
88          Assert.assertEquals(Os.FAMILY_TANDEM, "tandem");
89          Assert.assertEquals(Os.FAMILY_UNIX, "unix");
90          Assert.assertEquals(Os.FAMILY_WIN9X, "win9x");
91          Assert.assertEquals(Os.FAMILY_WINDOWS, "windows");
92          Assert.assertEquals(Os.FAMILY_ZOS, "z/os");
93      }
94  
95      @Test
96      public void testGetValidFamilies() {
97          Set<String> osFamilies = Os.getValidFamilies();
98  
99          Assert.assertTrue("OsFamilies Set size", osFamilies.size() >= 11);
100 
101         Assert.assertTrue(osFamilies.contains(Os.FAMILY_DOS));
102         Assert.assertTrue(osFamilies.contains(Os.FAMILY_MAC));
103         Assert.assertTrue(osFamilies.contains(Os.FAMILY_NETWARE));
104         Assert.assertTrue(osFamilies.contains(Os.FAMILY_OPENVMS));
105         Assert.assertTrue(osFamilies.contains(Os.FAMILY_OS2));
106         Assert.assertTrue(osFamilies.contains(Os.FAMILY_OS400));
107         Assert.assertTrue(osFamilies.contains(Os.FAMILY_TANDEM));
108         Assert.assertTrue(osFamilies.contains(Os.FAMILY_UNIX));
109         Assert.assertTrue(osFamilies.contains(Os.FAMILY_WIN9X));
110         Assert.assertTrue(osFamilies.contains(Os.FAMILY_WINDOWS));
111         Assert.assertTrue(osFamilies.contains(Os.FAMILY_ZOS));
112     }
113 
114     @Test
115     public void testIsArch() {
116         assertThat("Arch is i386", Os.isArch("i386"), is(true));
117 
118         assertThat("Os is not Mac", Os.isArch("x86_64"), is(false));
119     }
120 
121     @Test
122     public void testIsFamily() {
123         assertThat("Family is os/2", Os.isFamily(Os.FAMILY_OS2), is(true));
124 
125         assertThat("Family is not mac", Os.isFamily(Os.FAMILY_MAC), is(false));
126     }
127 
128     @Test
129     public void testIsName() {
130         assertThat("Name is os/2", Os.isName("os/2"), is(true));
131 
132         assertThat("Name is not Mac OS X", Os.isName("Mac OS X"), is(false));
133     }
134 
135     @Test
136     public void testIsValidFamily() {
137         assertThat("os/2 isValidFamily", Os.isValidFamily(Os.FAMILY_OS2), is(true));
138 
139         assertThat("iPone != isValidFamily", Os.isValidFamily("iPhone"), is(false));
140     }
141 
142     @Test
143     public void testIsVersion() {
144         assertThat("isVersion", Os.isVersion("2.1.32"), is(true));
145 
146         assertThat("isVersion", Os.isVersion("2.1"), is(false));
147 
148         assertThat("isVersion", Os.isVersion("4.5"), is(false));
149     }
150 }