Conditional single.php statement not recognizing conditionals

My first suspicion that something is amiss is this:

$post = $wp_query->post;

You shouldn’t need to do this. Anywhere that the query conditionals are already setup, the conditionals will assume the current Post ID. So, that suggests a couple things:

  1. The specified categories don’t actually exist. I will assume this not to be true, since you indicate that you use this same code successfully elsewhere in the Theme.
  2. You’re calling this code somewhere that the current query/post isn’t actually set. For example, you might be calling this code in the context of an archive index page, or a search page, etc. outside the Loop. The odd thing here is that your title indicates that you’re calling this code in single.php.

Can you do two things:

  1. Post your entire single.php code, so we can see the conditional code in context?
  2. Try replacing $post = $wp_query->post; with global $post;

Edit

What’s posted above is the entire single.php

What’s being returned by the $post object? What do you get on a var_dump( $post ); after you globalize it?

Also, probably not related to your problem (the query is set at wp, so query conditionals should be available at template_redirect, which is where single.php gets loaded), but I would suggest putting your get_header(), get_sidebar(), and get_footer() calls in single.php, and trim single-auto.php, etc. down to their actual content.