3Ź?QSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr SSK J r SSK J r SSK J r SSK J r SSK Jr SSKJr \R "S S 9 S rS r"S S\R&5r\ "5"SS55r"SS\\R,5r"SS\\R,5r"SS\\R,5r"SS\\R,5r"SS\\R,5r"SS\\R,5r"SS\\R,5r"SS \\R,5r\R>"\R@S!:HS"5"S#S$\R,55r!"S%S&\R,5r""S'S(\R,5r#"S)S*\R,5r$\%S+:Xa\RL"5 gg),N)support) import_helper)is_apple_mobile) os_helper)requires_subprocess)threading_helper)mockT)modulezhttps://www.example.comtestc$\rSrSrSrSSjrSrg) PopenMockcgNrselfs ;/opt/alt/python313/lib64/python3.13/test/test_webbrowser.pypollPopenMock.pollNcgrr)rsecondss rwaitPopenMock.waitrrrN)__name__ __module__ __qualname____firstlineno__rr__static_attributes__rrrr r s rr c&\rSrSr\/0S.SjrSrg)CommandTestMixin )argskwc[5n[R"U[SU5 UR [ S9n[ Xq5"U0UD6 [RRSSnURUS[ 5 URS5 UH4n URX5 URURU 55 M6 URX5 g)a*Given a web browser instance method name along with arguments and keywords for same (which defaults to the single argument URL), creates a browser instance from the class pointed to by self.browser, calls the indicated instance method with the indicated arguments, and compares the resulting options and arguments passed to Popen by the browser instance against the 'options' and 'args' lists. Options are compared in a position independent fashion, and the arguments are compared in sequence order to whatever is left over after removing the options. Popen)namerN) r rpatch subprocess browser_classCMD_NAMEgetattrr) call_args assertEqualpopassertInindex) rmethr&r'options argumentspopenbrowser popen_argsoptions r_testCommandTestMixin._test#s  dJ7$$($3++%%//215  A1qF MM& - NN:++F3 4 /rrN)rrr r!URLr<r"rrrr$r$ s$'%B00rr$c2\rSrSr\R rSrSrg)GenericBrowserCommandTest;c0URS/[/S9 gNopenr6r7r<r>rs r test_open#GenericBrowserCommandTest.test_open? 6!U  $rrN) rrr r! webbrowserGenericBrowserr-rGr"rrrr@r@;s--M$rr@c2\rSrSr\R rSrSrg)BackgroundBrowserCommandTestEc0URS/[/S9 grCrFrs rrG&BackgroundBrowserCommandTest.test_openIrIrrN) rrr r!rJBackgroundBrowserr-rGr"rrrrMrMEs00M$rrMcJ\rSrSr\R rSrSrSr Sr Sr Sr g) ChromeCommandTestOc0URS/[/S9 grCrFrs rrGChromeCommandTest.test_openSrIrc@URS[SS9/[/S9 gNrDF autoraiser'r6r7r<dictr>rs rtest_open_with_autoraise_false0ChromeCommandTest.test_open_with_autoraise_falseX$ 6dU3!U  $rc2URSS/[/S9 gNopen_newz --new-windowrErFrs r test_open_newChromeCommandTest.test_open_new]  :*+!U  $rc0URS/[/S9 gN open_new_tabrErFrs rtest_open_new_tab#ChromeCommandTest.test_open_new_tabb >!U  $rc UR[R[R"S55 UR S/[ /[SS9S9 SSS5 g!,(df  g=f)Nz;Bad 'new' parameter to open(); expected 0, 1, or 2, got 999rDi)new)r6r7r')assertRaisesRegexrJErrorreescaper<r>r]rs rtest_open_bad_new_parameter-ChromeCommandTest.test_open_bad_new_parametergsc  # #J$4$4$&II/M%NO JJv!"%3-  )OOOs A A+rN) rrr r!rJChromer-rGr^rdrjrsr"rrrrSrSOs&%%M$ $ $ $ )rrScD\rSrSr\R rSrSrSr Sr Sr g)EdgeCommandTestqc0URS/[/S9 grCrFrs rrGEdgeCommandTest.test_openurIrc@URS[SS9/[/S9 grXr\rs rr^.EdgeCommandTest.test_open_with_autoraise_falsezr`rc2URSS/[/S9 grbrFrs rrdEdgeCommandTest.test_open_newrfrc0URS/[/S9 grhrFrs rrj!EdgeCommandTest.test_open_new_tabrlrrN) rrr r!rJEdger-rGr^rdrjr"rrrrwrwqsOOM$ $ $ $rrwcD\rSrSr\R rSrSrSr Sr Sr g)MozillaCommandTestc0URS/[/S9 grCrFrs rrGMozillaCommandTest.test_openrIrc@URS[SS9/[/S9 grXr\rs rr^1MozillaCommandTest.test_open_with_autoraise_falser`rc2URS/S[/S9 g)Nrcz -new-windowrErFrs rrd MozillaCommandTest.test_open_news  :+S1  3rc2URS/S[/S9 g)Nriz-new-tabrErFrs rrj$MozillaCommandTest.test_open_new_tabs  >(#.  0rrN) rrr r!rJMozillar-rGr^rdrjr"rrrrrs!&&M$ $ 3 0rrcD\rSrSr\R rSrSrSr Sr Sr g)EpiphanyCommandTestc2URSS/[/S9 g)NrD-nrErFrs rrGEpiphanyCommandTest.test_opens 6 6!U  $rcDURS[SS9SS/[/S9 g)NrDFrYz-noraiserr[r\rs rr^2EpiphanyCommandTest.test_open_with_autoraise_falses) 6dU3&-!U  $rc2URSS/[/S9 g)Nrc-wrErFrs rrd!EpiphanyCommandTest.test_open_news : 6!U  $rc2URSS/[/S9 g)NrirrErFrs rrj%EpiphanyCommandTest.test_open_new_tabs > 6!U  $rrN) rrr r!rJEpiphanyr-rGr^rdrjr"rrrrrs!''M$ $ $ $rrcD\rSrSr\R rSrSrSr Sr Sr g)OperaCommandTestc0URS/[/S9 grCrFrs rrGOperaCommandTest.test_openrIrc@URS[SS9/[/S9 grXr\rs rr^/OperaCommandTest.test_open_with_autoraise_falser`rc2URSS/[/S9 grbrFrs rrdOperaCommandTest.test_open_newrfrc0URS/[/S9 grhrFrs rrj"OperaCommandTest.test_open_new_tabrlrrN) rrr r!rJOperar-rGr^rdrjr"rrrrrs!$$M$ $ $ $rrcD\rSrSr\R rSrSrSr Sr Sr g)ELinksCommandTestc:URSS/S[S3/S9 gNrD-remoteopenURL()rErFrs rrGELinksCommandTest.test_opens( 6I; (Q/0  2rc:URSS/S[S3/S9 grrFrs rr^0ELinksCommandTest.test_open_with_autoraise_falses) 6%; (Q/0  2rc:URSS/S[S3/S9 g)Nrcrrz ,new-window)rErFrs rrdELinksCommandTest.test_open_news) :%; (\:;  =rc:URSS/S[S3/S9 g)Nrirrz ,new-tab)rErFrs rrj#ELinksCommandTest.test_open_new_tabs) >%; (Y78  :rrN) rrr r!rJElinksr-rGr^rdrjr"rrrrrs!%%M22 = :rrioszTest only applicable to iOSc\rSrSrSr\R "\"\SS5SLS5S5r Sr Sr S r S r S rS rS rg)IOSBrowserTestc2SRSU55$)N|c38# UHn[U5v M g7fr)str).0as r *IOSBrowserTest._obj_ref..s-1As)join)rr&s r_obj_refIOSBrowserTest._obj_refsxx----robjcNz#iOS Webbrowser tests require ctypesc[RUl[R"5[lS[RlS[RlUR[RRl g)Nc(SUR53$)NzC#decode)clss r&IOSBrowserTest.setUp..sb4Grc(SUR53$)NzS#r)sels rrrsCJJL>7Jr) rJr orig_objcr Mock objc_getClasssel_registerNamer objc_msgSend side_effectrs rsetUpIOSBrowserTest.setUpsJ $))+ (G %+J (37== $$0rc.UR[lgr)rrJrrs rtearDownIOSBrowserTest.tearDowns .. rc [[U5"[40UD6 /SQnSSUR"U6/nSS/n[RR R UR"U6SUR"U6SS5 g)N)z C#NSStringzS#stringWithCString:encoding:shttps://www.example.comzC#NSURLzS#URLWithString:zC#UIApplicationzS#sharedApplicationz$S#openURL:options:completionHandler:)r/rJr>rrrassert_called_with)rr5kwargsurl_string_args url_obj_argsshared_app_argss rr<IOSBrowserTest._tests  D!#00    MM? + -.CD $$77 MM? + 2 MM< (    rc&URS5 g)NrDr<rs rrGIOSBrowserTest.test_open#s 6rc$URSSS9 g)NrDFrYrrs rr^-IOSBrowserTest.test_open_with_autoraise_false&s 6U +rc&URS5 g)Nrcrrs rrdIOSBrowserTest.test_open_new)s :rc&URS5 g)Nrirrs rrj IOSBrowserTest.test_open_new_tab,s >"r)r)rrr r!runittestskipIfr/rJrrr<rGr^rdrjr"rrrrrsW. __WZ6$>:< A< A) >,#rrc\rSrSrSrSrSrSrSrSr \ R"\ RS:HS 5S 5rS rg ) BrowserRegistrationTesti0c[RUl/[l[RUl0[lgr)rJ _tryorder_saved_tryorder _browsers_saved_browsersrs rrBrowserRegistrationTest.setUp2s.)33! )33! rcXUR[lUR[lgr)rrJrrrrs rr BrowserRegistrationTest.tearDown9s#33 #33 rc~"SS5n/n0nUR[RU5 UR[RU5 [R"SU5 S/nUS/US'UR[RU5 UR[RU5 U"5nUb[R"SX%US9 O[R"SX%5 U(aSS/nOSS/nX%/US'UR[RU5 UR[RU5 g)Nc\rSrSrSrg)CBrowserRegistrationTest._check_registration..ExampleBrowseri>rNrrr r!r"rrrExampleBrowserr> rrExample1example1example2 preferred)r1rJrrregister)rrrexpected_tryorderexpected_browsersinstances r_check_registration+BrowserRegistrationTest._check_registration=s(   --/@A --/@AJ7'L)7(>*% --/@A --/@A!#     N*3 5    N E !+Z 8 !+Z 8 )7(B*% --/@A --/@Arc"URSS9 g)NFrrrs r test_register%BrowserRegistrationTest.test_register[s   5 1rc"URSS9 g)Nrr rs rtest_register_default-BrowserRegistrationTest.test_register_default^   4 0rc"URSS9 g)NTrr rs rtest_register_preferred/BrowserRegistrationTest.test_register_preferredarrdarwinzmacOS specific testc[R"S5n[R"5 SSS5 WR 5 g!,(df  N=f)Nzsubprocess.check_output)r r+rJregister_standard_browsersassert_not_called)rck_os rtest_no_xdg_settings_on_macOS5BrowserRegistrationTest.test_no_xdg_settings_on_macOSds; ZZ1 2d  1 1 33  3 2s A A)rrN)rrr r!rrrr rrr skipUnlesssysplatformrr"rrrrr0sM"4B<21113HI!J!rrc\rSrSrSrSr\R"S\R;S5S5r \R"\ S5S5r \R"\ S5S 5r S rg ) ImportTestioc[R"S5nURUR5 UR UR 5 "SS5nUR "SU5 URUR5 URURSS5 URUR 5 URSUR 5 URUR SUS/5 g)NrJc\rSrSrSrg)0ImportTest.test_register..ExampleBrowseriurNrrrrrr#urrrrr) rimport_fresh_module assertIsNoner assertFalserr assertTruer1r3)rrJrs rr ImportTest.test_registerps"66|D  *../ --.  J7  ,,- --b1:>  ,,- j*"6"67 --j9ND;QRrc`[R"S5nURUR5 UR UR 5 UR UR5 UR"S5 SSS5 URUR5 g!,(df  N*=f)NrJ fakebrowser) rr%r&rr'r assertRaisesrpgetassertIsNotNone)rrJs rtest_getImportTest.test_get~s|"66|D  *../ --.   z// 0 NN= )1 Z1121 0s (B B- z)test assumes no space in path (GH-114452)c.[R"S5n[RR [ R 5R5nUR"USUR"U55 UR"[ R 5 g)NrJ) rr%ospathbasenamer executablelowerrrKr-)rrJr*s rtest_synthesizeImportTest.test_synthesizes`"66|D ww/557D$ (A(A$(GHs~~&rz=Apple mobile doesn't allow modifying browser with environmentc[R"S5nUR"5Rn[R"5nWUS'[R"S5nUR"5 SSS5 g!URa$nUR [ U55 SnANzSnAff=f!,(df  g=f)NrJBROWSER) rr%r-r*rpskipTestrrEnvironmentVarGuard)rrJr9errenvs rtest_environmentImportTest.test_environments #66|D  $ nn&++G * * ,$C N&::<HJ NN - , $ MM#c( # # $ , ,s#A>-B5>B2B--B25 Cc.[R"S5nUR"5 UR"URS5Rn[R"5nWUS'[R"S5nURUR"5RU5 SSS5 [R"5n[RUS'[R"S5nURUR"5R[R5 SSS5 g!UR [ 4a%nUR[U55 SnAGNSnAff=f!,(df  N=f!,(df  g=f)NrJr$r;)rr%r-rr*rp IndexErrorr<rrr=r1rr6)rrJleast_preferred_browserr>r?s rtest_environment_preferred%ImportTest.test_environment_preferreds' #66|D  $ NN &0nnZ5I5I"5M&N&S&S # * * ,4C N&::<HJ   Z^^-224K L-  * * , ^^C N&::<HJ   Z^^-22CNN C- ,  *- $ MM#c( # # $- , - ,s1:D7'AE5 A#F7E2 E--E25 F FrN)rrr r!r r/rrrr6r8rr@rEr"rrrr r os S3__SCNN*,WX'Y' __G   __GD Drr c&\rSrSrSrSrSrSrg)CliTesticSHhupn[R"[R"U55nUR UR U5 UR UR U5 Mj g)N )https://example.comrKr)zhttps://example.com -nrK)z-n https://example.comrKrL)zhttps://example.com -trK)z-t https://example.comrKrM)z https://example.com --new-windowrKrL)z --new-window https://example.comrKrL)zhttps://example.com --new-tabrKrM)z--new-tab https://example.comrKrM)rJ parse_argsshlexsplitr1urlnew_win)rcommandrQrRr&s rtest_parse_argsCliTest.test_parse_argssV & !G'((W)=>D   TXXs +   T\\7 3# & rcSHn[R"5nUR[5 [R "[ R"U55 SSS5 URSUR55 SSS5 M [R"5nUR[5 [R "[ R"S55 SSS5 URSUR55 SSS5 g!,(df  N=f!,(df  GM5=f!,(df  N[=f!,(df  g=f)N)zhttps://example.com -n -tz*https://example.com --new-window --new-tabz https://example.com -n --new-tabz#https://example.com --new-window -tzGerror: argument -t/--new-tab: not allowed with argument -n/--new-windowzhttps://example.com --newzBerror: ambiguous option: --new could match --new-window, --new-tab) rcaptured_stderrr, SystemExitrJrNrOrPr3getvalue)rrSstderrs rtest_parse_args_errorCliTest.test_parse_args_errors G((*f&&z2))%++g*>?3 ]OO%+*  $ $ &&"":.%%ekk2M&NO/ MMT! ' &32+*/.' &sFD(+D(D(%E ;+D;&(E  D% !D(( D8 ; E E  EcPSH}upn[R"SSS9n[R"SSS9 [R"[R "U55 UR X#5 SSS5 SSS5 M g!,(df  N=f!,(df  M=f)NrJzwebbrowser.open) return_valuezbuiltins.print)r r+rJmainrOrPassert_called_once_with)rrS expected_urlexpected_new_win mock_opens r test_mainCliTest.test_mains| 8 3G#3 ,4@I +$? G 4511,Q@A@ 8 @?A@s"Br. MagicMockr r$TestCaser@rMrSrwrrrrrrrrr rHrr_rrrrks  &(",)++48 0004$ 0(2C2C$$#3X5F5F$)((*;*;)D$&(9(9$20)8+<+<02$*H,=,=$2$'):):$2:((*;*;:0 S\\U*,IJ?#X&&?#K?#D<!h//<!~BD""BDJBRhBRJ z MMOr