1+ package com.coder.toolbox.store
2+
3+ import com.coder.toolbox.settings.Environment
4+ import com.coder.toolbox.util.pluginTestSettingsStore
5+ import com.jetbrains.toolbox.api.core.diagnostics.Logger
6+ import io.mockk.mockk
7+ import org.junit.jupiter.api.Assertions.assertEquals
8+ import kotlin.test.AfterTest
9+ import kotlin.test.BeforeTest
10+ import kotlin.test.Test
11+
12+ class CoderSettingsStoreTest {
13+ private var originalOsName: String? = null
14+ private var originalOsArch: String? = null
15+
16+ private lateinit var store: CoderSettingsStore
17+
18+ @BeforeTest
19+ fun setUp () {
20+ originalOsName = System .getProperty(" os.name" )
21+ originalOsArch = System .getProperty(" os.arch" )
22+
23+ store = CoderSettingsStore (
24+ pluginTestSettingsStore(),
25+ Environment (),
26+ mockk<Logger >(relaxed = true )
27+ )
28+ }
29+
30+ @AfterTest
31+ fun tearDown () {
32+ System .setProperty(" os.name" , originalOsName)
33+ System .setProperty(" os.arch" , originalOsArch)
34+ }
35+
36+ @Test
37+ fun `Default CLI and signature for Windows AMD64` () =
38+ assertBinaryAndSignature(" Windows 10" , " amd64" , " coder-windows-amd64.exe" , " coder-windows-amd64.asc" )
39+
40+ @Test
41+ fun `Default CLI and signature for Windows ARM64` () =
42+ assertBinaryAndSignature(" Windows 10" , " aarch64" , " coder-windows-arm64.exe" , " coder-windows-arm64.asc" )
43+
44+ @Test
45+ fun `Default CLI and signature for Windows ARMV7` () =
46+ assertBinaryAndSignature(" Windows 10" , " armv7l" , " coder-windows-armv7.exe" , " coder-windows-armv7.asc" )
47+
48+ @Test
49+ fun `Default CLI and signature for Linux AMD64` () =
50+ assertBinaryAndSignature(" Linux" , " x86_64" , " coder-linux-amd64" , " coder-linux-amd64.asc" )
51+
52+ @Test
53+ fun `Default CLI and signature for Linux ARM64` () =
54+ assertBinaryAndSignature(" Linux" , " aarch64" , " coder-linux-arm64" , " coder-linux-arm64.asc" )
55+
56+ @Test
57+ fun `Default CLI and signature for Linux ARMV7` () =
58+ assertBinaryAndSignature(" Linux" , " armv7l" , " coder-linux-armv7" , " coder-linux-armv7.asc" )
59+
60+ @Test
61+ fun `Default CLI and signature for Mac AMD64` () =
62+ assertBinaryAndSignature(" Mac OS X" , " x86_64" , " coder-darwin-amd64" , " coder-darwin-amd64.asc" )
63+
64+ @Test
65+ fun `Default CLI and signature for Mac ARM64` () =
66+ assertBinaryAndSignature(" Mac OS X" , " aarch64" , " coder-darwin-arm64" , " coder-darwin-arm64.asc" )
67+
68+ @Test
69+ fun `Default CLI and signature for Mac ARMV7` () =
70+ assertBinaryAndSignature(" Mac OS X" , " armv7l" , " coder-darwin-armv7" , " coder-darwin-armv7.asc" )
71+
72+ @Test
73+ fun `Default CLI and signature for unknown OS and Arch` () =
74+ assertBinaryAndSignature(null , null , " coder-windows-amd64.exe" , " coder-windows-amd64.asc" )
75+
76+ @Test
77+ fun `Default CLI and signature for unknown Arch fallback on Linux` () =
78+ assertBinaryAndSignature(" Linux" , " mips64" , " coder-linux-amd64" , " coder-linux-amd64.asc" )
79+
80+ private fun assertBinaryAndSignature (
81+ osName : String? ,
82+ arch : String? ,
83+ expectedBinary : String ,
84+ expectedSignature : String
85+ ) {
86+ if (osName == null ) System .clearProperty(" os.name" ) else System .setProperty(" os.name" , osName)
87+ if (arch == null ) System .clearProperty(" os.arch" ) else System .setProperty(" os.arch" , arch)
88+
89+ assertEquals(expectedBinary, store.defaultCliBinaryNameByOsAndArch)
90+ assertEquals(expectedSignature, store.defaultSignatureNameByOsAndArch)
91+ }
92+
93+ }
0 commit comments