/
githubmirror
/
atom
Обзор
Документация
Войти
/
githubmirror
/
atom
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
packages/git-diff/spec/git-diff-subfolder-spec.js
75 строк
2 KB
Ruby Allison Rose
chore: I forgot how touchy the linter settings were.
04 янв 2022, 05:14
04 янв 2022, 05:14
8b2e42e
Код
Авторство
О чём код?
const path = require('path'); const fs = require('fs-plus'); const temp = require('temp').track(); describe('GitDiff when targeting nested repository', () => { let editor, editorElement, projectPath, screenUpdates; beforeEach(() => { screenUpdates = 0; spyOn(window, 'requestAnimationFrame').andCallFake(fn => { fn(); screenUpdates++; }); spyOn(window, 'cancelAnimationFrame').andCallFake(i => null); projectPath = temp.mkdirSync('git-diff-spec-'); fs.copySync(path.join(__dirname, 'fixtures', 'working-dir'), projectPath); fs.moveSync( path.join(projectPath, 'git.git'), path.join(projectPath, '.git') ); // The nested repo doesn't need to be managed by the temp module because // it's a part of our test environment. const nestedPath = path.join(projectPath, 'nested-repository'); // Initialize the repository contents. fs.copySync(path.join(__dirname, 'fixtures', 'working-dir'), nestedPath); fs.moveSync( path.join(nestedPath, 'git.git'), path.join(nestedPath, '.git') ); atom.project.setPaths([projectPath]); jasmine.attachToDOM(atom.workspace.getElement()); waitsForPromise(async () => { await atom.workspace.open(path.join(nestedPath, 'sample.js')); await atom.packages.activatePackage('git-diff'); }); runs(() => { editor = atom.workspace.getActiveTextEditor(); editorElement = atom.views.getView(editor); }); }); afterEach(() => { temp.cleanup(); }); describe('When git-diff targets a file in a nested git-repository', () => { /*** * Non-hack regression prevention for nested repositories. If we know * that our project path contains two repositories, we can ensure that * git-diff is targeting the correct one by creating an artificial change * in the ancestor repository, which is percieved differently within the * child. In this case, creating a new file will not generate markers in * the ancestor repo, even if there are changes; but changes will be * marked within the child repo. So all we have to do is check if * markers exist and we know we're targeting the proper repository, * If no markers exist, we're targeting an ancestor repo. */ it('uses the innermost repository', () => { editor.insertText('a'); waitsFor(() => screenUpdates > 0); runs(() => { expect( editorElement.querySelectorAll('.git-line-modified').length ).toBe(1); }); }); }); });