Skip to content

Commit 7c56108

Browse files
author
Steve Ramage
committed
Checkpoint #290 - All tests passing
1 parent 591e38f commit 7c56108

File tree

6 files changed

+119
-15
lines changed

6 files changed

+119
-15
lines changed

src/main/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/SemanticDataRepository.kt

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -433,13 +433,17 @@ unit types. These options are documented in <a href="http://man7.org/linux/man-p
433433

434434
fun getValidatorMap() : Map<Validator, OptionValueInformation> = validatorMap
435435

436-
val sectionNamesFromValidators: Set<String>
437-
/**
438-
* Return the section names from the validators.
439-
*
440-
* @return set
441-
*/
442-
get() = Collections.unmodifiableSet(fileClassToSectionToKeyAndValidatorMap.keys)
436+
437+
/**
438+
* Return the section names from the validators.
439+
*
440+
* @return set
441+
*/
442+
fun getSectionNamesForSectionAndKey(filename: String): MutableSet<String> {
443+
val fileClass = getFileClassForFilename(filename)
444+
445+
return Collections.unmodifiableSet(fileClassToSectionToKeyAndValidatorMap.getOrDefault(fileClass.fileClass, emptyMap()).keys)
446+
}
443447

444448

445449
fun getValidatorForSectionAndKey(filename: String, sectionName: String, keyName: String) : Validator {

src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/documentation/UnitFileDocumentationProviderTest.kt

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package net.sjrx.intellij.plugins.systemdunitfiles.documentation
22

33
import com.intellij.lang.documentation.DocumentationProviderEx
4-
import com.intellij.psi.PsiElement
5-
import com.intellij.psi.impl.FakePsiElement
64
import junit.framework.TestCase
75
import net.sjrx.intellij.plugins.systemdunitfiles.AbstractUnitFileTest
86

@@ -215,8 +213,43 @@ class UnitFileDocumentationProviderTest : AbstractUnitFileTest() {
215213
val psiFile = setupFileInEditor("file.service", file)
216214

217215
// Exercise SUT
218-
val unknownSectionHeader = getAllSectionInFile(psiFile)[0]
219-
val doc = sut.generateDoc(unknownSectionHeader, unknownSectionHeader)
216+
val sectionHeader = getAllSectionInFile(psiFile)[0]
217+
val doc = sut.generateDoc(sectionHeader, sectionHeader)
218+
219+
// Verification
220+
TestCase.assertNotNull(doc)
221+
TestCase.assertTrue(doc!!.length > 1)
222+
}
223+
224+
fun testGenerateDocForKnownSectionReturnsSomeValidTextInNSpawnFile() {
225+
// Fixture Setup
226+
val file = """
227+
[Network]
228+
Private=true
229+
""".trimIndent()
230+
val psiFile = setupFileInEditor("file.nspawn", file)
231+
232+
// Exercise SUT
233+
val section = getAllSectionInFile(psiFile)[0]
234+
val doc = sut.generateDoc(section, section)
235+
236+
// Verification
237+
TestCase.assertNotNull(doc)
238+
TestCase.assertTrue(doc!!.length > 1)
239+
}
240+
241+
fun testGenerateDocKnownKeySeparatorReturnsSomeValidTextInNSpawnFile() {
242+
// Fixture Setup
243+
val file = """
244+
[Network]
245+
Private=true
246+
""".trimIndent()
247+
val psiFile = setupFileInEditor("file.nspawn", file)
248+
249+
// Exercise SUT
250+
251+
val documentationKey = getAllKeysInFile(psiFile)[0]
252+
val doc = sut.generateDoc(documentationKey, documentationKey)
220253

221254
// Verification
222255
TestCase.assertNotNull(doc)

src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/MissingRequiredKeyInspectionTest.kt

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@ class MissingRequiredKeyInspectionTest : AbstractUnitFileTest() {
2929
assertSize(2, highlights)
3030
}
3131

32-
fun testServiceHasNoWarningsARequiredOptionInUnitSectionPresent() {
32+
fun testServiceHasNoWarningsEnoughRequiredOptionsInUnitSectionArePresent() {
3333

3434
// Fixture Setup
3535
// language="unit file (systemd)"
3636
val file = """
3737
# SPDX-License-Identifier: LGPL-2.1-or-later
3838
[Unit]
3939
Description=Daughter Service
40-
SuccessAction=foo
40+
SuccessAction=reboot
4141
4242
[Service]
4343
Type=oneshot
@@ -358,4 +358,29 @@ class MissingRequiredKeyInspectionTest : AbstractUnitFileTest() {
358358
assertSize(0, highlights)
359359

360360
}
361+
362+
fun testNSpawnFileHasNoWarningsWhenEmpty() {
363+
364+
// Fixture Setup
365+
// language="unit file (systemd)"
366+
val file = """
367+
# SPDX-License-Identifier: LGPL-2.1-or-later
368+
[Files]
369+
370+
371+
[Network]
372+
373+
[Exec]
374+
""".trimIndent()
375+
376+
// Exercise SUT
377+
setupFileInEditor("file.nspawn", file)
378+
enableInspection(MissingRequiredKeyInspection::class.java)
379+
380+
val highlights = myFixture.doHighlighting()
381+
382+
// Verification
383+
assertSize(0, highlights)
384+
}
385+
361386
}

src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/inspections/UnknownKeyInSectionInspectionTest.kt

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -682,6 +682,44 @@ class UnknownKeyInSectionInspectionTest : AbstractUnitFileTest() {
682682
TestCase.assertEquals("BusName", highlightElement!!.text)
683683
}
684684

685+
fun testNSpawnFileTypeThrowsWarningWithKeyFromServiceFile() {
686+
// Fixture Setup
687+
val file = """
688+
[Exec]
689+
BusName=yes
690+
""".trimIndent()
691+
enableInspection(UnknownKeyInSectionInspection::class.java)
692+
setupFileInEditor("some.nspawn", file)
693+
694+
// Exercise SUT
695+
val highlights = myFixture.doHighlighting()
696+
697+
// Verification
698+
assertSize(1, highlights)
699+
val info = highlights[0]
700+
TestCase.assertEquals(UnknownKeyInSectionInspection.INSPECTION_TOOL_TIP_TEXT, info!!.description)
701+
TestCase.assertEquals(HighlightInfoType.WARNING, info.type)
702+
val highlightElement = myFixture.file.findElementAt(info.getStartOffset())
703+
TestCase.assertEquals("BusName", highlightElement!!.text)
704+
}
705+
706+
fun testNSpawnFileTypeHasNoWarningsWithKnownKey() {
707+
// Fixture Setup
708+
val file = """
709+
[Timer]
710+
RandomizedDelaySec=50
711+
""".trimIndent()
712+
enableInspection(UnknownKeyInSectionInspection::class.java)
713+
setupFileInEditor("some.timer", file)
714+
715+
// Exercise SUT
716+
val highlights = myFixture.doHighlighting()
717+
718+
// Verification
719+
assertEmpty(highlights)
720+
}
721+
722+
685723
fun testSomeNewKeysFromSystemdV240HasNoWarnings() {
686724
// Fixture Setup
687725
val file = """

src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/SemanticDataDocumentationCompletionTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class SemanticDataDocumentationCompletionTest : AbstractUnitFileTest() {
1919
val code: MutableSet<String> = TreeSet()
2020

2121
for (fileClass in FileClass.entries) {
22-
for (sectionName in sdr.sectionNamesFromValidators) {
22+
for (sectionName in sdr.getSectionNamesForFile(fileClass.fileClass)) {
2323
// TODO fix me
2424
for (keyName in sdr.getAllowedKeywordsInSectionFromValidators("file.service", sectionName)) {
2525
code.add("$sectionName.$keyName")

src/test/kotlin/net/sjrx/intellij/plugins/systemdunitfiles/semanticdata/optionvalues/OptionValueTest.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class OptionValueTest : AbstractUnitFileTest() {
1515
var totalMissingValidators = 0
1616
var totalFoundValidators = 0
1717
for (fileClass in FileClass.entries) {
18-
for (sectionName in SemanticDataRepository.instance.sectionNamesFromValidators) {
18+
for (sectionName in SemanticDataRepository.instance.getSectionNamesForFile(fileClass.fileClass)) {
1919
for (key in SemanticDataRepository.instance.getAllowedKeywordsInSectionFromValidators("file.service", sectionName)) {
2020

2121
// TODO fix file.service
@@ -40,5 +40,9 @@ class OptionValueTest : AbstractUnitFileTest() {
4040
assertEquals("Number of missing validators is too high at ${totalMissingValidators} vs. found ${totalFoundValidators}", sortedList, "")
4141
}
4242

43+
if (totalFoundValidators == 0) {
44+
fail("There are no found validators, something is wrong")
45+
}
46+
4347
}
4448
}

0 commit comments

Comments
 (0)