Pular para o conteúdo
livetest v0.1.0
Instalar

Profundidade de propagação

Esta é a configuração central. Para cada arquivo, você decide até onde a execução se propaga no grafo reverso, ou seja, através de quem importa o arquivo.

ValorSaltosSignificado
"self"0apenas os testes do arquivo alterado
"direct"1o arquivo + quem o importa diretamente (padrão)
"transitive"o arquivo + toda a cadeia de importadores
nnprofundidade numérica exata

Experimente

Escolha uma profundidade e veja, agora, o que aconteceria ao salvar login.ts. É a mesma busca em largura que roda no daemon.

    A regra que produz isso

    Repare que self ainda roda um teste. A propagação percorre arestas de import; o mapeamento de um arquivo-fonte para o seu arquivo de teste acontece depois, por convenção de nome. Colapsar as duas etapas faria self não rodar nada, porque o teste está a um salto do fonte.

    Configurando

    jsonc
    {
      "dependencyDepth": {
        "default": "direct",
        "overrides": {
          "src/util/**": "self",                    // utilitário estável: não propaga
          "src/components/Login.tsx": "transitive"  // crítico: propaga até o fim
        }
      }
    }

    Os overrides são avaliados na ordem de declaração e o último que casar vence, o que permite escrever uma regra ampla seguida de exceções:

    jsonc
    "overrides": {
      "src/**": "self",                         // regra geral
      "src/components/Login.tsx": "transitive"  // exceção
    }

    Escolhendo um valor

    Testes demais rodando (lento). Um arquivo importado por meio projeto, como um módulo de tipos ou um arquivo de constantes, arrasta a suíte inteira a cada save. Prenda em "self".

    Testes de menos rodando (regressões passam). Um arquivo cuja quebra só aparece nos consumidores, tipicamente autenticação, roteamento ou serialização, merece "transitive".

    Sem certeza. Deixe "direct". É o padrão porque pega o caso comum, o importador que quebrou, sem pagar pela cadeia inteira.

    Conferindo antes de assumir

    bash
    $ npx livetest why src/login.ts
    output
    arquivo:       src/login.ts
    runner:        js
    profundidade:  transitive, arquivo + cadeia completa de importadores  [override: src/login.ts]
    
    arquivos impactados (8):
      [0] src/login.ts
      [1] src/header.ts
      [2] src/layout.ts via src/header.ts
      ...

    Também dá para experimentar uma profundidade sem editar o arquivo de configuração:

    bash
    npx livetest run src/login.ts --depth transitive
    npx livetest why src/login.ts --depth self

    O grafo não é onisciente

    Import dinâmico com expressão calculada, injeção de dependência e reflexão não aparecem no grafo. O livetest why avisa sobre os especificadores que não conseguiu resolver. Nesses arquivos, considere uma profundidade maior ou rode a suíte inteira antes de concluir que está tudo certo.