Skip to content

Commit 2f585bb

Browse files
committed
test working on windows
1 parent a1138c1 commit 2f585bb

File tree

6 files changed

+86
-60
lines changed

6 files changed

+86
-60
lines changed

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ repositories {
2020
dependencies {
2121
implementation gradleApi()
2222
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
23+
testImplementation group: 'com.google.guava', name: 'guava', version: '28.0-jre'
2324
testCompile group: 'junit', name: 'junit', version: '4.12'
2425
testCompile group: 'org.mockito', name: 'mockito-core', version: '2.1.0'
2526
}

src/main/kotlin/components/Execution.kt

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,16 @@ private fun execute(runtime: Runtime, command: String): ExecutionResult {
1313
return try {
1414
when (getOs()) {
1515
Os.WINDOWS -> {
16+
val process = runtime.exec(
17+
arrayOf(
18+
"cmd",
19+
"/c",
20+
command.normalize()
21+
)
22+
)
1623
ExecutionResult(
1724
command.normalize(),
18-
runtime.exec(
19-
arrayOf(
20-
"cmd",
21-
"/c",
22-
command.normalize()
23-
)
24-
).outputString()
25+
process.outputString()
2526
)
2627
}
2728
Os.OSX -> {

src/main/kotlin/components/Tasks.kt

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,36 +15,41 @@ internal fun gradleWrapper(): String = when (getOs()) {
1515
internal fun pluginBuildTask(): String = "${when (getOs()) {
1616
Os.WINDOWS -> wrapperWindows
1717
Os.OSX -> wrapperOsX
18-
}} build -d --exclude-task test"
18+
}} build --exclude-task test"
1919

2020
internal val librarySetupTask = """
2121
${copyCommand()} src${File.separator}main${File.separator}kotlin${File.separator}components${File.separator}jni${File.separator}$osxLib out${File.separator}production${File.separator}classes${File.separator}$osxLib &&
2222
${copyCommand()} src${File.separator}main${File.separator}kotlin${File.separator}components${File.separator}jni${File.separator}$winLib out${File.separator}production${File.separator}classes${File.separator}$winLib
2323
""".trimIndent()
2424

25-
internal val prepareTask = """
26-
${resetCommand(testProjectName)}
25+
internal fun prepareTask(directory: String): String {
26+
return """
27+
cd $directory &&
2728
git clone https://github.com/StringCare/$testProjectName.git &&
2829
cd $testProjectName
2930
""".trimIndent()
31+
}
3032

31-
internal val buildTask = """
32-
cd $testProjectName &&
33-
${gradleWrapper()} build &&
34-
${gradleWrapper()} --stop
33+
internal fun buildTask(directory: String): String {
34+
return """
35+
cd $directory &&
36+
${gradleWrapper()} build
3537
""".trimIndent()
38+
}
3639

3740
// gradlew task needs export ANDROID_SDK_ROOT=/Users/efrainespada/Library/Android/sdk
3841
// echo "sdk.dir=${System.getenv("ANDROID_SDK_ROOT")}" > local.properties &&
39-
internal val signingReportTask = """
40-
$prepareTask &&
42+
internal fun signingReportTask(directory: String): String {
43+
return """
44+
${prepareTask(directory)} &&
4145
${signingReportTask()}
4246
""".trimIndent()
47+
}
4348

4449
internal fun resetCommand(directory: String): String {
4550
return when(getOs()) {
4651
Os.OSX -> "rm -rf $directory && "
47-
Os.WINDOWS -> "rmdir /q/s $directory && "
52+
Os.WINDOWS -> "rmdir /q/s $directory & "
4853
}
4954
}
5055

216 Bytes
Binary file not shown.

src/test/kotlin/SCTest.kt

Lines changed: 53 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
import com.google.common.io.Files
12
import components.*
23
import org.junit.Before
34
import org.junit.Test
5+
import utils.modifyForTest
46
import java.io.File
7+
import java.util.*
58

69
class SCTest {
710

@@ -21,48 +24,59 @@ class SCTest {
2124

2225
@Test
2326
fun `02 - (PLUGIN) gradlew signingReport`() {
24-
signingReportTask.runCommand { _, report ->
27+
val temp = Files.createTempDir()
28+
signingReportTask(temp.absolutePath).runCommand { _, report ->
2529
assert(report.contains("SHA1") && report.contains("BUILD SUCCESSFUL"))
2630
}
2731
}
2832

2933
@Test
3034
fun `03 - (PLUGIN) fingerprint extraction`() {
31-
signingReportTask.runCommand { _, report ->
35+
val temp = Files.createTempDir()
36+
signingReportTask(temp.absolutePath).runCommand { _, report ->
3237
assert(report.extractFingerprint().split(":").size == 20)
3338
}
3439
}
3540

3641
@Test
3742
fun `04 - (PLUGIN) locate string files for default configuration`() {
38-
prepareTask.runCommand { _, _ ->
39-
assert(locateFiles(testProjectName, defaultConfig()).isNotEmpty())
43+
val temp = Files.createTempDir()
44+
prepareTask(temp.absolutePath).runCommand { _, _ ->
45+
assert(locateFiles("${temp.absolutePath}${File.separator}$testProjectName", defaultConfig()).isNotEmpty())
4046
}
4147
}
4248

4349
@Test
4450
fun `05 - (PLUGIN) backup string files`() {
45-
prepareTask.runCommand { _, _ ->
46-
assert(backupFiles(testProjectName, defaultConfig()).isNotEmpty())
51+
val temp = Files.createTempDir()
52+
prepareTask(temp.absolutePath).runCommand { _, _ ->
53+
assert(backupFiles("${temp.absolutePath}${File.separator}$testProjectName", defaultConfig()).isNotEmpty())
4754
}
4855
}
4956

5057
@Test
5158
fun `06 - (PLUGIN) restore string files`() {
52-
prepareTask.runCommand { _, _ ->
53-
assert(restoreFiles(testProjectName, defaultMainModule).isEmpty())
54-
assert(backupFiles(testProjectName, defaultConfig().apply {
55-
stringFiles.add("strings_extra.xml")
56-
srcFolders.add("src${File.separator}other_source")
57-
}).isNotEmpty())
58-
assert(restoreFiles(testProjectName, defaultMainModule).isNotEmpty())
59+
val temp = Files.createTempDir()
60+
prepareTask(temp.absolutePath).runCommand { _, _ ->
61+
assert(
62+
restoreFiles("${temp.absolutePath}${File.separator}$testProjectName", defaultMainModule).isEmpty()
63+
)
64+
assert(
65+
backupFiles("${temp.absolutePath}${File.separator}$testProjectName", defaultConfig().apply {
66+
stringFiles.add("strings_extra.xml")
67+
srcFolders.add("src${File.separator}other_source")
68+
}).isNotEmpty())
69+
assert(
70+
restoreFiles("${temp.absolutePath}${File.separator}$testProjectName", defaultMainModule).isNotEmpty()
71+
)
5972
}
6073
}
6174

6275
@Test
6376
fun `07 - (PLUGIN) xml parsing`() {
64-
prepareTask.runCommand { _, _ ->
65-
val files = locateFiles(testProjectName, defaultConfig())
77+
val temp = Files.createTempDir()
78+
prepareTask(temp.absolutePath).runCommand { _, _ ->
79+
val files = locateFiles("${temp.absolutePath}${File.separator}$testProjectName", defaultConfig())
6680
files.forEach {
6781
assert(parseXML(it.file).isNotEmpty())
6882
}
@@ -71,15 +85,16 @@ class SCTest {
7185

7286
@Test
7387
fun `08 - (PLUGIN) obfuscate string values`() {
74-
signingReportTask.runCommand { _, report ->
88+
val temp = Files.createTempDir()
89+
signingReportTask(temp.absolutePath).runCommand { _, report ->
7590
val key = report.extractFingerprint()
7691
assert(key.isNotEmpty())
77-
val files = locateFiles(testProjectName, defaultConfig())
92+
val files = locateFiles("${temp.absolutePath}${File.separator}$testProjectName", defaultConfig())
7893
files.forEach { file ->
7994
val entities = parseXML(file.file)
8095
entities.forEach { entity ->
8196
val obfuscated = obfuscate(
82-
mainModuleTest,
97+
"${temp.absolutePath}${File.separator}$mainModuleTest",
8398
key,
8499
entity
85100
)
@@ -91,25 +106,26 @@ class SCTest {
91106

92107
@Test
93108
fun `09 - (PLUGIN) obfuscate and reveal string values`() {
94-
signingReportTask.runCommand { _, report ->
109+
val temp = Files.createTempDir()
110+
signingReportTask(temp.absolutePath).runCommand { _, report ->
95111
val key = report.extractFingerprint()
96112
assert(key.isNotEmpty())
97-
val files = locateFiles(testProjectName, defaultConfig().apply {
113+
val files = locateFiles("${temp.absolutePath}${File.separator}$testProjectName", defaultConfig().apply {
98114
stringFiles.add("strings_extra.xml")
99115
srcFolders.add("src${File.separator}other_source")
100116
})
101117
files.forEach { file ->
102118
val entities = parseXML(file.file)
103119
entities.forEach { entity ->
104120
val obfuscated = obfuscate(
105-
mainModuleTest,
121+
"${temp.absolutePath}${File.separator}$mainModuleTest",
106122
key,
107123
entity
108124
)
109125
assert(obfuscated.value != entity.value)
110126

111127
val original = reveal(
112-
mainModuleTest,
128+
"${temp.absolutePath}${File.separator}$mainModuleTest",
113129
key,
114130
obfuscated
115131
)
@@ -124,38 +140,38 @@ class SCTest {
124140
}
125141
}
126142

127-
/*
128143
@Test
129144
fun `10 - (PLUGIN) obfuscate xml`() {
130-
signingReportTask.runCommand { _, report ->
131-
val files = locateFiles(testProjectName, defaultConfig())
145+
val temp = Files.createTempDir()
146+
signingReportTask(temp.absolutePath).runCommand { _, report ->
147+
val files = locateFiles("${temp.absolutePath}${File.separator}$testProjectName", defaultConfig())
132148
files.forEach { file ->
133149
val entities = parseXML(file.file)
134150
assert(entities.isNotEmpty())
135-
modifyXML(file.file, mainModuleTest, report.extractFingerprint(), true)
151+
modifyXML(file.file, "${temp.absolutePath}${File.separator}$mainModuleTest", report.extractFingerprint(), true)
136152
}
137-
val filesObfuscated = locateFiles(testProjectName, defaultConfig())
153+
val filesObfuscated = locateFiles("${temp.absolutePath}${File.separator}$testProjectName", defaultConfig())
138154
filesObfuscated.forEach { file ->
139155
val entities = parseXML(file.file)
140156
assert(entities.isEmpty())
141157
}
142158
}
143159
}
144160

145-
146161
@Test
147162
fun `11 - (ANDROID COMPILATION) obfuscate xml and build (not real workflow)`() {
148-
signingReportTask.runCommand { _, report ->
149-
val files = locateFiles(testProjectName, defaultConfig().apply {
163+
val temp = Files.createTempDir()
164+
signingReportTask(temp.absolutePath).runCommand { _, report ->
165+
val files = locateFiles("${temp.absolutePath}${File.separator}$testProjectName", defaultConfig().apply {
150166
stringFiles.add("strings_extra.xml")
151167
srcFolders.add("src${File.separator}other_source")
152168
})
153169
files.forEach { file ->
154170
val entities = parseXML(file.file)
155171
assert(entities.isNotEmpty())
156-
modifyXML(file.file, mainModuleTest, report.extractFingerprint(), true)
172+
modifyXML(file.file, "${temp.absolutePath}${File.separator}$mainModuleTest", report.extractFingerprint(), true)
157173
}
158-
val filesObfuscated = locateFiles(testProjectName, defaultConfig().apply {
174+
val filesObfuscated = locateFiles("${temp.absolutePath}${File.separator}$testProjectName", defaultConfig().apply {
159175
stringFiles.add("strings_extra.xml")
160176
srcFolders.add("src${File.separator}other_source")
161177
})
@@ -166,27 +182,24 @@ class SCTest {
166182
}
167183
}
168184

169-
170-
171185
@Test
172186
fun `12 - (PLUGIN COMPILATION) plugin with no test`() {
173187
pluginBuildTask().runCommand { _, report ->
174188
assert(report.contains("BUILD SUCCESSFUL"))
175189
}
176190
}
177191

178-
179192
@Test
180193
fun `13 - (ANDROID COMPILATION) plugin running on Android`() {
181194
pluginBuildTask().runCommand { _, report ->
182195
assert(report.contains("BUILD SUCCESSFUL"))
183196
}
184-
prepareTask.runCommand { _, _ ->
185-
modifyForTest(testProjectName)
186-
buildTask.runCommand { _, androidReport ->
197+
val temp = Files.createTempDir()
198+
prepareTask(temp.absolutePath).runCommand { _, _ ->
199+
modifyForTest(temp.absolutePath, "$testProjectName")
200+
buildTask("${temp.absolutePath}${File.separator}$testProjectName").runCommand { _, androidReport ->
187201
assert(androidReport.contains("BUILD SUCCESSFUL"))
188202
}
189203
}
190-
}*/
191-
204+
}
192205
}

src/test/kotlin/utils/Helper.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
package utils
22

3+
import components.Os
34
import components.getContent
5+
import components.getOs
46
import java.io.File
57
import java.io.FileWriter
68

7-
fun modifyForTest(projectPath: String) {
8-
val file = File("$projectPath${File.separator}build.gradle")
9+
fun modifyForTest(directory: String, projectPath: String) {
10+
val current = File(".")
11+
val file = File("$directory${File.separator}$projectPath${File.separator}build.gradle")
912
val content = file.getContent().replace(
1013
"classpath \"com.stringcare:plugin:\$stringcare_version\"",
11-
"\nclasspath files(\"..${File.separator}build${File.separator}libs${File.separator}plugin-2.2.jar\")\n"
14+
when (getOs()) {
15+
Os.WINDOWS -> "\nclasspath files(\"${current.absolutePath.replace("\\", "\\\\")}${File.separator}${File.separator}build${File.separator}${File.separator}libs${File.separator}${File.separator}plugin-2.2.jar\")\n"
16+
Os.OSX -> "\nclasspath files(\"${current.absolutePath}${File.separator}build${File.separator}libs${File.separator}plugin-2.2.jar\")\n"
17+
}
1218
)
1319
FileWriter(file.absolutePath).use { it.write(content) }
1420

0 commit comments

Comments
 (0)