Premièrement : je ne peux pas reproduire votre problème sur OS X El Capitan 10.11 (15A284). Votre script dit "1", "2", "3" à chaque fois que je l'exécute.
L'ordre exact des messages "run" et "idle" n'ayant jamais été garanti, il est possible que les deux ordres ({1, 2, 3} et {3, 1, 2}) soient considérés comme corrects.
Cependant, si l'ordre des messages d'exécution et de repos est important pour votre script, vous pouvez utiliser une propriété script pour permettre au gestionnaire de repos de savoir quand le gestionnaire d'exécution s'est déjà exécuté et de ne rien faire tant qu'il ne s'est pas exécuté, par exemple,
property didRun : false
on run
say "1"
testing()
set didRun to true
end run
on testing()
say "2"
end testing
on idle
if not didRun then
say "has not run"
return 1
end if
say "3"
return 3
end idle
on quit
set didRun to false
say "quit"
continue quit
end quit
Notez que la réinitialisation des didRun
dans le quit
est nécessaire car les valeurs des propriétés persistent normalement d'une exécution à l'autre (en étant réécrites dans le fichier script après l'exécution).