ResolveSource

Enum ResolveSource 

Source
pub enum ResolveSource {
    Path,
    EnvVar,
    PathLookup,
    SiblingDir,
    TargetDebug,
    TargetRelease,
    AutoBuilt,
    NotFound,
}
Expand description

Provenance of a scheduler binary returned by resolve_scheduler.

Each variant identifies the discovery branch that produced the path, so downstream tooling (sidecar, cache-key construction, log lines) can distinguish “we found a pre-built binary in a target directory whose git hash we don’t control” from “we just built this binary from HEAD in the current workspace and therefore know its source commit is the workspace HEAD.”

Only the AutoBuilt variant carries an honest source-commit guarantee: every other branch locates an existing file whose provenance is outside this process’s knowledge. Callers that need to stamp a sidecar with a scheduler-specific commit must discard the hash for every non-AutoBuilt resolution — a stale target/debug/ binary looks identical to a fresh AutoBuilt one but can be arbitrarily old.

Eevdf / KernelBuiltin / Path resolutions do not go through the discovery cascade:

  • Eevdf / KernelBuiltinNotFound (no user-space binary involved; the tuple’s Option<PathBuf> is None).
  • Path(p)Path (the caller named the binary explicitly in the test entry — no env-var or filesystem search runs).

The variant ordering in the enum mirrors the discovery cascade order in resolve_scheduler so a reviewer can scan both lists in lockstep.

Variants§

§

Path

Resolved via the literal path the caller supplied as SchedulerSpec::Path(p). No env-var or filesystem search involved — the path arrived in the test entry directly. Trusted to the extent the caller trusts the argument; git- hash provenance is UNKNOWN to this process.

§

EnvVar

Resolved via the KTSTR_SCHEDULER environment variable on the SchedulerSpec::Discover arm. Trusted to the extent the caller trusts the variable; git-hash provenance is UNKNOWN to this process.

§

PathLookup

Resolved via a $PATH lookup. Only produced when KTSTR_CARGO_TEST_MODE is active and a binary by the requested name was found on the user’s $PATH in front of the sibling-dir / target-dir cascade. Git-hash provenance UNKNOWN — the binary on PATH may be a system-wide install, a prior build, or a custom one the user staged for this run.

§

SiblingDir

Resolved via a sibling of crate::resolve_current_exe (same directory, or the sibling of a deps/ directory for integration tests / nextest). Git-hash provenance UNKNOWN — the binary may be from any previous build.

§

TargetDebug

Resolved via a fallback search in target/debug/. Git-hash provenance UNKNOWN — a stale binary from an older tree passes this check identically to a fresh one.

§

TargetRelease

Resolved via a fallback search in target/release/. Git-hash provenance UNKNOWN — same stale-binary hazard as TargetDebug.

§

AutoBuilt

Built on demand by crate::build_and_find_binary inside this process. The build targets the current workspace’s HEAD by construction — the ONLY variant where the source commit is known to match the workspace tree the tests run from.

§

NotFound

No user-space binary path was produced. Returned for SchedulerSpec::Eevdf and SchedulerSpec::KernelBuiltin (the kernel supplies the scheduler — no binary to locate). The tuple’s Option<PathBuf> is always None for this variant.

Implementations§

Source§

impl ResolveSource

Source

pub const fn as_str(&self) -> &'static str

Stable snake_case tag for the sidecar resolve_source field and the stats --resolve-source filter — the string analog of the variant, mirroring the run_source tag convention so the persisted JSON shape does not depend on this enum’s Rust representation. Variant order matches the discovery cascade.

Trait Implementations§

Source§

impl Clone for ResolveSource

Source§

fn clone(&self) -> ResolveSource

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ResolveSource

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for ResolveSource

Source§

fn eq(&self, other: &ResolveSource) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for ResolveSource

Source§

impl Eq for ResolveSource

Source§

impl StructuralPartialEq for ResolveSource

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> MaybeSend for T
where T: Send,

§

impl<T> MaybeSend for T
where T: Send,