fix(core): empty external deps should work properly (#28727)
This commit is contained in:
parent
ee7b001ec9
commit
a5920e3845
@ -163,9 +163,11 @@ impl HashPlanner {
|
|||||||
))
|
))
|
||||||
} else {
|
} else {
|
||||||
let mut external_deps: Vec<&'a String> = vec![];
|
let mut external_deps: Vec<&'a String> = vec![];
|
||||||
|
let mut has_external_deps = false;
|
||||||
for input in self_inputs {
|
for input in self_inputs {
|
||||||
match input {
|
match input {
|
||||||
Input::ExternalDependency(deps) => {
|
Input::ExternalDependency(deps) => {
|
||||||
|
has_external_deps = true;
|
||||||
for dep in deps.iter() {
|
for dep in deps.iter() {
|
||||||
let external_node_name =
|
let external_node_name =
|
||||||
find_external_dependency_node_name(dep, &self.project_graph);
|
find_external_dependency_node_name(dep, &self.project_graph);
|
||||||
@ -203,8 +205,10 @@ impl HashPlanner {
|
|||||||
.map(|s| HashInstruction::External(s.to_string()))
|
.map(|s| HashInstruction::External(s.to_string()))
|
||||||
.collect(),
|
.collect(),
|
||||||
))
|
))
|
||||||
} else {
|
} else if !has_external_deps {
|
||||||
Ok(Some(vec![HashInstruction::AllExternalDependencies]))
|
Ok(Some(vec![HashInstruction::AllExternalDependencies]))
|
||||||
|
} else {
|
||||||
|
Ok(None)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -492,6 +492,56 @@ describe('task planner', () => {
|
|||||||
expect(plans).toMatchSnapshot();
|
expect(plans).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should build plans where a project specifies no external dependencies', async () => {
|
||||||
|
let projectFileMap = {
|
||||||
|
proj: [{ file: '/file.ts', hash: 'file.hash' }],
|
||||||
|
};
|
||||||
|
let builder = new ProjectGraphBuilder(undefined, projectFileMap);
|
||||||
|
builder.addNode({
|
||||||
|
name: 'proj',
|
||||||
|
type: 'lib',
|
||||||
|
data: {
|
||||||
|
root: 'libs/proj',
|
||||||
|
targets: {
|
||||||
|
build: {
|
||||||
|
executor: 'nx:run-commands',
|
||||||
|
inputs: [
|
||||||
|
{
|
||||||
|
externalDependencies: [],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
builder.addNode({
|
||||||
|
name: 'child',
|
||||||
|
type: 'lib',
|
||||||
|
data: {
|
||||||
|
root: 'libs/child',
|
||||||
|
targets: { build: { executor: 'nx:run-commands' } },
|
||||||
|
},
|
||||||
|
});
|
||||||
|
let projectGraph = builder.getUpdatedProjectGraph();
|
||||||
|
let taskGraph = createTaskGraph(
|
||||||
|
projectGraph,
|
||||||
|
{},
|
||||||
|
['proj'],
|
||||||
|
['build'],
|
||||||
|
undefined,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
let nxJson = {} as any;
|
||||||
|
const planner = new HashPlanner(
|
||||||
|
nxJson,
|
||||||
|
transferProjectGraph(transformProjectGraphForRust(projectGraph))
|
||||||
|
);
|
||||||
|
const taskIds = Object.keys(taskGraph.tasks);
|
||||||
|
|
||||||
|
const plans = planner.getPlans(taskIds, taskGraph);
|
||||||
|
expect(plans['proj:build']).not.toContain('AllExternalDependencies');
|
||||||
|
});
|
||||||
|
|
||||||
it('should include npm projects', async () => {
|
it('should include npm projects', async () => {
|
||||||
let projectFileMap = {
|
let projectFileMap = {
|
||||||
app: [{ file: '/filea.ts', hash: 'a.hash' }],
|
app: [{ file: '/filea.ts', hash: 'a.hash' }],
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user