IDEA-136072 (test fixed)
[idea/community.git] / platform / util / testSrc / com / intellij / openapi / application / PathManagerTest.java
1 /*
2  * Copyright 2000-2015 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.openapi.application;
17
18 import org.junit.After;
19 import org.junit.Before;
20 import org.junit.Test;
21
22 import java.io.File;
23 import java.util.Random;
24
25 import static org.junit.Assert.assertEquals;
26
27 public class PathManagerTest {
28   private static final String TEST_RPOP = "__ij_subst_test__";
29   private static final String TEST_VALUE = "__" + new Random().nextInt(1000) + "__";
30
31   @Before
32   public void setUp() throws Exception {
33     System.setProperty(TEST_RPOP, TEST_VALUE);
34   }
35
36   @After
37   public void tearDown() throws Exception {
38     System.clearProperty(TEST_RPOP);
39   }
40
41   @Test
42   public void testVarSubstitution() {
43     assertEquals("", PathManager.substituteVars(""));
44     assertEquals("abc", PathManager.substituteVars("abc"));
45     assertEquals("a$b$c", PathManager.substituteVars("a$b$c"));
46
47     assertEquals("/" + TEST_VALUE + "/" + TEST_VALUE + "/", PathManager.substituteVars("/${" + TEST_RPOP + "}/${" + TEST_RPOP + "}/"));
48
49     String home = System.clearProperty(PathManager.PROPERTY_HOME_PATH);
50     try {
51       assertEquals(PathManager.getHomePath() + "/build.txt", PathManager.substituteVars("${idea.home.path}/build.txt"));
52       assertEquals(PathManager.getHomePath() + "/build.txt", PathManager.substituteVars("${idea.home}/build.txt"));
53       assertEquals("/opt/idea/build.txt", PathManager.substituteVars("${idea.home.path}/build.txt", "/opt/idea"));
54     }
55     finally {
56       if (home != null) {
57         System.setProperty(PathManager.PROPERTY_HOME_PATH, home);
58       }
59     }
60
61     String config = System.clearProperty(PathManager.PROPERTY_CONFIG_PATH);
62     try {
63       assertEquals(PathManager.getConfigPath() + "/opts", PathManager.substituteVars("${idea.config.path}/opts"));
64     }
65     finally {
66       if (config != null) {
67         System.setProperty(PathManager.PROPERTY_CONFIG_PATH, config);
68       }
69     }
70
71     String system = System.clearProperty(PathManager.PROPERTY_SYSTEM_PATH);
72     try {
73       assertEquals(PathManager.getSystemPath() + "/logs2", PathManager.substituteVars("${idea.system.path}/logs2"));
74     }
75     finally {
76       if (system != null) {
77         System.setProperty(PathManager.PROPERTY_CONFIG_PATH, system);
78       }
79     }
80
81     assertEquals(PathManager.getBinPath() + File.separator + "../license", PathManager.substituteVars("../license"));
82
83     assertEquals("//", PathManager.substituteVars("/${unknown_property_ignore_the_error}/"));
84   }
85 }