// ĠCopyright Ġ 2 0 0 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġgit 4 idea . ignore Ċ Ċ import Ġcom . intellij . dv cs . ignore . V cs Repository Ignored Files Holder Base Ċ import Ġcom . intellij . openapi . application . invoke And Wait IfNeeded Ċ import Ġcom . intellij . openapi . application . run Write Action Ċ import Ġcom . intellij . openapi . module . Module Ċ import Ġcom . intellij . openapi . roots . Module Root Manager Ċ import Ġcom . intellij . openapi . util . registry . Registry Ċ import Ġcom . intellij . openapi . vcs . V cs Bundle Ċ import Ġcom . intellij . openapi . vcs . V cs Configuration Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġgit 4 idea . repo . Git Repository Files . GIT IGNORE Ċ import Ġgit 4 idea . test . Git Single Repo Test Ċ Ċ const Ġval ĠGEN Ġ= Ġ" gen " Ċ Ċ class ĠGit Ignored To Excluded Synchron izer Test Ġ: ĠGit Single Repo Test () Ġ{ ĊĊĠ Ġprivate Ġlateinit Ġvar Ġout : ĠVirtual File ĊĠ Ġprivate Ġlateinit Ġvar Ġexcluded : ĠVirtual File ĊĠ Ġprivate Ġlateinit Ġvar Ġgen : ĠVirtual File ĊĊĠ Ġoverride Ġfun ĠsetUp () Ġ{ ĊĠĠĠ Ġsuper . setUp () ĊĠĠĠ ĠRegistry . get (" vcs . pro pose . add . ignored . directories . to . exclude "). setValue ( true , Ġtest Root Disposable ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠsetUp Module () Ġ{ ĊĠĠĠ Ġrun Write Action Ġ{ ĊĠĠĠĠĠ Ġmy Module Ġ= Ġcreate Main Module () ĊĠĠĠĠĠ Ġval Ġmodule Dir Ġ= Ġget OrCreate Module Dir ( module ) ĊĠĠĠĠĠ Ġmy Module . add Content Root ( module Dir ) ĊĊĠĠĠĠĠ Ġ// create Ġfile Ġin Ġdirs , Ġotherwise Ġthe Ġdirectory Ġwill Ġbe Ġnot Ġtreated Ġas Ġignored Ġby ĠGit ĊĠĠĠĠĠ Ġout Ġ= Ġmodule Dir . find OrCreate Dir ( OUT ). apply Ġ{ Ġcreate File (" a . class ") Ġ} ĊĠĠĠĠĠ Ġexcluded Ġ= Ġmodule Dir . find OrCreate Dir ( EXCL UDE D ). apply Ġ{ Ġcreate File (" b . class ") Ġ} ĊĠĠĠĠĠ Ġgen Ġ= Ġmodule Dir . find OrCreate Dir ( GEN ). apply Ġ{ Ġcreate File (" a . java ") Ġ} ĊĠĠĠĠĠ Ġmy Module . add Source Folder ( gen ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġmark Ġignored Ġdirectories Ġas Ġexcluded Ġnotification `() Ġ{ ĊĠĠĠ Ġassert Empty ( module . exclude s ()) ĊĊĠĠĠ Ġcreate Git ignore And Wait (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/ $ EXCL UDE D / ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/ $ OUT / ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĊĠĠĠ Ġassert Notification By Content ( V cs Bundle . message (" ignore . to . exclude . notification . message ")) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġmark Ġignored Ġdirectories Ġas Ġexcluded `() Ġ{ ĊĠĠĠ ĠV cs Configuration . getInstance ( project ). MARK _ IG NO RED _ AS _ EXCL UDE D Ġ= Ġtrue ĊĊĠĠĠ Ġassert Empty ( module . exclude s ()) ĊĊĠĠĠ Ġcreate Git ignore And Wait (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/ $ EXCL UDE D / ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/ $ OUT / ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĊĠĠĠ Ġassert Excluded Dirs ( out , Ġexcluded ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġdo Ġnot Ġmark Ġignored Ġsource Ġroot Ġdirectory Ġas Ġexcluded `() Ġ{ ĊĠĠĠ ĠV cs Configuration . getInstance ( project ). MARK _ IG NO RED _ AS _ EXCL UDE D Ġ= Ġtrue ĊĊĠĠĠ Ġassert Source Dirs ( gen ) ĊĊĠĠĠ Ġcreate Git ignore And Wait (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/ $ EXCL UDE D / ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/ $ OUT / ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/ $ GEN / ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĊĠĠĠ Ġassert Excluded Dirs ( out , Ġexcluded ) ĊĠĠĠ Ġassert Source Dirs ( gen ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcreate Git ignore And Wait ( gitignore Content : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġignored Holder Wait er Ġ= Ġ( repo . ignored Files Holder Ġas ĠV cs Repository Ignored Files Holder Base < *> ). create Wait er () ĊĊĠĠĠ Ġfile ( GIT IGNORE ). create ( gitignore Content ) ĊĊĠĠĠ Ġignored Holder Wait er . waitFor () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġassert Notification By Content ( notification Content : ĠString ) Ġ= ĊĠĠĠ Ġv cs Notifier . notifications . find Ġ{ Ġit . content Ġ== Ġnotification Content Ġ} ĊĠĠĠ Ġ?: Ġfail (" Notification Ġ$ notification Content Ġnot Ġfound ") ĊĊĠ Ġprivate Ġfun Ġassert Excluded Dirs ( var arg Ġexpected Exclude s : ĠVirtual File ) Ġ{ ĊĠĠĠ Ġval Ġexclude s Ġ= Ġmodule . exclude s () ĊĠĠĠ Ġassert Contains Elements ( exclude s , Ġ* expected Exclude s ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġassert Source Dirs ( var arg Ġexpected Sources : ĠVirtual File ) Ġ{ ĊĠĠĠ Ġval Ġsource Roots Ġ= Ġmodule . source Roots () ĊĠĠĠ Ġassert Contains Elements ( source Roots , Ġ* expected Sources ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠModule . source Roots () Ġ= Ġinvoke And Wait IfNeeded Ġ{ ĠModule Root Manager . getInstance ( this ). source Roots . toList () Ġ} ĊĠ Ġprivate Ġfun ĠModule . exclude s () Ġ= Ġinvoke And Wait IfNeeded Ġ{ ĠModule Root Manager . getInstance ( this ). exclude Roots . toList () Ġ} Ċ }