mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
55 lines
1.8 KiB
Kotlin
55 lines
1.8 KiB
Kotlin
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
|
package com.intellij.openapi.roots
|
|
|
|
import com.intellij.openapi.Disposable
|
|
import com.intellij.openapi.application.runWriteAction
|
|
import com.intellij.openapi.module.ModuleManager
|
|
import com.intellij.openapi.util.Disposer
|
|
import com.intellij.testFramework.HeavyPlatformTestCase
|
|
|
|
class ModuleExtensionRegistrationTest : HeavyPlatformTestCase() {
|
|
fun `test unregister module extension`() {
|
|
runWithRegisteredExtension {
|
|
assertNotNull(ModuleRootManager.getInstance(myModule).getModuleExtension(MockModuleExtension::class.java))
|
|
}
|
|
|
|
assertNull(ModuleRootManager.getInstance(myModule).getModuleExtension(MockModuleExtension::class.java))
|
|
}
|
|
|
|
private fun runWithRegisteredExtension(action: () -> Unit) {
|
|
val moduleExtensionDisposable = Disposer.newDisposable()
|
|
registerModuleExtension(moduleExtensionDisposable)
|
|
try {
|
|
action()
|
|
}
|
|
finally {
|
|
Disposer.dispose(moduleExtensionDisposable)
|
|
}
|
|
}
|
|
|
|
private fun registerModuleExtension(disposable: Disposable) {
|
|
val moduleTypeDisposable = Disposer.newDisposable()
|
|
Disposer.register(disposable, Disposable {
|
|
runWriteAction {
|
|
Disposer.dispose(moduleTypeDisposable)
|
|
}
|
|
})
|
|
for (module in ModuleManager.getInstance(myProject).modules) {
|
|
@Suppress("DEPRECATION")
|
|
ModuleRootManagerEx.MODULE_EXTENSION_NAME.getPoint(module).registerExtension(MockModuleExtension(), moduleTypeDisposable)
|
|
}
|
|
}
|
|
}
|
|
|
|
private class MockModuleExtension : ModuleExtension() {
|
|
override fun getModifiableModel(writable: Boolean): ModuleExtension {
|
|
return MockModuleExtension()
|
|
}
|
|
|
|
override fun commit() {
|
|
}
|
|
|
|
override fun isChanged(): Boolean {
|
|
return false
|
|
}
|
|
} |