Автоматизация тестирования Xtext с несколькими скомпилированными файлами - PullRequest
0 голосов
/ 23 февраля 2020

Я создал небольшой языковой компилятор, используя Xtext. Компилятор генерирует 3 объектных файла (с различными расширениями и содержимым имен файлов) для каждого скомпилированного исходного файла:

class MyGenerator extends AbstractGenerator {

    override void doGenerate(Resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) {

        val Program prg = resource.allContents.filter(Program).next()
        val String code = prg.compile().toString()

        fsa.generateFile("out.001", code)

        fsa.generateFile("out.002", recompile1(code))

        fsa.generateFile("out.002", recompile2(code))
    }
...
}

Затем я написал модульные тесты для компилятора:

@ExtendWith(InjectionExtension)
@InjectWith(MyInjectorProvider)
class OptimizerTest {

    @Inject extension CompilationTestHelper

    @Test
    def void test1() {
        '''
            <My code here>          
        '''.assertCompilesTo(
        '''
            <Object code here>
        ''')
    }
}

Когда Я запускаю вышеупомянутый тест, у меня появляется следующая ошибка, предположительно, потому что код не может решить, какой из 3 сгенерированных файлов использовать в качестве входных данных.

org.junit.ComparisonFailure: expected:<<Object Code here>
> but was:<[MULTIPLE FILES WERE GENERATED

File 1 : ....

Есть ли способ каким-либо образом выбрать, какой из 3 сгенерированные файлы, которые будут использоваться в качестве входных данных для теста?

...