override fun createCourse()

in intellij-plugin/Edu-Scala/testSrc/com/jetbrains/edu/scala/slow/checker/ScalaGradleCheckErrorTest.kt [20:153]


  override fun createCourse(): Course {
    return course(language = ScalaLanguage.INSTANCE, environment = "Gradle") {
      lesson {
        eduTask("compilationError") {
          scalaTaskFile("src/Task.scala", """
            class Task {
              def foo(): Int
            }
          """)
          scalaTaskFile("test/TestSpec.scala", """
            import org.junit.runner.RunWith
            import org.scalatest.junit.JUnitRunner
            import org.scalatest.FunSuite
            
            @RunWith(classOf[JUnitRunner])
            class TestSpec extends FunSuite {
              test("Test") {
                assertResult(42) { new Task().foo() }
              }
            }
          """)
        }

        eduTask("testFail") {
          scalaTaskFile("src/Task.scala", """
            class Task {
              def foo(): Int = 42
            }
          """)
          scalaTaskFile("test/TestSpec.scala", """
            import org.junit.runner.RunWith
            import org.scalatest.junit.JUnitRunner
            import org.scalatest.FunSuite
            
            @RunWith(classOf[JUnitRunner])
            class TestSpec extends FunSuite {
              test("Test") {
                fail("Message")
              }
            }
          """)
        }

        eduTask("comparisonTestFail") {
          scalaTaskFile("src/Task.scala", """
            class Task {
              def foo(): Int = 43
            }
          """)
          scalaTaskFile("test/TestSpec.scala", """
            import org.junit.runner.RunWith
            import org.scalatest.junit.JUnitRunner
            import org.scalatest.FunSuite
            
            @RunWith(classOf[JUnitRunner])
            class TestSpec extends FunSuite {
              test("Test") {
                assertResult(42) { new Task().foo() }
              }
            }
          """)
        }
        eduTask("gradleCustomRunConfiguration") {
          scalaTaskFile("src/Task.scala", """
            class Task {
              def foo(): String = {
                System.getenv("EXAMPLE_ENV")
              }
            }
          """)
          scalaTaskFile("test/Test.scala", """
            import org.junit.runner.RunWith
            import org.scalatest.junit.JUnitRunner
            import org.scalatest.FunSuite
            
            @RunWith(classOf[JUnitRunner])
            class Test extends FunSuite {
              test("hello") {
                assertResult("Hello") { new Task().foo() }
              }
            }
        """)
          dir("runConfigurations") {
            xmlTaskFile("CustomGradleCheck.run.xml", $$"""
              <component name="ProjectRunConfigurationManager">
                <configuration name="CustomGradleCheck" type="GradleRunConfiguration" factoryName="Gradle" temporary="true">
                  <ExternalSystemSettings>
                    <option name="env">
                      <map>
                        <entry key="EXAMPLE_ENV" value="Hello!" />
                      </map>
                    </option>
                    <option name="executionName" />
                    <option name="externalProjectPath" value="$PROJECT_DIR$" />
                    <option name="externalSystemIdString" value="GRADLE" />
                    <option name="scriptParameters" value="" />
                    <option name="taskDescriptions">
                      <list />
                    </option>
                    <option name="taskNames">
                      <list>
                        <option value=":$TASK_GRADLE_PROJECT$:test" />
                        <option value="--tests" />
                        <option value="&quot;Test&quot;" />
                      </list>
                    </option>
                    <option name="vmOptions" value="" />
                  </ExternalSystemSettings>
                  <ExternalSystemDebugServerProcess>false</ExternalSystemDebugServerProcess>
                  <ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
                  <DebugAllEnabled>false</DebugAllEnabled>
                  <method v="2" />
                </configuration>
              </component>              
            """)
          }
        }


        outputTask("outputTaskFail") {
          scalaTaskFile("src/Main.scala", """
            object Main {
              def main(args: Array[String]): Unit = {
                println("OK")
              }
            }
          """)
          taskFile("test/output.txt") {
            withText("OK!\n")
          }
        }
      }
    }
  }