
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕ рдиреЛрдЯ рдХрд╛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдПрдХ рд╡рд╛рдХреНрдп рдореЗрдВ рдлрд┐рдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: "рдЪреВрдВрдХрд┐ рдЖрдк рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╕рднреА рд╕рдВрднрд╡ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ рдЪрд▓рд╛рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдФрд░ рдПрдХ рдПрдХрд▓ рдкрд░ рдирд╣реАрдВред" рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╣рдм рдкрд░ рдПрдХрд▓-рдкрдВрдХреНрддрд┐ рд▓реЗрдЦреЛрдВ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдореЗрдВ рд╢рдмреНрджреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рдШреБрдЧрдгрдХ рдХреЗ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЖрддреНрдорд╕рд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореИрдВ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкреНрд░рдХрдЯ рдХрд░реВрдВрдЧрд╛ред
рдкрд░рд┐рдЪрдп
рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХреАрдбрд╝реЗ рдкрд╕рдВрдж рд╣реИрдВ? рдореИрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдорд╛рдирддрд╛ рд╣реВрдВ: рд╡рд╕рд╛ рдХреЗ рд░рд╕рджрд╛рд░ рдШрд╛рддрдХ рдХреАрдбрд╝реЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдирдВрдж рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдпрд╛рдж рдирд╣реАрдВ рдХрд░рдирд╛ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдПрдХ рд░рд┐рд▓реАрдЬ рдЬрд╛рд░реА рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕реЗ рдЫреЛрдЯреЗ рдХреАрдбрд╝реЗ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдирдЧреНрди рдЖрдВрдЦреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреЛ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЦреБрдж рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓
рдУрдПрд╕ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдкрд░, рдпрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрдм рдХрдВрдкрд╛рдЗрд▓рд░ рдЕрдиреБрдХреВрд▓рди рдЪрд╛рд▓реВ рд╣реЛрддрд╛ рд╣реИред рдпреЗ рдЫреЛрдЯреЗ рдмрджрдорд╛рд╢, рдмрд┐рдирд╛ рдкрдХрдбрд╝реЗ, рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЦреВрди рдкреАрдиреЗ рдФрд░ рд░рд╛рдд рдореЗрдВ рдиреАрдВрдж рдЦрд░рд╛рдм рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА рд░реВрдк рд╕реЗ, рдХрдо рдЕрдХреНрд╕рд░ рдПрдХ рдмрдЧ рд╕реНрд╡рдпрдВ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЕрдзрд┐рдХ рдмрд▓ рдХрднреА-рдХрднреА рдЗрд╕рдХреЗ рдХрдмреНрдЬреЗ рдФрд░ рдЙрдиреНрдореВрд▓рди рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдореЗрд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рддреЛ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдУрдПрд╕ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ, рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рд╕рдВрдХрд▓рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЗ рдкреВрд░реЗ рд╕реЗрдЯ рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рдВрднрд╡рддрдГ рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддреАрдд рд╣реЛрдЧрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, GitHub рдкрд░ рджрд░реНрдЬрдиреЛрдВ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЗ рддреНрд╡рд░рд┐рдд рдирд┐рд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрдорд┐рдЯ (
рдЯреНрд░реИрд╡рд┐рд╕-рд╕реАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рд░рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЕрднреА рднреА рдХреЗрд╡рд▓ iOS рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрдХрд╛рдЗрдпрд╛рдБ OS X рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реАрдорд┐рдд рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, Xcode 5 рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдХрдВрдЯреАрдиреНрдпреВрдЕрд╕ рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди рдореЙрдбреНрдпреВрд▓ рдЖрдкрдХреЛ рдХрдИ рд╕рд┐рдореБрд▓реЗрдЯрд░реЛрдВ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЪреАрд▓рд╛рдкрди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдХрдИ рдЗрд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рдереЗред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдорд╛рдиреЗрдВрдЧреЗ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рд▓рд┐рдЦрд╛ рд╣реИред
xcodebuild
рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рд╣рдо
xcodebuild рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ
Xcode рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИред рдкрд╣рд▓реЗ, рдлреЗрд╕рдмреБрдХ рд╕реЗ рд╕рдмрд╕реЗ рдкрд╕рдВрджреАрджрд╛
xctool , рдХреНрдпреЛрдВрдХрд┐ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ,
xcodebuild рддрдВрдмреВрд░рд╛ рдФрд░ рдиреГрддреНрдп рдХреЗ рдмрд┐рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реБрдЖ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд,
xctool рдЕрдзрд┐рдХ рд╕реБрдЦрдж рдирд┐рд╖реНрдХрд░реНрд╖ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, Xcode 5 рдХреА рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде, рд╕реНрдерд┐рддрд┐ рдореВрд▓
xcodebuild рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдмрджрд▓ рдЧрдИ:
рдЯреИрдореНрдмреЙрд░реАрди рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реЛ рдЧрдИ, рдФрд░
xctool рдЗрд╕ рд╕рдордп
рдЖрдкрдХреЛ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдХреЗ рдкреНрд░рдХрд╛рд░
рдХреЛ рд╕реЗрдЯ
рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ , рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрд╖рдг рд╣реИред
рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкрд░реАрдХреНрд╖рдг рдХрдорд╛рдВрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
xcodebuild test -project {project}.xcodeproj -scheme {scheme} -sdk iphonesimulator -destination OS=6.0,name=iPhone -configuration Release
рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд╣реИ: рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ (рдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░), рдпреЛрдЬрдирд╛, рдПрд╕рдбреАрдХреЗ, рдУрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг, рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдирд╛рдо рдФрд░ рдбреАрдмрдЧ / рд░рд┐рд▓реАрдЬрд╝ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВред
рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде, рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдиреНрдпрд╛рд╕реЛрдВ рдХрд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 5.0 рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд▓рдХреНрд╖реНрдп рд╣реИ, рдФрд░ рд╣рдо iOS рдФрд░ OS X рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ):
for configuration in Release Debug do for device in "iPhone" "iPad" do for iosversion in 6.0 6.1 5.0 5.1 do test_ios iOSTests "$iosversion" "$device" "$configuration" done done for device in "iPhone Retina (3.5-inch)" "iPhone Retina (4-inch)" "iPad Retina" do for iosversion in 6.0 6.1 7.0 do test_ios iOSTests "$iosversion" "$device" "$configuration" done done for device in "iPhone Retina (4-inch 64-bit)" "iPad Retina (64-bit)" do test_ios iOSTests-64bit 7.0 "$device" "$configuration" done test_osx OSXTests "$configuration" done
(test_ios рдФрд░ test_osx - рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкреВрд░рд╛ рд╕рдВрд╕реНрдХрд░рдг GitHol рдкрд░ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ)рдпрд╣ рд╣рдореЗрдВ 40 рд╕рдВрднрд╡ рд╡рд┐рдиреНрдпрд╛рд╕ рджреЗрдЧрд╛, рдЬреЛ рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреЗрдорд╛рдиреА рд▓рдЧрддрд╛ рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдиреБрдХреВрд▓рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдпрд╛ рдпреВрдЖрдИ рдкрд░ рддрд░реНрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдмрд╣реБрдд рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдФрд░ рдЕрдЧрд░ рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдХреЛ OS X Mavericks рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ, рддреЛ рдЖрдк рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ рдХрд┐ iOS 5 рд╕рд┐рдореБрд▓реЗрдЯрд░ рдиреЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдХреБрд▓, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдиреНрдпрд╛рд╕реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗ:
рддрд░реНрдХ рдкрд░реАрдХреНрд╖рдг | iOS 6.0 | iOS 6.1 | iOS 7.0 | iOS 7.0 64-рдмрд┐рдЯ | рдУрдПрд╕ рдПрдХреНрд╕ |
рд░рд┐рд╣рд╛рдИ | тЬУ | тЬУ | тЬУ | тЬУ | тЬУ |
рдбрд┐рдмрдЧ | тЬУ | тЬУ | тЬУ | тЬУ | тЬУ |
рдпреВрдЖрдИ рдЯреЗрд╕реНрдЯ | iPhone | рдЖрдИрдкреИрдб | iPhone рд░реЗрдЯрд┐рдирд╛ (3.5 рдЗрдВрдЪ) | iPhone рд░реЗрдЯрд┐рдирд╛ (4 рдЗрдВрдЪ) | рдЖрдИрдкреИрдб рд░реЗрдЯрд┐рдирд╛ |
iOS 6.0 | тЬУ | тЬУ | тЬУ | тЬУ | тЬУ |
iOS 7.0 | | тЬУ | тЬУ | тЬУ | тЬУ |
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдЧрд╛, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИред
рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЧрд┐рдирдиреЗ рдФрд░ рдкрд╣рд▓реА рд╡рд┐рдлрд▓рддрд╛ рдкрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдВрдзрди рдЬреЛрдбрд╝рдирд╛, рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг:
test-main-configurations.sh
рд╕реНрд╡рд░реВрдкрдг рдЙрддреНрдкрд╛рджрди function red() { eval "$1=\"$(tput setaf 1)$2$(tput sgr 0)\"" } function green() { eval "$1=\"$(tput setaf 2)$2$(tput sgr 0)\"" } function yellow() { eval "$1=\"$(tput setaf 3)$2$(tput sgr 0)\"" } function bold() { eval "$1=\"$(tput bold)$2$(tput sgr 0)\"" } function echo_fmt() { local str=$1 local color=$2 local bold=$3 if [ "$color" != '' ]; then $color str "$str" fi if [ "$bold" != '' ]; then $bold str "$str" fi echo $str }
рдкрд░реАрдХреНрд╖рдг succeeded_count=0 function test() { local options="$@" echo_fmt "xcodebuild test -project $project $options" yellow xcodebuild test -project $project "$@" local exitcode=$? if [[ $exitcode != 0 ]] ; then echo_fmt "xcodebuild exited with code $exitcode" red echo_fmt "=== TESTS FAILED ===" red bold exit 1 else ((succeeded_count++)) fi } function test_ios() { local scheme=$1 local iosversion=$2 local device="$3" local configuration=$4 shift 4 echo_fmt "=== TEST SCHEME $scheme IOS $iosversion DEVICE $device CONFIGURATION $configuration ===" yellow bold test -scheme "$scheme" \ -sdk iphonesimulator \ -destination OS="$iosversion",name="$device" \ -configuration "$configuration" \ "$@" } function test_osx() { local scheme=$1 local configuration=$2 shift 2 echo_fmt "=== TEST SCHEME $scheme OSX CONFIGURATION $configuration ===" yellow bold test -scheme "$scheme" -configuration "$configuration" "$@" }
рдХреМрди рд╕рд╛ рд▓реЙрдиреНрдЪ:
./Script/test-main-configurations.sh
рд╣рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╛рд░рд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рджреЗрдЧрд╛:
=== 19 рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ ===
рдпрд╛ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢:
=== TESTS рдлреЗрд▓ ===
XCode
рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдПрдХ рдЕрд▓рдЧ рд▓рдХреНрд╖реНрдп рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рдЪрд▓рд╛рдПрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Xcode рдореЗрдВ,
рд▓рдХреНрд╖реНрдп рдЬреЛрдбрд╝реЗрдВ ... ->
рдЕрдиреНрдп -> рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд░реЗрдВ, рдлрд┐рд░
рд╕рдВрдкрд╛рджрдХ ->
рдмрд┐рд▓реНрдб рдЪрд░рдг рдЬреЛрдбрд╝реЗрдВ ->
рд░рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд┐рд▓реНрдб рдЪрд░рдг рдЬреЛрдбрд╝реЗрдВ, рдФрд░ рдирд┐рдореНрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝реЗрдВ:
cd ${SRCROOT}/..

рдЕрдм, рдпрджрд┐ рдЗрд╕ рд▓рдХреНрд╖реНрдп (if +
B ) рдХреА рдЕрд╕реЗрдВрдмрд▓реА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИ, рддреЛ рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╛рд░рд┐рдд рд╣реЛ рдЧрдП рд╣реИрдВ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ
Scripts / test-main-configurations.log рд▓реЙрдЧ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИред
рдмреЗрд╢рдХ, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЗрдЪреНрдЫрд╛рд╢рдХреНрддрд┐ рдирд╣реАрдВ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдирдИ рд░рд┐рд▓реАрдЬ рдЬрд╛рд░реА рдХрд░рддреЗ рд╕рдордп рдЗрд╕реЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рдХрджрдо рдмрдирд╛рдирд╛ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд░рд┐рд▓реАрдЬ
рдбреАрд╡реАрд╕реАрдПрд╕ рд╢рд╛рдЦрд╛ рдореЗрдВ рдПрдХ рд╕рдорд╛рди
рдмрд┐рд▓реНрдб рдЪрд░рдг рдЬреЛрдбрд╝рдХрд░ред
рдЯреНрд░реИрд╡рд┐рд╕-рд╕реАрдЖрдИ
рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рд╣реИ рдЬрдм рдкрд░реАрдХреНрд╖рдг рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ
рдЯреНрд░реИрд╡рд┐рд╕-рд╕реАрдЖрдИ рдПрдХреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рд╕реНрдерд╛рдкрд┐рдд рдХреА рд╣реИ, рдЬреЛ рдЧрд┐рдЯрд╣рдм рдкрд░ рд╣рд░
рдзрдХреНрдХрд╛ рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдЧреАред рдореИрдВрдиреЗ рдмрд╣реБрдд рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ
рд╕реЗ рд╣реА
рдПрдХ рд╕рдВрдмрдВрдзрд┐рдд рд▓реЗрдЦ рдерд╛ , рдореИрдВ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ред
рд╣рдореЗрдВ рдХреЗрд╡рд▓ .travis.yml
рдлрд╝рд╛рдЗрд▓ рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд░реВрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реИ, рдЬреЛ рдпрд╣ рд╕рдВрдХреЗрдд рджреЗрдЧрд╛ рдХрд┐ рд╣рдореЗрдВ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
language: objective-c script: Script/test-main-configurations.sh
рдЦреИрд░, рдЯреНрд░реИрд╡рд┐рд╕-рд╕реАрдЖрдИ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд▓рд┐рдП рдЪреЗрдХрдорд╛рд░реНрдХ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рд╕рдм рд╣реИред рдЕрдм рдХрдорд┐рдЯ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЯреНрд░реИрд╡рд┐рд╕ рдХреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╣реЛрдВрдЧреЗ:


рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рди рднреВрд▓реЗрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрдХрд┐рдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ, рдЕрд░реНрдерд╛рддред
рд╕рд╛рдЭрд╛ рдЪреЗрдХрдмреЙрдХреНрд╕ рдЙрдирдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИ:

рд╡реИрд╕реЗ, рдЯреНрд░реИрд╡рд┐рд╕ OS X 10.8.5 рдкрд░ Xcode 5.0.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ iOS 5.0 рдФрд░ iOS 5.1 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИред
рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдгред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА iOS 5 рдкрд░ рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ, рддреЛ рдЖрдк рдХрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ
рд╕рдорд╛рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдХрд░ рдЙрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рддрд╛рд░реНрдХрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдХреЗрд╡рд▓ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ, рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХреЗрд╡рд▓ рдЖрд╡реЗрджрди рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдПрдХ рдЦрд╛рд▓реА рдХрдВрдЯреЗрдирд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП
xcodebuild рдХрдорд╛рдВрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
xcodebuild test -project XCode/TravisCI.xcodeproj -scheme iOSDeviceLogicTests -sdk iphoneos -destination name='iPad Yan' -configuration Release
рдпрджрд┐ рдХреБрдЫ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╕реНрдкреЙрдЗрд▓рд░ рджреЗрдЦреЗрдВ рд╡рд╣ рд╕рдм рд╣реИред рдПрдХ рдЕрдЪреНрдЫрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ!
рд╕рдВрджрд░реНрдн