package org.elixir_lang.parser_definition; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.io.FileUtilRt; import com.intellij.openapi.vfs.CharsetToolkit; import org.elixir_lang.intellij_elixir.Quoter; import org.elixir_lang.sdk.ElixirSdkRelease; import org.jetbrains.annotations.NotNull; import java.io.File; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import static org.elixir_lang.test.ElixirVersion.elixirSdkRelease; public class ElixirLangElixirParsingTestCase extends ParsingTestCase { private enum Parse { ERROR("with local and remote error"), CORRECT("and quotes correctly"); /* * Fields */ private final String description; Parse(String description) { this.description = description; } public String toString() { return description; } } /* * Test Methods */ public void testEex() { assertParsed("lib/eex/lib/eex.ex", Parse.CORRECT); } public void testEexCompiler() { assertParsed("lib/eex/lib/eex/compiler.ex", Parse.CORRECT); } public void testEexEngine() { assertParsed("lib/eex/lib/eex/engine.ex", Parse.CORRECT); } public void testEexSmartEngine() { assertParsed("lib/eex/lib/eex/smart_engine.ex", Parse.CORRECT); } public void testEexTokenizer() { assertParsed("lib/eex/lib/eex/tokenizer.ex", Parse.CORRECT); } public void testAccess() { assertParsed("lib/elixir/lib/access.ex", Parse.CORRECT); } public void testAgent() { assertParsed("lib/elixir/lib/agent.ex", Parse.CORRECT); } public void testAgentServer() { assertParsed("lib/elixir/lib/agent/server.ex", Parse.CORRECT); } public void testApplication() { assertParsed("lib/elixir/lib/application.ex", Parse.CORRECT); } public void testAtom() { assertParsed("lib/elixir/lib/atom.ex", Parse.CORRECT); } public void testBase() { assertParsed("lib/elixir/lib/base.ex", Parse.CORRECT); } public void testBehaviour() { assertParsed("lib/elixir/lib/behaviour.ex", Parse.CORRECT); } public void testBitwise() { assertParsed("lib/elixir/lib/bitwise.ex", Parse.CORRECT); } public void testCode() { assertParsed("lib/elixir/lib/code.ex", Parse.CORRECT); } public void testCollectable() { assertParsed("lib/elixir/lib/collectable.ex", Parse.CORRECT); } public void testDict() { assertParsed("lib/elixir/lib/dict.ex", Parse.CORRECT); } public void testEnum() { assertParsed("lib/elixir/lib/enum.ex", Parse.CORRECT); } public void testException() { assertParsed("lib/elixir/lib/exception.ex", Parse.CORRECT); } public void testFile() { assertParsed("lib/elixir/lib/file.ex", Parse.CORRECT); } public void testFileStat() { assertParsed("lib/elixir/lib/file/stat.ex", Parse.CORRECT); } public void testFileStream() { assertParsed("lib/elixir/lib/file/stream.ex", Parse.CORRECT); } public void testFloat() { assertParsed("lib/elixir/lib/float.ex", Parse.CORRECT); } public void testGenEvent() { assertParsed("lib/elixir/lib/gen_event.ex", Parse.CORRECT); } public void testGenEventStream() { assertParsed("lib/elixir/lib/gen_event/stream.ex", Parse.CORRECT); } public void testGenServer() { assertParsed("lib/elixir/lib/gen_server.ex", Parse.CORRECT); } public void testHashDict() { assertParsed("lib/elixir/lib/hash_dict.ex", Parse.CORRECT); } public void testHashSet() { assertParsed("lib/elixir/lib/hash_set.ex", Parse.CORRECT); } public void testInspect() { assertParsed("lib/elixir/lib/inspect.ex", Parse.CORRECT); } public void testInspectAlgebra() { assertParsed("lib/elixir/lib/inspect/algebra.ex", Parse.CORRECT); } public void testInteger() { assertParsed("lib/elixir/lib/integer.ex", Parse.CORRECT); } public void testIo() { assertParsed("lib/elixir/lib/io.ex", Parse.CORRECT); } public void testIoAnsi() { assertParsed("lib/elixir/lib/io/ansi.ex", Parse.CORRECT); } public void testIoAnsiDocs() { assertParsed("lib/elixir/lib/io/ansi/docs.ex", Parse.CORRECT); } public void testIoStream() { assertParsed("lib/elixir/lib/io/stream.ex", Parse.CORRECT); } public void testKernel() { assertParsed("lib/elixir/lib/kernel.ex", Parse.CORRECT); } public void testKernelCli() { assertParsed("lib/elixir/lib/kernel/cli.ex", Parse.CORRECT); } public void testKernelErrorHandler() { assertParsed("lib/elixir/lib/kernel/error_handler.ex", Parse.CORRECT); } public void testKernelLexicalTracker() { assertParsed("lib/elixir/lib/kernel/lexical_tracker.ex", Parse.CORRECT); } public void testKernelParallelCompiler() { assertParsed("lib/elixir/lib/kernel/parallel_compiler.ex", Parse.CORRECT); } public void testKernelParallelRequire() { assertParsed("lib/elixir/lib/kernel/parallel_require.ex", Parse.CORRECT); } public void testKernelSpecialForms() { assertParsed("lib/elixir/lib/kernel/special_forms.ex", Parse.CORRECT); } public void testKernelTypespec() { assertParsed("lib/elixir/lib/kernel/typespec.ex", Parse.CORRECT); } public void testKeyword() { assertParsed("lib/elixir/lib/keyword.ex", Parse.CORRECT); } public void testList() { assertParsed("lib/elixir/lib/list.ex", Parse.CORRECT); } public void testListChars() { assertParsed("lib/elixir/lib/list/chars.ex", Parse.CORRECT); } public void testMacro() { assertParsed("lib/elixir/lib/macro.ex", Parse.CORRECT); } public void testMacroEnv() { assertParsed("lib/elixir/lib/macro/env.ex", Parse.CORRECT); } public void testMap() { assertParsed("lib/elixir/lib/map.ex", Parse.CORRECT); } public void testMapSet() { assertParsed("lib/elixir/lib/map_set.ex", Parse.CORRECT); } public void testModule() { assertParsed("lib/elixir/lib/module.ex", Parse.CORRECT); } public void testModuleLocalsTracker() { assertParsed("lib/elixir/lib/module/locals_tracker.ex", Parse.CORRECT); } public void testNode() { assertParsed("lib/elixir/lib/node.ex", Parse.CORRECT); } public void testOptionParser() { assertParsed("lib/elixir/lib/option_parser.ex", Parse.CORRECT); } public void testPath() { assertParsed("lib/elixir/lib/path.ex", Parse.CORRECT); } public void testPort() { assertParsed("lib/elixir/lib/port.ex", Parse.CORRECT); } public void testProcess() { assertParsed("lib/elixir/lib/process.ex", Parse.CORRECT); } public void testProtocol() { assertParsed("lib/elixir/lib/protocol.ex", Parse.CORRECT); } public void testRange() { assertParsed("lib/elixir/lib/range.ex", Parse.CORRECT); } public void testRecord() { assertParsed("lib/elixir/lib/record.ex", Parse.CORRECT); } public void testRecordExtractor() { assertParsed("lib/elixir/lib/record/extractor.ex", Parse.CORRECT); } public void testRegex() { assertParsed("lib/elixir/lib/regex.ex", Parse.CORRECT); } public void testSet() { assertParsed("lib/elixir/lib/set.ex", Parse.CORRECT); } public void testStream() { assertParsed("lib/elixir/lib/stream.ex", Parse.CORRECT); } public void testStreamReducers() { assertParsed("lib/elixir/lib/stream/reducers.ex", Parse.CORRECT); } public void testString() { assertParsed("lib/elixir/lib/string.ex", Parse.CORRECT); } public void testStringChars() { assertParsed("lib/elixir/lib/string/chars.ex", Parse.CORRECT); } public void testStringIo() { assertParsed("lib/elixir/lib/string_io.ex", Parse.CORRECT); } public void testSupervisor() { assertParsed("lib/elixir/lib/supervisor.ex", Parse.CORRECT); } public void testSupervisorDefault() { assertParsed("lib/elixir/lib/supervisor/default.ex", Parse.CORRECT); } public void testSupervisorSpec() { assertParsed("lib/elixir/lib/supervisor/spec.ex", Parse.CORRECT); } public void testSystem() { assertParsed("lib/elixir/lib/system.ex", Parse.CORRECT); } public void testTask() { assertParsed("lib/elixir/lib/task.ex", Parse.CORRECT); } public void testTaskSupervised() { assertParsed("lib/elixir/lib/task/supervised.ex", Parse.CORRECT); } public void testTaskSupervisor() { assertParsed("lib/elixir/lib/task/supervisor.ex", Parse.CORRECT); } public void testTuple() { assertParsed("lib/elixir/lib/tuple.ex", Parse.CORRECT); } public void testUri() { assertParsed("lib/elixir/lib/uri.ex", Parse.CORRECT); } public void testVersion() { assertParsed("lib/elixir/lib/version.ex", Parse.CORRECT); } public void testCompileSample() { assertParsed("lib/elixir/test/elixir/fixtures/compile_sample.ex", Parse.CORRECT); } public void testParallelCompilerBar() { assertParsed("lib/elixir/test/elixir/fixtures/parallel_compiler/bar.ex", Parse.CORRECT); } public void testParallelCompilerBat() { if (elixirSdkRelease().compareTo(ElixirSdkRelease.V_1_3) < 0) { assertParsed("lib/elixir/test/elixir/fixtures/parallel_compiler/bat.ex", Parse.ERROR); } else { assertTrue(elixirSdkRelease().compareTo(ElixirSdkRelease.V_1_3) >= 0); } } public void testParallelCompilerFoo() { assertParsed("lib/elixir/test/elixir/fixtures/parallel_compiler/foo.ex", Parse.CORRECT); } public void testParallelDeadlockBar() { assertParsed("lib/elixir/test/elixir/fixtures/parallel_deadlock/bar.ex", Parse.CORRECT); } public void testParallelDeadlockFoo() { assertParsed("lib/elixir/test/elixir/fixtures/parallel_deadlock/foo.ex", Parse.CORRECT); } public void testParallelStructBar() { assertParsed("lib/elixir/test/elixir/fixtures/parallel_struct/bar.ex", Parse.CORRECT); } public void testParallelStructFoo() { assertParsed("lib/elixir/test/elixir/fixtures/parallel_struct/foo.ex", Parse.CORRECT); } public void testWarningsSample() { assertParsed("lib/elixir/test/elixir/fixtures/warnings_sample.ex", Parse.CORRECT); } public void testUnicodeUnicode() { assertParsed("lib/elixir/unicode/unicode.ex", Parse.CORRECT); } public void testExUnit() { assertParsed("lib/ex_unit/lib/ex_unit.ex", Parse.CORRECT); } public void testExUnitAssertions() { assertParsed("lib/ex_unit/lib/ex_unit/assertions.ex", Parse.CORRECT); } public void testExUnitCallbacks() { assertParsed("lib/ex_unit/lib/ex_unit/callbacks.ex", Parse.CORRECT); } public void testExUnitCaptureIo() { assertParsed("lib/ex_unit/lib/ex_unit/capture_io.ex", Parse.CORRECT); } public void testExUnitCaptureLog() { assertParsed("lib/ex_unit/lib/ex_unit/capture_log.ex", Parse.CORRECT); } public void testExUnitCase() { assertParsed("lib/ex_unit/lib/ex_unit/case.ex", Parse.CORRECT); } public void testExUnitCaseTemplate() { assertParsed("lib/ex_unit/lib/ex_unit/case_template.ex", Parse.CORRECT); } public void testExUnitCliFormatter() { assertParsed("lib/ex_unit/lib/ex_unit/cli_formatter.ex", Parse.CORRECT); } public void testExUnitDocTest() { assertParsed("lib/ex_unit/lib/ex_unit/doc_test.ex", Parse.CORRECT); } public void testExUnitEventManager() { assertParsed("lib/ex_unit/lib/ex_unit/event_manager.ex", Parse.CORRECT); } public void testExUnitFilters() { assertParsed("lib/ex_unit/lib/ex_unit/filters.ex", Parse.CORRECT); } public void testExUnitFormatter() { assertParsed("lib/ex_unit/lib/ex_unit/formatter.ex", Parse.CORRECT); } public void testExUnitOnExitHandler() { assertParsed("lib/ex_unit/lib/ex_unit/on_exit_handler.ex", Parse.CORRECT); } public void testExUnitRunner() { assertParsed("lib/ex_unit/lib/ex_unit/runner.ex", Parse.CORRECT); } public void testExUnitRunnerStats() { assertParsed("lib/ex_unit/lib/ex_unit/runner_stats.ex", Parse.CORRECT); } public void testExUnitServer() { assertParsed("lib/ex_unit/lib/ex_unit/server.ex", Parse.CORRECT); } public void testIex() { assertParsed("lib/iex/lib/iex.ex", Parse.CORRECT); } public void testIexApp() { assertParsed("lib/iex/lib/iex/app.ex", Parse.CORRECT); } public void testIexAutocomplete() { assertParsed("lib/iex/lib/iex/autocomplete.ex", Parse.CORRECT); } public void testIexCli() { assertParsed("lib/iex/lib/iex/cli.ex", Parse.CORRECT); } public void testIexConfig() { assertParsed("lib/iex/lib/iex/config.ex", Parse.CORRECT); } public void testIexEvaluator() { assertParsed("lib/iex/lib/iex/evaluator.ex", Parse.CORRECT); } public void testIexHelpers() { assertParsed("lib/iex/lib/iex/helpers.ex", Parse.CORRECT); } public void testIexHistory() { assertParsed("lib/iex/lib/iex/history.ex", Parse.CORRECT); } public void testIexIntrospection() { assertParsed("lib/iex/lib/iex/introspection.ex", Parse.CORRECT); } public void testIexRemsh() { assertParsed("lib/iex/lib/iex/remsh.ex", Parse.CORRECT); } public void testIexServer() { assertParsed("lib/iex/lib/iex/server.ex", Parse.CORRECT); } public void testLogger() { assertParsed("lib/logger/lib/logger.ex", Parse.CORRECT); } public void testLoggerApp() { assertParsed("lib/logger/lib/logger/app.ex", Parse.CORRECT); } public void testLoggerBackendsConsole() { assertParsed("lib/logger/lib/logger/backends/console.ex", Parse.CORRECT); } public void testLoggerConfig() { assertParsed("lib/logger/lib/logger/config.ex", Parse.CORRECT); } public void testLoggerErrorHandler() { assertParsed("lib/logger/lib/logger/error_handler.ex", Parse.CORRECT); } public void testLoggerFormatter() { assertParsed("lib/logger/lib/logger/formatter.ex", Parse.CORRECT); } public void testLoggerTranslator() { assertParsed("lib/logger/lib/logger/translator.ex", Parse.CORRECT); } public void testLoggerUtils() { assertParsed("lib/logger/lib/logger/utils.ex", Parse.CORRECT); } public void testLoggerWatcher() { assertParsed("lib/logger/lib/logger/watcher.ex", Parse.CORRECT); } public void testMix() { assertParsed("lib/mix/lib/mix.ex", Parse.CORRECT); } public void testMixArchive() { if (elixirSdkRelease().compareTo(ElixirSdkRelease.V_1_3) < 0) { assertParsed("lib/mix/lib/mix/archive.ex", Parse.CORRECT); } else { assertTrue(elixirSdkRelease().compareTo(ElixirSdkRelease.V_1_3) >= 0); } } public void testMixCli() { assertParsed("lib/mix/lib/mix/cli.ex", Parse.CORRECT); } public void testMixCompilersElixir() { assertParsed("lib/mix/lib/mix/compilers/elixir.ex", Parse.CORRECT); } public void testMixCompilersErlang() { assertParsed("lib/mix/lib/mix/compilers/erlang.ex", Parse.CORRECT); } public void testMixConfig() { assertParsed("lib/mix/lib/mix/config.ex", Parse.CORRECT); } public void testMixConfigAgent() { assertParsed("lib/mix/lib/mix/config/agent.ex", Parse.CORRECT); } public void testMixDep() { assertParsed("lib/mix/lib/mix/dep.ex", Parse.CORRECT); } public void testMixDepConverger() { assertParsed("lib/mix/lib/mix/dep/converger.ex", Parse.CORRECT); } public void testMixDepFetcher() { assertParsed("lib/mix/lib/mix/dep/fetcher.ex", Parse.CORRECT); } public void testMixDepLoader() { assertParsed("lib/mix/lib/mix/dep/loader.ex", Parse.CORRECT); } public void testMixDepLock() { assertParsed("lib/mix/lib/mix/dep/lock.ex", Parse.CORRECT); } public void testMixDepUmbrella() { assertParsed("lib/mix/lib/mix/dep/umbrella.ex", Parse.CORRECT); } public void testMixExceptions() { assertParsed("lib/mix/lib/mix/exceptions.ex", Parse.CORRECT); } public void testMixGenerator() { assertParsed("lib/mix/lib/mix/generator.ex", Parse.CORRECT); } public void testMixHex() { assertParsed("lib/mix/lib/mix/hex.ex", Parse.CORRECT); } public void testMixLocal() { assertParsed("lib/mix/lib/mix/local.ex", Parse.CORRECT); } public void testMixProject() { assertParsed("lib/mix/lib/mix/project.ex", Parse.CORRECT); } public void testMixProjectStack() { assertParsed("lib/mix/lib/mix/project_stack.ex", Parse.CORRECT); } public void testMixRebar() { assertParsed("lib/mix/lib/mix/rebar.ex", Parse.CORRECT); } public void testMixPublicKey() { assertParsed("lib/mix/lib/mix/public_key.ex", Parse.CORRECT); } public void testMixRemoteConverger() { assertParsed("lib/mix/lib/mix/remote_converger.ex", Parse.CORRECT); } public void testMixScm() { assertParsed("lib/mix/lib/mix/scm.ex", Parse.CORRECT); } public void testMixScmGit() { assertParsed("lib/mix/lib/mix/scm/git.ex", Parse.CORRECT); } public void testMixScmPath() { assertParsed("lib/mix/lib/mix/scm/path.ex", Parse.CORRECT); } public void testMixShell() { assertParsed("lib/mix/lib/mix/shell.ex", Parse.CORRECT); } public void testMixShellIo() { assertParsed("lib/mix/lib/mix/shell/io.ex", Parse.CORRECT); } public void testMixShellProcess() { assertParsed("lib/mix/lib/mix/shell/process.ex", Parse.CORRECT); } public void testMixState() { assertParsed("lib/mix/lib/mix/state.ex", Parse.CORRECT); } public void testMixTask() { assertParsed("lib/mix/lib/mix/task.ex", Parse.CORRECT); } public void testMixTasksAppStart() { assertParsed("lib/mix/lib/mix/tasks/app.start.ex", Parse.CORRECT); } public void testMixTasksArchiveBuild() { assertParsed("lib/mix/lib/mix/tasks/archive.build.ex", Parse.CORRECT); } public void testMixTasksArchive() { assertParsed("lib/mix/lib/mix/tasks/archive.ex", Parse.CORRECT); } public void testMixTasksArchiveInstall() { assertParsed("lib/mix/lib/mix/tasks/archive.install.ex", Parse.CORRECT); } public void testMixTasksArchiveUninstall() { assertParsed("lib/mix/lib/mix/tasks/archive.uninstall.ex", Parse.CORRECT); } public void testMixTasksClean() { assertParsed("lib/mix/lib/mix/tasks/clean.ex", Parse.CORRECT); } public void testMixTasksCmd() { assertParsed("lib/mix/lib/mix/tasks/cmd.ex", Parse.CORRECT); } public void testMixTasksCompileAll() { assertParsed("lib/mix/lib/mix/tasks/compile.all.ex", Parse.CORRECT); } public void testMixTasksCompileApp() { assertParsed("lib/mix/lib/mix/tasks/compile.app.ex", Parse.CORRECT); } public void testMixTasksCompileElixir() { assertParsed("lib/mix/lib/mix/tasks/compile.elixir.ex", Parse.CORRECT); } public void testMixTasksCompileErlang() { assertParsed("lib/mix/lib/mix/tasks/compile.erlang.ex", Parse.CORRECT); } public void testMixTasksCompile() { assertParsed("lib/mix/lib/mix/tasks/compile.ex", Parse.CORRECT); } public void testMixTasksCompileLeex() { assertParsed("lib/mix/lib/mix/tasks/compile.leex.ex", Parse.CORRECT); } public void testMixTasksCompileProtocols() { assertParsed("lib/mix/lib/mix/tasks/compile.protocols.ex", Parse.CORRECT); } public void testMixTasksCompileYecc() { assertParsed("lib/mix/lib/mix/tasks/compile.yecc.ex", Parse.CORRECT); } public void testMixTasksDepsCheck() { if (elixirSdkRelease().compareTo(ElixirSdkRelease.V_1_3) < 0) { assertParsed("lib/mix/lib/mix/tasks/deps.check.ex", Parse.CORRECT); } else { assertTrue(elixirSdkRelease().compareTo(ElixirSdkRelease.V_1_3) >= 0); } } // TODO re-enable once travis-ci run elixir with https://github.com/elixir-lang/elixir/commit/3e52ed0fbbc09a156e6ea180baff3b89a8da183e so intellij_elixir matches intellij-elixir behavior /* public void testMixTasksDepsClean() { assertParsed("lib/mix/lib/mix/tasks/deps.clean.ex", Parse.CORRECT); } */ public void testMixTasksDepsCompile() { assertParsed("lib/mix/lib/mix/tasks/deps.compile.ex", Parse.CORRECT); } public void testMixTasksDeps() { assertParsed("lib/mix/lib/mix/tasks/deps.ex", Parse.CORRECT); } public void testMixTasksDepsGet() { assertParsed("lib/mix/lib/mix/tasks/deps.get.ex", Parse.CORRECT); } public void testMixTasksDepsLoadpaths() { assertParsed("lib/mix/lib/mix/tasks/deps.loadpaths.ex", Parse.CORRECT); } public void testMixTasksDepsUnlock() { assertParsed("lib/mix/lib/mix/tasks/deps.unlock.ex", Parse.CORRECT); } public void testMixTasksDepsUpdate() { assertParsed("lib/mix/lib/mix/tasks/deps.update.ex", Parse.CORRECT); } public void testMixTasksDo() { assertParsed("lib/mix/lib/mix/tasks/do.ex", Parse.CORRECT); } public void testMixTasksEscriptBuild() throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException { assertParsed("lib/mix/lib/mix/tasks/escript.build.ex", Parse.CORRECT); } public void testMixTasksHelp() { assertParsed("lib/mix/lib/mix/tasks/help.ex", Parse.CORRECT); } public void testMixTasksIex() { assertParsed("lib/mix/lib/mix/tasks/iex.ex", Parse.CORRECT); } public void testMixTasksLoadconfig() { assertParsed("lib/mix/lib/mix/tasks/loadconfig.ex", Parse.CORRECT); } public void testMixTasksLoadpaths() { assertParsed("lib/mix/lib/mix/tasks/loadpaths.ex", Parse.CORRECT); } public void testMixTasksLocal() throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException { assertParsed("lib/mix/lib/mix/tasks/local.ex", Parse.CORRECT); } public void testMixTasksLocalHex() { assertParsed("lib/mix/lib/mix/tasks/local.hex.ex", Parse.CORRECT); } public void testMixTasksLocalPublicKeys() { assertParsed("lib/mix/lib/mix/tasks/local.public_keys.ex", Parse.CORRECT); } public void testMixTasksLocalRebar() { assertParsed("lib/mix/lib/mix/tasks/local.rebar.ex", Parse.CORRECT); } public void testMixTasksNew() { assertParsed("lib/mix/lib/mix/tasks/new.ex", Parse.CORRECT); } public void testMixTasksProfileFprof() { assertParsed("lib/mix/lib/mix/tasks/profile.fprof.ex", Parse.CORRECT); } public void testMixTasksRun() { assertParsed("lib/mix/lib/mix/tasks/run.ex", Parse.CORRECT); } public void testMixTasksTest() { assertParsed("lib/mix/lib/mix/tasks/test.ex", Parse.CORRECT); } public void testMixTasksServer() { assertParsed("lib/mix/lib/mix/tasks_server.ex", Parse.CORRECT); } public void testMixUtils() { assertParsed("lib/mix/lib/mix/utils.ex", Parse.CORRECT); } public void testDepsStatusCustomRawRepoLibRawRepo() { assertParsed("lib/mix/test/fixtures/deps_status/custom/raw_repo/lib/raw_repo.ex", Parse.CORRECT); } public void testEscripttestLibEscripttest() { assertParsed("lib/mix/test/fixtures/escripttest/lib/escripttest.ex", Parse.CORRECT); } public void testNoMixfileLibA() { assertParsed("lib/mix/test/fixtures/no_mixfile/lib/a.ex", Parse.CORRECT); } public void testNoMixfileLibB() { assertParsed("lib/mix/test/fixtures/no_mixfile/lib/b.ex", Parse.CORRECT); } public void testNoMixfileLibC() { if (elixirSdkRelease().compareTo(ElixirSdkRelease.V_1_3) < 0) { assertParsed("lib/mix/test/fixtures/no_mixfile/lib/c.ex", Parse.CORRECT); } else { assertTrue(elixirSdkRelease().compareTo(ElixirSdkRelease.V_1_3) >= 0); } } public void testUmbrellaDepDepsUmbrellaAppsBarLibBar() { assertParsed("lib/mix/test/fixtures/umbrella_dep/deps/umbrella/apps/bar/lib/bar.ex", Parse.CORRECT); } public void testUmbrellaDepDepsUmbrellaAppsFooLibFoo() { assertParsed("lib/mix/test/fixtures/umbrella_dep/deps/umbrella/apps/foo/lib/foo.ex", Parse.CORRECT); } /* * Protected Instance Methods */ @Override @NotNull protected String getTestDataPath() { return System.getenv("ELIXIR_LANG_ELIXIR_PATH"); } @Override protected void setUp() throws Exception { super.setUp(); setProjectSdkFromEbinDirectory(); } /* * Private Instance Methods */ private void assertParsed(String relativePath, Parse parse) { File rootFile = new File(getTestDataPath()); File absoluteFile = new File(rootFile, relativePath); assertParsed(absoluteFile, parse); } private void assertParsed(File absoluteFile, Parse parse) { // inlines part of com.intellij.testFramework.ParsingTestCase#doTest(boolean) try { String text = FileUtil.loadFile(absoluteFile, CharsetToolkit.UTF8, true).trim(); String nameWithoutExtension = FileUtilRt.getNameWithoutExtension(absoluteFile.toString()); myFile = createPsiFile(nameWithoutExtension, text); ensureParsed(myFile); toParseTreeText(myFile, skipSpaces(), includeRanges()); } catch (IOException ioException) { throw new RuntimeException(ioException); } switch (parse) { case CORRECT: assertWithoutLocalError(); assertQuotedCorrectly(); break; case ERROR: assertWithLocalError(); Quoter.assertError(myFile); } } }